Docker Kubernetes 容器重啟策略
當容器被創建時,容器會根據重啟策略來進行容器重啟。
支持三種策略:
- Always:當容器終止退出后,總是重啟容器,默認策略。
- OnFailure:當容器異常退出(退出狀態碼非0)時,才重啟容器。
- Never:當容器終止退出,從不重啟容器。
環境:
- 系統:Centos 7.4 x64
- Docker版本:18.09.0
- Kubernetes版本:v1.8
- 管理節點:192.168.1.79
- 工作節點:192.168.1.78
- 工作節點:192.168.1.77
案例一
1、管理節點:創建Pod時添加重啟策略
vim pod.yaml
apiVersion: v1 kind: Pod metadata: name: pod-test labels: test: centos spec: containers: - name: hello image: centos:6 command: ["bash","-c","while true;do date;sleep 1;done"] restartPolicy: OnFilure

# api版本 apiVersion: v1 # 指定創建資源對象 kind: Pod # 源數據、可以寫name,命名空間,對象標簽 metadata: # 服務名稱 name: pod-test # 標簽 labels: # 標簽名 os: centos # 容器資源信息 spec: # 容器管理 containers: # 容器名稱 - name: hello # 容器鏡像 image: centos:6 # 添加環境變量 env: # 創建key - name: Test # 創建value value: "123456" # 啟動容器后執行命令 command: ["bash","-c","while true;do date;sleep 1;done"] # 重啟策略 可添加(Always,OnFailure,Never) restartPolicy: OnFilure
2、管理節點:創建Pod
kubectl create -f pod.yaml

命令:kubectl describe pods pod-test # 重啟統計 Restart Count: 0
注:OnFailure狀態可在相關節點kill掉容器服務測試重啟。
案例二
# 查看默認重啟策略
kubectl edit deployment nginx
restartPolicy: Always
# 語法格式
apiVersion: v1 kind: Pod metadata: name: foo namespace: awesomeapps spec: containers: - name: foo image: janedoe/awesomeapp:v1 restartPolicy: Always
1、創建測試yaml;每個10秒發出異常退出重啟容器

apiVersion: v1 kind: Pod metadata: name: foo spec: containers: - name: busybox image: busybox args: - /bin/sh - -c - sleep 10
2、執行文件
kubectl create -f restart.yaml
3、設置重啟策略,當容器異常退出時直接銷毀,不重啟

apiVersion: v1 kind: Pod metadata: name: foo spec: containers: - name: busybox image: busybox args: - /bin/sh - -c - sleep 10 restartPolicy: Never
4、執行文件
kubectl create -f restart.yaml
5、測試
10秒后查看