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

注意:上述两种健康检查方式可以同时使用,参数也共用

三、参考

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐