k8s mysql重启_kubernetes Pod 应用自动恢复(重启策略 + 健康检查)简介
一、重启策略Always:当容器终止退出后,总是重启容器,默认策略。OnFailure:当容器异常退出(退出状态码非 0)时,才重启容器。Never:当容器终止退出,从不重启容器。yaml 格式:spec:restartPolicy: Alwayscontainers:- image: nginxname: web注意:退出状态码指的是 shell 状态码,返回 0 表示正常退出,返回非 0 则代
一、重启策略
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 状态。
1.livenessProbe(存活检查)
如果检查失败,将杀死容器,根据 Pod 的 restartPolicy 来操作。
yaml 格式:
spec:
restartPolicy: Always
containers:
- image: nginx
name: web
livenessProbe:
tcpSocket:
port: 8080
initiaDelaySceonds: 30
periodSeconds: 20
参数解释:
initiaDelaySceonds: 容器启动后进行健康检查的等待时间
periodSeconds: 健康检查的时间间隔
2. 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
注意:上述两种健康检查方式可以同时使用,参数也共用
三、参考
更多推荐
所有评论(0)