Always
:当容器终止退出后,总是重启容器,默认策略。OnFailure
:当容器异常退出(退出状态码非0)时,才重启容器。Never
:当容器终止退出,从不重启容器。yaml格式:
spec:
restartPolicy: Always
containers:
- image: nginx
name: web
注意:退出状态码指的是shell状态码,返回0表示正常退出,返回非0则代表异常退出
应用场景:
Always
:如nginx,mysql等需要持续运行的程序OnFailure
:定时的,短周期运行的任务,如数据库备份(cronjob),可以利用返回码Never
:应用只运行一次,如数据的离线处理,批处理等由于pod不关心容器应用程序状态,所以需要配置健康检查,让pod去根据应用程序的状态决定pod是否处于running状态。
livenessProbe
(存活检查)如果检查失败,将杀死容器,根据Pod的restartPolicy来操作。
yaml格式:
spec:
restartPolicy: Always
containers:
- image: nginx
name: web
livenessProbe:
tcpSocket:
port: 8080
initiaDelaySceonds: 30
periodSeconds: 20
参数解释:
initiaDelaySceonds
: 容器启动后进行健康检查的等待时间periodSeconds
: 健康检查的时间间隔readinessProbe
(就绪检查)如果检查失败,Kubernetes会把Pod从service endpoints中剔除。
支持以下三种检查方法:
httpGet
:发送HTTP请求,返回200-400范围状态码为成功。exec
:执行Shell命令返回状态码是0为成功。tcpSocket
:发起TCP Socket建立成功。yaml格式:
spec:
restartPolicy: Always
containers:
- image: nginx
name: web
readinessProbe:
tcpSocket:
port: 8080
initiaDelaySceonds: 30
periodSeconds: 20
注意:上述两种健康检查方式可以同时使用,参数也共用
“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.” – Tom Cargill
标 题:kubernetes Pod应用自动恢复(重启策略+健康检查)简介