这是我参与更文应战的第9天,活动概略查看: 更文应战

六 POD 装备清单

6.1 pods.metadata POD元数据

6.1.1 labels 标签

  • labels 界说标签,键值对组成的标签
  labels:
app: myapp
tier: frontend

6.2 pods.spec 规范

6.2.1 nodeName 作业节点

  • 在运用资源清单界说 pod 时分,运用 nodeNagitime 能够直接绑定资源政策在哪个 POD 作业的节点
apiVersion:http 404 v1
kind: Pod
metadata:
name: pod-deme
na数组排序mespace: default
labelhttp协议s:
app: myGitapp
tier: frontend
spec:
nodeName: node2                           # 直接指定 POD 作业的节点
containers:
- name: myapp
image: ikub数组指针ernetes/myapp:v1
imagePullPolgitiicy: IfNohttp://192.168.1.1登录tPresent

6.2.2 nodeSelector 节点选择

  • 在运用资github永久回家地址源清单界说 pod 时分,运用 nodeSelector (节点标签选择器)字段,来界说节点的倾向性
apiVersion: v1
kind: Pod
metadatgithub是干什么的a:
name: pod-deme
names数组词pace: default
labels:
app: myapp
tier: frontend
spec:
nodeSelector:                            # 在 spec 中界说这个 POD 的节点倾向性
disktype: ssgitid                         # 这个 POD 最终会作业在具有 disktype 标签且值为 ssd 的 nodes 上github是干什么的
containers:
- name: myapp
image: ikubernetes/myapp:v1
imagePullPolicy:变量泵 IfGitNotPresent
ports:
  • 从文件建议 pod,观察 pod 作业的节点,会发现现已作业在有标签的 node 节点上了
kubectl create -f pod-demo.yaml
kubectl get pods -o wide
NAME       READY   STATUS    RESTARTS   AGE   Igit教程P            NODE    NOMINAgithub是干什么的TEDgithub官网 NODE   READINESS GATES
pod-demo   1/1     Running   0          21s   10.244.2.29   node3   <none>变量英文           <none>

6.2.3 restartPolicy POD重启战略

Always:一旦容器挂了,http://www.baidu.com那么总是重启它,k8s 每次重启战略为 30 秒的两倍,直到等候 300 秒重启。

OnFailure:只要其状况为差错的时分才去重启它

Never:从来不重启,挂了就挂了

一旦某个github永久回家地址 POD 被调度到某个节点上,只需这个节点在,那么它就不会被从头调度,只能被重启,除非 POD 被删去才会被从头调度,或许 node 挂了,才会被从头调度,不然只需 node 在,那么 POD 就不会被从头调度,假定 POD 建议失利,那么将不断的重启变量的界说 POD。
当需求间断 POD ,k8s 发送 khttp 404ill -15 信号,让容器滑润的间断,等候 30 秒的宽数组去重期限,假定没有间断,那么则发送 kill 信号

6.2.4 hostNetwork 主机网络空间

运用布尔值指定是否让 POD 运用主机的网络称谓空间

6.2.5数组c言语 hostP数组长度ID 主机PID空间

运用布尔值指定是否让 POD 运用主机的PID称谓空间

6.2.6 containers 装备

kubectl explain pods.spec变量名.containers

描绘github打不开 POD 内所作业容器,语法:containergithub永久回家地址s <[]Obje变量泵ct>,标明它的值为数组,数组内运用政策的办法来描绘一个容器,政策能够有以下参数:

  • 可用参数
参数 作用
args
command
env 向容器传递环境变量
envFrom
image
imagePullPolicy
lifecyclgithub打不开e
livenessProbe
name
ports
readinessProbe
resources
securityContext
stdin
stdi数组nOnce
terminationMessagePath
terminationMessagePolicy
ttyhttp://www.baidu.com
volumeDevices
volumeMounts
workingDir
  • 示例型装备
apiVersion: v1
kind: Pod
metadata数组排序:
name: pod-deme                     # pod 的称谓
namespace: default
labels:
app: myapp
tier: frohttp://www.baidu.comntend
specgitlab:
containers:
- nhttp 404ahttpclientme: myapp                      # 作业的容器称谓
image: ikubernetes/myapp:v1      # 容器的镜像
im数组和链表的差异agePullPolicy: IfNotPresent    # 从仓库获取镜像的战略
ports:                           # 界说容器暴漏的端口
- name: bus数组的界说ybox
image: busybox:latest
command:
- "/bin/sh"
- "-chttp协议"http 302
- "sgithub直播渠道永久回家leep 10"

6.2.6.1 imagePullPolicy下载数组和链表的差异战略

  • imagePullPolicy 镜像获取的战略,详见:kubectl explain pods.spec.containers
Alwgithub打不开ays            # 总是从仓库下载
Never             # 从不下载,本地有就用,没有就失利
IfNotPresent      # 假定本地存在就直接运用,假定不存在就下载

假定标签是 latest 那么则一直从仓库下载

6.2.6.2 ports 端口信息

  • ports 界说容器保显露的,详见:kuhttpclientbectl explain pods.spec.container变量值s.ports

在此处显露的端口可为http 404系统供给有关容器的网络连接的信息,但首要数组初始化是信息性的,此处没有指定的端口也不会阻遏容器显露该端口,容器中任何侦听 0.0.0.0 地址的端变量类型有哪些口都能够从网络访问

    ports:                    #数组 界说两个端口政策一个 http 一个 https
- name: htgithub中文官网网页tp              # 界说这个端口的称谓,便利其github敞开私库他政策取引证
containerPohttp署理rt: 80       # 端口号
- name: https             # 便利数组的界说引证的称谓
containerPort: 443      # 这个端口号仅仅是起到信息的作用,便利查看和运变量是什么意思用称谓引证

6.2.http://www.baidu.com6.3 env 传递环境变量

  • Use Pod fields
      env:
- name: MY_NODE_NAME
valueFrom:http://192.168.1.1登录
fieldgithub永久回家地址Ref:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valu数组去重egithub中文社区From:
fieldRef:
fieldPath: metadata.name
- nam变量e: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fi数组去重eldPath: metadata.namhttp://192.168.1.1登录espace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_PgiteeOD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
  • Use Container fields
      env:
- name: MY_CPU_REQUEST
valueFrom:
resourceFieldRef:
containerName: test-container
resource: requests.cpu
- name: MY_CPU_LIMIT
valueFrom:
resourceFieldRef:
containerNgithub是干什么的ame: test-container
resource: limitsgithub中文社区.cpu
- name: MY_MEM_REQUEST
vagithublueFrom:
resourcegit指令FieldRef:
co变量泵ntainerName数组公式: test-container
resource: requests.memory
- name: MY_MEM_LIMIT
valueFrom:
resourchttp 404eFieldRef:
containerN变量名ame: test-container
resource: limits.memory
在容器中获取 POD 的信息
能够运用环境变量
能够运用 downwardAPI
httpgithub中文社区s://kubernetes.io/zh/docs/变量是什么意思tasks/inject-data-application/downward-api-volume-expose变量值-pod-information/

6.2.6.4 command ENTRYPOINT

  • command 界说容器作业的程序,详见:

kubernetes.io/docs/tasks/…

一个 entrypoint array 而 command 建议的程序是不会作业在 Shell 中gitlab的,假定想要作业在 Shell 中需求自己填写,假定没有供给这个指令,那么将作业 docker 镜像中的 ENTRYPOINT。

Image Entrypoint Image Cmd Container command Container args Command run
[/ep-1] [foo bar] [变量是什么意思ep-1 foo bar]
[/ep-1] [数组排序foo bar] [/ep-2] [ep-2]
[/ep-1] [foo bar] [zoo boo] [ep-1 zoo boo]
[/ep-1] [foo变量名 bar]http署理 [/ep-2] [zoo boo] [ep-2 zoo boo]

6.2.6.5 args CMD

  • args 向 command 传递参数的

假定你没有界说 args 而镜像中又存在 ENTRYPgithub打不开OINT 指令和http://www.baidu.com CMD 指令,那么镜像自己的 CMD 将作为参数传递数组和链表的差异给 ENTRYPOINT。假定手动指定了 args 那么镜像中的 CMD 字段不再作为参数进行传递。

假定在 args 中引证了变量,则需求运用 $(VAR_NAME) 来引证一个变量,假定不想在这里进http署理行指令替换,那么能够 $$(VAR_NAME),转义后变量泵在容器内运用。

env:
- name: MESSAGE
value: "hello kaliarch"
command: ["/bin/github中文官网网页echo"]
args: ["$(MESSAGE)"]

6.2.6github.6 annotations 注解信息

annotations 与 labe变量名的命名规矩l 不同的当地在于变量名,它不能用于选择资源政策,仅为政策供给元数据,它的长度不受束缚

api变量Version: v1
kind: Pod
metadata:
name: pod-deme
namespace: default
labels:
app: myappgithub中文官网网页
tier: frontend
annotations:                                      # 注解关键字gitee
kaliarch/created-by: "xuel"                     # 添加键值对的资源注解
spec:
containers:
- name: myapp
image: ikuberngithub是干什么的etes/myapp:v1
imagePullPolicy: IfNotPresent

6.2.6.7 POD 生命周期

  • 一般状况
Pending:现已创立可是没有适合作业它的节点,现已调度,但github敞开私库是没有结束
Running:作业状况
Faigithub下载led: 建议失github敞开私库利
Succee数组c言语d:成功,这个状况很短
Unkown: 不知道的状况,假定 Apiserver 与 kubelet 通讯失利则会处于这个状况
  • 创立 POD 阶段

用户的创立央求提交给 apiserver ,而 apiserveGitHubr 会将央求的政策状况保存在 etcd 中,然后 apiserver 会央求 schedule 进行变量的界说调度,并且把调度的作用更新在 etcd 的 pod 状况中,随后一旦保存在 etcd 中,并结束 schedule 更新后政策节点的 kubgitielet 就会从 etcd 的状况改动得知有新使命给自己,所github中文社区以此刻会拿到用户所期望的资源清单政策状况,根据清单在当时节点作业这个 POD,假定创立成功或许失利,则将作用发回给 apiserver ,apiserver 再次保存在 etcd 中。

6.2.6.8 livenessProbe 存活性勘探

具体见:kubectl explain pod变量s.spec.containers.livenessProbe

  • livegithub中文社区nessProbe / readinessProbe 是 k8s 两个生命数组初始化周期,这两个生命周期都能够界说探针来勘探容器状况做出不同反应
livenessProbe     # 指示github怎样下载文件容器是否正在作业。假定存活勘探失利,则根据 restartPolicy 战略http://www.baidu.com来进行重启
readinessProbe    # 指示容器是否准备好服务央求。假定安排稳妥勘探失变量名利端点控制器将从与 Pod 匹配的悉数 Service 的端点中删去该 Pohttp 302d 的 IP 地址
  • livenessProbe / readinessProb变量泵e 可用的探针和探针特性,探针只能界说一种类型,例如:HTTPGetAction
exec          # 在容器内实施指定指令。假定github中文社区指令http协议退出时回来码为 0 则以为确诊成功。
tcpSocket     # 对指定端口上的容器数组初始化的 IP 地址进行 TCP 查看。假定端数组去重口翻开,则确诊被以为是成功的。
httpGet       #github永久回家地址 HTTP GET 央求指定端口和途径上的容器。假定响应码大于等于200 且小于 400,则确诊被以为是成功的。
failureThreshold    # 勘探几回才判定为勘探失利github,默以为 3 次。
periodSeconds       # 每github是干什么的次勘探周期的距离时长。
timeoutSeconds      # 每次勘探宣布httpclient后等候作用的超时时间,默以为 1 秒。
initalDelaySecon数组初始化ds  # 在容器建议后推迟多久去进行勘探,默以为发变量名起容器后当即勘探。
  • 运用 e数组词xec 探针,试验作用应该为 39 秒后 POD 显现 ERROR ,但不主动重启 POD
apiVersion: v1
kind: Pod
metadata:
name: execlive
namespace: default
labels:
app: myapp
tier: frontend
spec:
containers:
- name: busybox
imageGit: busybox
command:
- "/bin/sh"
- "-c"
- "touch /tmp/healgithubthy; sleep 30; rm -rf /tmp/health数组指针y; sleep 3600"    # 创立一个文件等候 30 秒,这个时间探针应该是成功的,30 秒后则失利
li变量值venessProbe:                                   # 容器的存活性检测,假定失利则依照 restartPolicy 战略来重启 POD
exec:                                          # exec 类型探针,进入容器实施一条指令
comma变量是什么意思nd: ["test", "-e数组公式" ,"/tmp/healthy"]      # 实施的指令为测验文件存在性
initialDelaySeconds: 2                         # 容器建议后推迟多久进行勘探
periodSeconds: 3                               # 每次勘探周期的距离时长为 3 秒
failureThreshold: 3                            # 3 次失利后则判定为容器勘探存活性失利
restartPolicy: Never                                 # 当勘探到容器失利是否重启 POD
  • 运用 httpGet 探针,试验作用应该大约 40 秒后勘探存活性数组c言语失利,主动重启 POD,第一次重启会当即进行,随后是数组词 30 秒的2httpclient倍直到 300 秒。
apiVersion: v1
kind: Pod
metadata:
name: httpgetlive
namespace: default
labels:
app: myapp
tier: frontengithub中文社区d
spegithub是干什么的c:
containers:
- name: nginx
imagGitHube:github是干什么的 ikubernetes/myapp:v1
ports:
- name: http
cont数组词ainerPort: 80
- name: https
containerPort: 443
livenessProbe:                   # 容器的存活性检测,假定失利则依照 rest变量值artPolicy 战略来重启 POD
httpGet:                       # httpget 探针
path: /error.html            # 勘探的页面,为了作用这个页面不存在
por变量与函数t: http                   # 勘git教程探的端口,运用称谓引证容器的端口
httpgiteeHeaders:                 # httpget 时分设置央求头
- nam变量名的命名规矩e: X-Custom-Header
value: Awesome
initialDelaySeconds: 15        # 容器建议后推迟多久进行勘探
timeoutSeconds: 1              # 每次勘http://192.168.1.1登录探宣布等候作用的时长
restartPolicy: Always                # 当勘探到容器失利是否重启 POD

6.2.6.9 readinessProbe 安排稳妥性检测

例如有Git一个容器作业的是 tomcat ,而 tomcat 翻开 war 包,布置结束的时间或许较长,而默数组初始化许 k8s 会在容器建议就标记为 read 状况,接纳 service 的调度央求,可是容器建议不代表 tomcat 现已成功作业,所以需求 readinessProbe 进行安排稳妥性勘探,来抉择是否能够接入 service 上。

  • livenessProbe / readinessProbe 可用的探github中文官网网页针和探针特性根柢相同,探针只能界说一种类型,例如:H变量名的命名规矩TTPGetAction
livenessProbe     # 指示容器是否正在作业。假定存活勘探失利,则根据 restartPolicy 战略来进行重启
readinessProbe    # 指示容器是否准备好服务央求HTTP。假定安排稳妥勘探失利端点控制器将从与 Pod 匹配的悉数 Service 的端点中删去该 Pod 的 IP 地址
  • 运用 httpGet 探针,试验作用应该变量是什么意思大约 40 秒后勘探存活性失利http://www.baidu.com,主动重启 POD,第一次重启会当即进行,随后是 30 秒的2倍直到 300 秒。
apiVersion: v1
kind: Pod
metadata:
nam变量类型有哪些e: httpgetread
namespace: default
labels:
app: mgit指令yapp
tier: frontend
spec:
containers:
- name: nginx
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
livenessProbgiteee:                   # 容器的存活性检测,假定失利则依照 restartPolicy 战略github是干什么的来重启 POD
httpGet:                       # httpget 探针
path: /error.html            # 勘探的页面,为了作用这个页面不存在
port: http                   # 勘探的端口,运用称谓引证容器的端口
httpHeaders:                 # httpget 时分设置央求头
- name: X-Custom-Header
value: Agithub永久回家地址wesome
initihttp署理alDhttp 302elaySeconds: 15        # 容器建议后推迟多久进行勘探
timeoutSeconds: 1              # 每次勘探宣布等候作用的时长
restartPolicy: Always                # 当勘探到容器失利是否重启 POD
  • 手动进入容器,删去 index.html 以触发安排稳妥性探针的检测
kubectl exec -it ht数组初始化tpgetread -- /bin/sh
$ rm -f /usr/sh变量值are/nginx/ht数组c言语ml/index.html
  • 作用这个 POD 的 READY 状况现已变成非安排稳妥了,此刻 service 不会再调度到这个节点了
[root@node1 ~]# kubectl get pods -w
NAME                            READY   STATUS    RESTARTS   AGE
httpgetread                     0/1     Running   0          2m50s
  • 在容器内再http署理创立一个文件,以触发安排稳妥性探针的github中文官网网页检测
kubectl exec -it httpgetread -- /bin/sh
$ echo "hello worlld" >>/usr/sgithub敞开私库hare/nginx/html/index.html
  • 作用这个 POD 的的 READY 状况现已编程安排稳妥了,此刻 service 会调度到这个节点了
[root@node1 ~]# kubectl get pods -w
NAME                            READY   STATUS    RESTARTS   AG数组和链表的差异E
httpgetread                     1/1     Running   0          8m15s

6.2.6.10 lifec数组指针ycle 生命周github下载期钩子

详见:kubectl explain pods.spec.containers.lifecyclgithub中文社区e

postStart           # 在容器建议后当即实施的指令,假定这个操作失利了,那么容器会间断,且根据 restartPolicy 来抉择数组指针是否重启
preStop             # 在容器间断前当即实施的指令
  • postStart / preStop 的根柢github怎样下载文件运用
apihttps和http的差异Version: v1
kind: Pod
meta数组data:
name: lifecycle-demo
spec:
containers:
- name: lifecycle-demo-container
image: nginx
lifecgithub中文官网网页ycle:
postStart:
exec:
command: ["/bin/sh", "-c", "echo H数组指针ello from数组排序 the postStart handler > /usr/share/message"]
preStop:
exec:
command: ["/usr/sbin/nginx",变量名"-s","quit"]

POD控制器

控制器处理的 POD 能够完结,主动保护 PhttpclientOD 副本数量数组初始化,它能完结 POD 的扩容和缩容,可是不能完结翻滚更新等高级功用。

称谓 作用
ReplicationController 本来 k8s 只要这一种控制器,现在现已接giti近扔掉
R数组的界说eplicaSet 代用户创立指定数量的 POD 副本,还支撑扩缩容,被称为新一代的 ReplicationController。首要由 3 个指标,1. 用户期望的 POD 副本,2. 标签选择器,判定 POD 是否归自己处理,3. 假定 POD 副数组的界说本不行,依照哪个 POD template 创立 POD,但一般我们不直接运用 Repli数组初始化caSet。
Deployment Deployment 经过控制 ReplicaSet 来完结功用,除了支撑 Re变量是什么意思plicaSet 的扩缩容意外,还支撑翻滚更新和回滚等,变量泵还供给了声明式的装备,这个是我们日常运用最多的控制器。它是数组用来处理无状况的运用。
DaemonSet 用于确保集群内的每个GitHub node 上只作业一个指定的 POD,假定变量的指针其含义是指该变量的有新增的节点也都会主动作业这个 POD,所以这个控制器无需界说 POD 作业的数量,只需求界说标签选择器和 PO数组词D template。所以能够跟根据标签选择器选中的 node 上只作业一个 POD 副本。
Job 实施一个一次性使命,例如数据库备份,github是干什么的使命结束后正常退出,则 POD 不会再被建议了,除非使命反常间断。
CronJogiti轮胎b 实施一些周期性使命
StatefulSet 处理有状况的 POD ,可是对每个不同的有状况运用需求自行编写脚本,结束对有状况服务的处理数组的界说,为了处理 StatefulSet 不便利编写有状况运用处理的问题。k8s 还供给了 helm 这样类似于 ygithub中文官网网页um 的办法Git,便利用户从数组词 helm 商场来设备一个有状况的运用。

其他

自己将手记发在:ggithub永久回家地址ithubgiti轮胎.com/数组词redhatx变量类型有哪些l/aw…
欢迎变量英文一键三连