跳到主要内容

探针

启动探针

startupProbe:
httpGet:
path: /healthz
port: 8080
failureThreshold: 30
periodSeconds: 10

就绪探针

readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 5



readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 15
periodSeconds: 10

readinessProbe:
exec:
command:
- cat
- /tmp/ready
initialDelaySeconds: 20
periodSeconds: 15


initialDelaySeconds:表示在容器启动后延时多久秒才开始探测;

periodSeconds:表示执行探测的频率,即间隔多少秒探测一次,默认间隔周期是10秒,最小1秒;

timeoutSeconds:表示探测超时时间,默认1秒,最小1秒,表示容器必须在超时时间范围内做出响应,否则视为本次探测失败;

successThreshold:表示最少连续探测成功多少次才被认定为成功,默认是1,对于liveness必须是1,最小值是1;

failureThreshold:表示连续探测失败多少次才被认定为失败,默认是3,连续3次失败,k8s 将根据pod重启策略对容器做出决定;

注意:定义存活探针时,一定要设置initialDelaySeconds属性,该属性为初始延时,如果不设置,默认容器启动时探针就开始探测了,这样可能会存在 应用程序还未启动就绪,就会导致探针检测失败,k8s就会根据pod重启策略杀掉容器然后再重新创建容器的莫名其妙的问题。 在生产环境中,一定要定义一个存活探针。

就绪探针(Readiness Probe):

apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-app
image: nginx
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 10

提供了三类probe(探针)来执行对pod的健康监测:

livenessProbe探针 (存活探针): 可以根据用户自定义规则来判定pod是否健康,用于判断容器是否处于Running状态,

如果不是,kubelet就会杀掉该容器,并根据重启策略做相应的处理。如果容器不包含该探针,那么kubelet就会默认返回值都是success;

ReadinessProbe探针: 同样是可以根据用户自定义规则来判断pod是否健康,容器服务是否可用(Ready),如果探测失败,控制器会将此pod从对应service的endpoint列表中移除,从此不再将任何请求调度到此Pod上,直到下次探测成功;

startupProbe探针: 启动检查机制,应用一些启动缓慢的业务,避免业务长时间启动而被上面两类探针kill掉,

这个问题也可以换另一种方式解决,就是定义上面两类探针机制时,初始化时间定义的长一些即可;