定义Pod的生命周期 lifecycle以及(Pod的优雅的终止)、
postStart是高于startupProbe。
面试题1: Pod创建流程及生命周期?
- 创建Pod
- 完成Pod调度流程
- initContainer
- 容器启动并执行postStart
- livessProbe
- 进入Running状态
- readinessProbe
- service关联Pod
- 接收客户端请求
cat 29-pods-lifecycle-postStart-preStop.yaml
apiVersion: v1
kind: Pod
metadata:
name: baimei-pod-containers-lifecycle-001
spec:
volumes:
- name: data
hostPath:
path: /baimei-dashu
# 在pod优雅终止时,定义延迟发送kill信号的时间,此时间可用于pod处理完未处理的请求等状况。
# 默认单位是秒,若不设置默认值为30s。
terminationGracePeriodSeconds: 60
# terminationGracePeriodSeconds: 5
containers:
- name: myweb
image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
volumeMounts:
- name: data
mountPath: /data
# 定义Pod的生命周期。
lifecycle:
# Pod启动之后做的事情,若该步骤未完成,创建容器时一直处于"ContainerCreating"状态,此时无法访问业务。
# 换句话说,若此节点为执行成功,是不会分配IP地址的哟~对于比较复杂的动作,建议放在initContianers中执行。
postStart:
exec:
command:
- "/bin/sh"
- "-c"
# - "echo \"postStart at $(date +%F_%T)\" >> /data/postStart.log"
- "sleep 30"
# Pod停止之前做的事情
preStop:
exec:
command:
- "/bin/sh"
- "-c"
- "echo \"preStop at $(date +%F_%T)\" >> /data/preStop.log"
# - "sleep 30"
烧脑版本:
cat 29-pods-lifecycle-postStart-preStop.yaml
apiVersion: v1
kind: Pod
metadata:
name: baimei-pod-containers-lifecycle-002
spec:
volumes:
- name: data
hostPath:
path: /baimei-dashu
# 在pod优雅终止时,定义延迟发送kill信号的时间,此时间可用于pod处理完未处理的请求等状况。
# 默认单位是秒,若不设置默认值为30s。
terminationGracePeriodSeconds: 60
# terminationGracePeriodSeconds: 5
initContainers:
- name: init
image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
command:
- sleep
- "10"
containers:
- name: myweb
image: harbor.baimei.com/baimei-web/nginx:1.25.1-alpine
volumeMounts:
- name: data
mountPath: /data
# 定义Pod的生命周期。
lifecycle:
# Pod启动之后做的事情,若该步骤未完成,创建容器时一直处于"ContainerCreating"状态,此时无法访问业务。
# 换句话说,若此节点为执行成功,是不会分配IP地址的哟~对于比较复杂的动作,建议放在initContianers中执行。
# 值得注意的是,postStart是高于startupProbe。
postStart:
exec:
command:
- "/bin/sh"
- "-c"
# - "echo \"postStart at $(date +%F_%T)\" >> /data/postStart.log"
- "sleep 30"
# Pod停止之前做的事情
preStop:
exec:
command:
- "/bin/sh"
- "-c"
- "echo \"preStop at $(date +%F_%T)\" >> /data/preStop.log"
# - "sleep 30"
livenessProbe:
httpGet:
port: 80
path: /dashu.html
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
httpGet:
port: 80
path: /baimei.html
failureThreshold: 3
initialDelaySeconds: 20
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 1
startupProbe:
httpGet:
port: 80
path: /start.html
failureThreshold: 3
initialDelaySeconds: 5
periodSeconds: 1
successThreshold: 1
timeoutSeconds: 1
欢迎来撩 : 汇总all