K8S版本更新策略
案例:通过Recreate对Pod进行重建更新创建pod另外开一个终端动态观察pod的信息更新镜像版本...spec:- image: nginx:1.18.1 指定新版本提示:观察pod的重建过程#第一步:将Running的pod先终止(Terminating)#第二步:接下来Pod处于等待状态(Pending)#第三步:重新创建容器(ContainerCreating)#第四步:新的容器被创建
1 Pod版本更新 Recreate
案例:通过Recreate对Pod进行重建更新
修改deploy_nginx.yml文件设置Pod更新
vim deploy_nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
namespace: test
spec:
strategy: #Pod更新策略
type: Recreate #重建更新
replicas: 3 #指定Pod数量
selector: #标签选择器(基于选择器匹配Pod
matchLabels: #标签类型
app: deploy-nginx #匹配pod的标签(表示deploy管理带有此标签的Pod)
template: #pod的配置模板
metadata:
labels:
app: deploy-nginx #pod的标签
spec:
containers:
- name: nginx
image: nginx:1.18.0
imagePullPolicy: IfNotPresen #镜像拉取策略
ports: #定义端口
- containerPort: 80 #端口
protocol: TCP #端口协议
创建pod
# kubectl create -f deploy_nginx.yml另外开一个终端动态观察pod的信息
# kubectl get pod -n test -w更新镜像版本
# kubectl edit deploy deploy-nginx -n test ... spec: containers: - image: nginx:1.18.1 指定新版本提示:观察pod的重建过程
#第一步:将Running的pod先终止(Terminating)
#第二步:接下来Pod处于等待状态(Pending)
#第三步:重新创建容器(ContainerCreating)
#第四步:新的容器被创建且以成功运行(Running )
查看镜像版本
# kubectl get deploy -n test -o wide
删除depoly
# kubectl delete -f deploy_nginx.yml
2 Pod版本更新 RollingUpdat
案例:通过RollingUpdat对Pod进行滚动更新(默认策略,无需指定,只需要将前边配置文件中的其他更新策略删除即可)
vim deploy_nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-nginx
namespace: test
spec:
replicas: 6
selector: #标签选择器(基于选择器匹配Pod)
matchLabels: #标签类型
app: deploy-nginx #匹配pod的标签(表示deploy管理带有此标签的Pod)
template: #pod的配置模板
metadata:
labels:
app: deploy-nginx #pod的标签
spec:
containers:
- name: nginx
image: nginx:1.18.1
imagePullPolicy: IfNotPresen #镜像拉取策略
ports: #定义端口
- containerPort: 80 #端口
protocol: TCP #端口协议
创建pod(--record 记录整个deploy更新历史)
# kubectl create -f deploy_nginx.yml --record另外一个终端动态查看pod信息
# kubectl get pod -n test -w更新镜像版本
# kubectl edit deploy deploy-nginx -n test
spec:
containers:
- image: nginx:1.20.0
查看RS信息
# kubectl get rs -n test -o wide提示:当pod滚动更新后,rs也会随之跟着更新,原有rs中的pod会被删除,但是原有的rs并不会删除,用于做版本回退 显示当前升级版本的状态
# kubectl rollout status deploy deploy-nginx -n test
3 Pod版本回退
Deploy支持版本升级过程中的暂停、继续、回退等功能,具体功能如下:
kubectl rollout 版本升级相关功能,支持下面的选项:
(1)status #显示当前升级状态
(2)history #显示升级历史记录
(3)pause #暂停版本升级过程
(4)resume #继续已经暂停的版本升级过程 restart #重启版本升级过程
(5)undo #回滚到上一级版本(可以通过--to-revision回滚到指定版本)
案例:多次更新镜像版本,随后对镜像版本进行回退
更新镜像版本
# kubectl edit deploy deploy-nginx -n test
spec:
containers:
- image: nginx:1.20.1
更新镜像版本
# kubectl edit deploy deploy-nginx -n test
spec:
containers:
- image: nginx:1.21.0
查看升级历史记录
# kubectl rollout history deploy deploy-nginx -n test
查看具体版本详细信息:--revision=版本编号
# kubectl rollout history deploy deploy-nginx --revision=2 -n test查看当前所有版本(通过rs可以查看)
# kubectl get rs -o wide -n test查看当前使用版本(查看deploy)
# kubectl get deploy -o wide -n test版本回退:通过--to-revision=1,可直接回滚到1版本,如果省略这个选项,就是回退到上个版本 # kubectl rollout undo deploy deploy-nginx --to-revision=2 -n test
查看当前使用的版本
# kubectl get deploy -o wide -n test
查看升级历史记录
# kubectl rollout history deploy deploy-nginx -n test
提示:新版本就是原先的1版本
更多推荐



所有评论(0)