引言:在k8s集群中,当某个pod资源需要重启时,我们只会对其进行删除,由其pod控制器进行重新构建。k8s集群的自愈也是对资源的一个重新构建, 在k8s中是没有重启一说的。我们 常说的重启,其实就是对pod资源的重新构建,那么k8s集群在对资源进行管理时,其“重启”规则又是什么呢?
一. 重启策略
在k8s集群中有如下三种重启策略:
- Always:当容器终止退出后,总是重启容器,默认策略
- OnFailure:当容器异常退出(退出状态码非0)时,重启容器
- Never:当容器终止退出,从不重启容器。
重启策略适用于pod对象中的所有容器,首次需要重启的容器,将在其需要时立即进行重启,随后再次需要重启的操作将由kubelet延迟一段时间后进行,且反复的重启操作的延迟时长为10s,20s,40s,80s,160s,300s,300s是最大延迟时长
重启策略设置建议
因为重启策略默认的是Always,这也是合理的,因此在一般情况下,重启策略不需要设置,这里仅仅是作为知识点拿出来展示一下,在实际使用中,在大多数情况下都不需要进行重启策略配置
二. Always
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 30; exit 3
没有定义重启策略时,默认的就是always
kubectl apply -f always.yaml
kubectl get pod -o wide -w
注:证明重启策略默认是always,总是自动拉取