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秒后查看