實操:k8s中的pod的重啓策略

前言:

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

3.4 不會執行重啓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章