小结
Kubernetes存活控针导致容器不断重启,进行了解决。
问题
项目部署中有一个容器启动速度相当慢,大概要3分钟以上,在容器的配置中使用了livenessProbe (存活控针)和readinessProbe,如下:
livenessProbe:
httpGet:
path: $HEALTH_URL
port: $PORT
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 5
readinessProbe:
httpGet:
path: $HEALTH_URL
port: $PORT
scheme: HTTP
timeoutSeconds: 5
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
failureThreshold: 5
由于容器启动速度慢,livenessProbe (存活控针)会认为容器不能工作,对其进行重启,进行无限循环的重启中。
解决
参考稀土掘金:容器无限重启?会不会是 K8s 探针配置有问题 和 华为云: 存活探针(Liveness Probe),这两篇写得相当详细。
添加startupProbe可以解决问题,也就是在容器启动之后livenessProbe (存活控针)和readinessProbe才发挥作用。
startupProbe:
httpGet:
path: $HEALTH_URL
port: $PORT
scheme: HTTP
initialDelaySeconds: 5
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 100
livenessProbe:
httpGet:
path: $HEALTH_URL
port: $PORT
scheme: HTTP
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 1
failureThreshold: 5
readinessProbe:
httpGet:
path: $HEALTH_URL
port: $PORT
scheme: HTTP
timeoutSeconds: 5
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
failureThreshold: 5