kubernetes_02_资源清单_02_Pod生命周期_20190918
容器环境初始化 pause c-(网络和数据卷初始化)-->init c 1---->init c 2--->man c、 start、 stop、 readness(就绪检测)、 liveness(生存检测)
1. init C
示例: Example002:
/root/yaml/001_pod_rs_deployment_svc/002_00_init_pod.yaml
[code]apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp spec: containers: - name: myapp-container image: busybox command: ['sh','-c','echo The app is running! && sleep 3600'] initContainers: - name: init-myservice image: busybox command: ['sh','-c','until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: busybox command: ['sh','-c','until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
/root/yaml/001_pod_rs_deployment_svc/002_01_myservice.yaml
[code]kind: Service apiVersion: v1 metadata: name: myservice spec: ports: - protocol: TCP port: 80 targetPort: 9376
/root/yaml/001_pod_rs_deployment_svc/002_02_mydb.yaml
[code]kind: Service apiVersion: v1 metadata: name: mydb spec: ports: - protocol: TCP port: 80 targetPort: 9377
1)在(pause c)之后,Init容器会按照顺序启动(即init c 1容器启动成功并退出,init c 2才会启动)
2)如果init c启动失败,kubernetes会不断地重启该Pod,直到成功。如果Pod的restartPolicy为Never,则不会重启
3)init 使用的整个资源,不受名称空间资源范围限制
3)Init容器的端口不会在Service中进行聚集。正在初始化中的Pod处于Pending状态,但应该会将Initializing状态设置为true
4)如果Pod重启,所有Init容器会重新执行。(所以,pod定义要Init每次运行的结果必须是一样的)
5)kubectl edit pod 对InitContainers的修改仅限于image字段,修改其他字段都不会生效。更改后,会重启所在Pod
2.容器探针
探针是在容器内部定义的诊断程序。由kubelet完成对容器的定期诊断。
诊断程序有三种类型:
ExecAction: 容器内执行指定的命令。返回码为0 , 成功
TCPSocketAction:对容器的TCP端口进行检查。端口打开,成功
HTTPGetAction:对容器进行HTTP Get请求。响应码大于等于200 且小于400,成功
探测结果:成功,失败,未知(诊断失败,不采取任何行动。可认为是挂死)
探针分类:
readinessProbe: 就绪探针,指示容器是否就绪。失败,端点控制器将从与Pod匹配的所有Service的端点中删除该Pod的IP地址。初始延迟之前的就绪状态默认为Failure。如果容器不提供就绪探针,则默认状态为Success
livenessProbe:存活探针,指示容器是否存活。失败,则kubelet会杀死容器,并且容器将受到其restartPolicy 的影响。如果容器不提供存活探针,则默认状态为 Success
示例: Example003: readinessProbe
/root/yaml/001_pod_rs_deployment_svc/003_readinessProbe-httpget.yaml
[code]apiVersion: v1 kind: Pod metadata: name: readiness-httpget-pod namespace: default spec: containers: - name: readiness-httpget-container image: nginx:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: port: 80 path: /index1.html initialDelaySeconds: 1 periodSeconds: 3
# kubectl exec -it pod_name -c container_name -- /bin/bash
添加index1.html,容器就会Ready
示例: Example004: livenessProbe
每60s会重启一次pod
/root/yaml/001_pod_rs_deployment_svc/004_livenessProbe-exec.yaml
[code]apiVersion: v1 kind: Pod metadata: name: liveness-exec-pod namespace: default spec: containers: - name: liveness-exec-container image: busybox imagePullPolicy: IfNotPresent command: ["/bin/sh", "-c", "touch /tmp/live; sleep 60; rm -rf /tmp/live; sleep 3600"] livenessProbe: exec: command: ["test","-e","/tmp/live"] initialDelaySeconds: 1 periodSeconds: 3
3.启动动作(start)、退出动作(stop):lifecycle
示例: Example005:
/root/yaml/001_pod_rs_deployment_svc/005_lifecycle-demo.yaml
[code]apiVersion: v1 kind: Pod metadata: name: lifecycle-demo spec: containers: - name: lifecycle-demo-container image: nginx lifecycle: postStart: exec: command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"] preStop: exec: command: ["/bin/sh", "-c", "echo Hello from the postStop handler > /usr/share/message"]
4.Pod的状态值
- 挂起(Pending):Pod已经被 Kubernetes接受,但有一个或者多个容器镜像尚未被创建。等待时间包括调度pod的时间和通过下载镜像过的时间
- 运行中(Runing):该Pod已经绑定到一个节点上,Pod中所有的容器都已经被创建。至少有一个容器正在运行,或者处于启动或者重启状态
- 成功(Success):Pod中的所有容器都被成功终止,且不会再重启
- 失败(Failed):Pod中的所有容器都已经终止了,并且至少有一个容器是因为失败终止。也就是说,容器以非0状态退出或者被系统终止
- 未知(Unknow):因为某些原因无法取得Pod的状态,通常是因为与Pod所在主机通信失败
- 点赞
- 收藏
- 分享
- 文章举报
- kubernetes_02_资源清单_03_Pod控制器_20190919
- kubernetes_02_资源清单_04_资源限制_20190929
- [置顶] kubernetes资源对象--Horizontal Pod Autoscaling(HPA)
- kubernetes创建资源对象yaml文件例子--pod
- kubernetes资源对象--Horizontal Pod Autoscaling(HPA)
- kubernetes资源清单定义
- kubernetes调度之pod优先级和资源抢占
- kubernetes搭建 十一、Pod管理、资源限制、健康检查
- kubernetes系列06—kubernetes资源清单定义入门
- kubernetes创建资源yaml文件例子--pod
- opaque integer resource pod.alpha.kubernetes.io/opaque-int-resource- 自定义资源类型
- [置顶] kubernetes资源对象--pod和job
- [置顶] kubernetes创建资源对象yaml文件例子--pod
- kubernetes资源类型--pod和job
- Kubernetes1.3:POD生命周期管理
- kubernetes资源对象--pod和job
- Kubernetes入门:Pod的状态与生命周期管理(1)
- Kubernetes1.3:POD生命周期管理
- [置顶] kubernetes--pod的生命周期管理
- kubernetes创建资源对象yaml文件例子--pod