前言:
pod的重啓策略restartpolicy:pod在遇到故障之後重啓的動作有:
1.always:當容器退出時,總是重啓容器,默認策略
2.onfailure:當容器異常退出(退出狀態碼非0)時,重啓容器
3.nerver:當容器退出時,從不重啓容器
備註:k8s中不支持重啓pod資源,這裏說的重啓指的是刪除重建pod
一:查看現有pod資源的重啓策略
查看重啓策略使用kubectl edit 查看
或者將pod資源–export -o yaml 查看
[root@master1 ~]# kubectl edit pod frontend
imagePullPolicy: Always #這是鏡像拉取策略
restartPolicy: Always
刪除測試pod2.yaml文件生成的資源
[root@master1 ~]# kubectl delete -f pod2.yaml
pod "frontend" deleted
二:測試重啓策略
2.1 在不指定重啓策略時,默認使用always
[root@master1 ~]# vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
name: ceshichongqicelue
spec:
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 30;exit 3
busybox可以視爲linux內核版本
args 參數
- /bin/sh 在/bin/sh環境
- -c 執行命令
2.2 創建pod,查看狀態
[root@master1 ~]# kubectl apply -f pod3.yaml
pod/ceshichongqicelue created
[root@master1 ~]# kubectl get pods -w #多等一會
NAME READY STATUS RESTARTS AGE
ceshichongqicelue 1/1 Running 1 56s
ceshichongqicelue 0/1 Error 1 68s
ceshichongqicelue 0/1 CrashLoopBackOff 1 78s
ceshichongqicelue 1/1 Running 2 82s
ceshichongqicelue 0/1 Error 2 112s
ceshichongqicelue 0/1 CrashLoopBackOff 2 2m6s
ceshichongqicelue 1/1 Running 3 2m24s
2.3 此時是重啓3次的狀態
^C[root@master1 ~]# kubectl edit pod ceshichongqicelue
restartPolicy: Always
三:修改pod3文件,添加重啓策略參數爲Never
3.1 首先先把pod3生成的pod刪掉,然後再編輯
[root@master1 ~]# kubectl delete -f pod3.yaml
pod "ceshichongqicelue" deleted
[root@master1 ~]# vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
name: ceshichongqicelue
spec:
restartPolicy: Never
#添加這個
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 30;exit 3
3.2 按照策略來說,nerver代表不會進行重啓
[root@master1 ~]# kubectl apply -f pod3.yaml
pod/ceshichongqicelue created
[root@master1 ~]# kubectl get pods -w
NAME READY STATUS RESTARTS AGE
ceshichongqicelue 0/1 ContainerCreating 0 3s
ceshichongqicelue 1/1 Running 0 4s
ceshichongqicelue 0/1 Error 0 34s
^C[root@master1 ~]kubectl get pods
NAME READY STATUS RESTARTS AGE
ceshichongqicelue 0/1 Error 0 95s
因爲返回狀態碼爲3,所以狀態是error
3.3 再修改一下執行動作參數
[root@master1 ~]# kubectl delete -f pod3.yaml
pod "ceshichongqicelue" deleted
[root@master1 ~]# vim pod3.yaml
apiVersion: v1
kind: Pod
metadata:
name: ceshichongqicelue
spec:
restartPolicy: Never
containers:
- name: busybox
image: busybox
args:
- /bin/sh
- -c
- sleep 10
[root@master1 ~]# kubectl apply -f pod3.yaml
pod/ceshichongqicelue created
[root@master1 ~]# kubectl get pods -w
NAME READY STATUS RESTARTS AGE
ceshichongqicelue 0/1 ContainerCreating 0 4s
ceshichongqicelue 1/1 Running 0 9s
ceshichongqicelue 0/1 Completed 0 14s