Kubernetes-2: 滚动升级及回滚 Deployment

 一、滚动更新

1、编写yml:k8s_nginx_deployment_1.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dm-1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx
        image: test/nginx:v1
        ports:
        - containerPort: 80

2、常用操作

// 查询rc
kubectl get deployment

// 修改副本数为4个
kubectl scale deployment nginx-dm-1 --replicas=4    # nginx-dm-1(metadata.name)

3、启动成功

MacBook-Air:test chenfenli$ kubectl get deployment -o wide
NAME         READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES          SELECTOR
nginx-dm-1   4/4     4            4           6m40s   nginx        test/nginx:v1   app=nginx1
MacBook-Air:test chenfenli$

MacBook-Air:test chenfenli$ kubectl get pod -o wide
NAME                          READY   STATUS    RESTARTS   AGE     IP           NODE             NOMINATED NODE   READINESS GATES
nginx-dm-1-669dc865bd-8rdv7   1/1     Running   0          7m12s   10.1.0.247   docker-desktop   <none>           <none>
nginx-dm-1-669dc865bd-9dn2b   1/1     Running   0          4m5s    10.1.0.250   docker-desktop   <none>           <none>
nginx-dm-1-669dc865bd-fsndb   1/1     Running   0          7m12s   10.1.0.249   docker-desktop   <none>           <none>
nginx-dm-1-669dc865bd-mg7wz   1/1     Running   0          7m12s   10.1.0.248   docker-desktop   <none>           <none>
MacBook-Air:test chenfenli$

4、滚动升级:k8s_nginx_deployment_2.yml

升级策略

minReadySeconds: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  •  minReadySeconds:Kubernetes在等待设置的时间后才进行升级,如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了,在某些极端情况下可能会造成服务不正常运行。
  • maxSurge:升级过程中最多可以比原先设置多出的POD数量。例如:maxSurage=1,replicas=5,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,整个升级过程中最多会有5+1个pod。
  • maxUnavaible:升级过程中最多有多少个POD处于无法提供服务的状态,当maxSurge不为0时,该值也不能为0。例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个pod处于无法服务的状态。

最终文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dm-1
spec:
  minReadySeconds: 5
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  replicas: 3
  selector:
    matchLabels:
      app: nginx1
  template:
    metadata:
      labels:
        app: nginx1
    spec:
      containers:
      - name: nginx
        image: test/nginx:v2
        ports:
        - containerPort: 80

执行滚动更新:

MacBook-Air:test chenfenli$ kubectl apply -f k8s_nginx_deployment_2.yml --record=true
deployment.apps/nginx-dm-1 configured

MacBook-Air:test chenfenli$ kubectl get pod -o wide
NAME                          READY   STATUS              RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES
nginx-dm-1-669dc865bd-fsndb   1/1     Terminating         0          13m   10.1.0.249   docker-desktop   <none>           <none>
nginx-dm-1-669dc865bd-mg7wz   1/1     Terminating         0          13m   10.1.0.248   docker-desktop   <none>           <none>
nginx-dm-1-747f7c67bf-lg7pc   1/1     Running             0          28s   10.1.0.251   docker-desktop   <none>           <none>
nginx-dm-1-747f7c67bf-msrzw   1/1     Running             0          29s   10.1.0.252   docker-desktop   <none>           <none>
nginx-dm-1-747f7c67bf-nlns7   0/1     ContainerCreating   0          8s    <none>       docker-desktop   <none>           <none>

MacBook-Air:test chenfenli$ kubectl get pod -o wide
NAME                          READY   STATUS    RESTARTS   AGE   IP           NODE             NOMINATED NODE   READINESS GATES
nginx-dm-1-747f7c67bf-lg7pc   1/1     Running   0          38s   10.1.0.251   docker-desktop   <none>           <none>
nginx-dm-1-747f7c67bf-msrzw   1/1     Running   0          39s   10.1.0.252   docker-desktop   <none>           <none>
nginx-dm-1-747f7c67bf-nlns7   1/1     Running   0          18s   10.1.0.253   docker-desktop   <none>           <none>
MacBook-Air:test chenfenli$

二、回滚

1、查看历史版本

MacBook-Air:test chenfenli$ kubectl rollout history deployment nginx-dm-1
deployment.apps/nginx-dm-1
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

MacBook-Air:test chenfenli$

2、回退到指定版本:name的发生了改变

// kubectl rollout undo deployment nginx-dm-1 回滚到上一个版本
// kubectl rollout undo deployment nginx-dm-1 --to-revision=1 回滚到指定版本
MacBook-Air:test chenfenli$ kubectl rollout undo deployment nginx-dm-1 --to-revision=1
deployment.apps/nginx-dm-1 rolled back
MacBook-Air:test chenfenli$

MacBook-Air:test chenfenli$ kubectl get deployment -o wide
NAME         READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES          SELECTOR
nginx-dm-1   3/3     3            3           30m   nginx        test/nginx:v1   app=nginx1

MacBook-Air:test chenfenli$ kubectl get pod -o wide
NAME                          READY   STATUS    RESTARTS   AGE     IP           NODE             NOMINATED NODE   READINESS GATES
nginx-dm-1-669dc865bd-5g8ss   1/1     Running   0          2m29s   10.1.1.0     docker-desktop   <none>           <none>
nginx-dm-1-669dc865bd-bg74b   1/1     Running   0          2m47s   10.1.0.255   docker-desktop   <none>           <none>
nginx-dm-1-669dc865bd-lt59w   1/1     Running   0          2m46s   10.1.0.254   docker-desktop   <none>           <none>
MacBook-Air:test chenfenli$

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值