k8s mysql重启_kubernetes Pod 应用自动恢复(重启策略 + 健康检查)简介

9d1b8e29d520f794b0621546d78ae7a5.png

一、重启策略

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值