1 重启策略
Pod在遇到故障之后重启的动作。
- Always:当容器终止退出后,总是重启容器,默认策略
- OnFailure:当容器异常退出(退出状态码非0)时,重启容器
- Never:当容器终止退出,从不重启容器。
注意:k8s中不支持重启Pod资源,只有删除重建。
重启策略适用于pod对象中的所有容器,首次需要重启的容器,将在其需要时立即进行重启,随后再次需要重启的操作将由kubelet延迟一段时间后进行,且反复的重启操作的延迟时长为10s,20s,40s,80s,160s,300s,300s是最大延迟时长。
1.2 重启策略设置建议
重启策略默认是Always,在一般情况下,重启策略不需要设置。
1.2 always策略配置
$ vim always.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 30; exit 3
kubectl apply -f always.yaml
创建中。
立即重启。
注:证明重启策略默认是always,总是自动拉取
1.3 never策略配置
$ vim never.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo01
namespace: zy
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 30; exit 3
restartPolicy: Never
kubectl apply -f never.yaml
注:这时pod故障后就一直不重启了
1.4 onfailure策略配置
1.4.1 非0状态
$ vim onfailure.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo02
namespace: zy
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 20; exit 3
restartPolicy: OnFailure
kubectl apply -f onfailure.yaml
当容器异常退出(退出状态码非0)时,重启容器
1.4.2 为0状态
$ vim onfailure0.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo03
namespace: zy
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 20; exit 0
restartPolicy: OnFailure
kubectl apply -f onfailure0.yaml
退出后显示的完成,说明正常退出,只是完成了这个动作,并不是错误。
退出状态码为0时包含两种状态,一种是正常完成后返回值0,(complated);第二种 手动指定 exit 0