k8s-deployment滚动更新以及回滚

一、准备镜像

#首先准备2个不同版本的镜像,用于测试(已经在阿里云上创建好2个不同版本的nginx镜像,大家可以自己做哈,输出不同的值就可以)
docker pull registry.cn-beijing.aliyuncs.com/xxxx/nginx:v1
docker pull registry.cn-beijing.aliyuncs.com/xxxx/nginx:v2

二、手动编写yaml进行测试

1、创建yaml

vim roll_update.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: image-deployment
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: image-update
    spec:
      containers:
      - name: nginx
        image: registry.cn-beijing.aliyuncs.com/xxxx/nginx:v1
        imagePullPolicy: Always

#创建deployment
kubectl create -f roll_update.yaml

vim service.yaml
apiVersion: v1
kind: Service
metadata:
  name: image-deployment
spec:
  type: NodePort
  ports:
    - port: 80
      nodePort: 30001
  selector:
app: image-update

#创建service
kubectl create -f service.yaml

2、访问

#访问
curl 172.31.103.123:30001

k8s-deployment滚动更新以及回滚_第1张图片

3、更新镜像

kubectl patch deployment image-deployment --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image":"registry.cn-beijing.aliyuncs.com/xxxxx/nginx:v2"}]}}}}' && kubectl rollout pause deployment image-deployment

#由于使用pause命令,更新过程到此会卡主,我们让更新的过程继续下去
kubectl rollout resume deployment image-deployment

#访问测试一下,是否更新成功:
curl 172.31.103.123:30001

k8s-deployment滚动更新以及回滚_第2张图片

4、回滚操作

#查看历史更新版本
kubectl rollout history deploy/image-deployment

#查看详细的历史更新版本明细
kubectl rollout history deploy image-deployment --revision=7

k8s-deployment滚动更新以及回滚_第3张图片

#回滚到第一个版本
kubectl rollout undo deploy image-deployment --to-revision=1

#访问测试

k8s-deployment滚动更新以及回滚_第4张图片

查看replicaset状态,可以看出现在使用的镜像版本:
kubectl get rs -owide

在这里插入图片描述

你可能感兴趣的:(K8s与容器系列,linux,k8s)