k8s || 滚动升级

创建 Deployment

[root@k8smaster deployment]# ls
nginx-deployment.yaml

[root@k8smaster deployment]# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

[root@k8smaster deployment]# kubectl apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment created

[root@k8smaster taint_toleration]# kubectl get pod -o wide
NAME                                READY   STATUS    RESTARTS   AGE     IP              NODE       NOMINATED NODE   READINESS GATES
demo-pod                            1/1     Running   10         17h     10.244.249.48   k8snode1   <none>           <none>
nginx-deployment-559d658b74-8bnjk   1/1     Running   0          2m49s   10.244.249.51   k8snode1   <none>           <none>
nginx-deployment-559d658b74-hndwt   1/1     Running   0          2m49s   10.244.249.53   k8snode1   <none>           <none>

[root@k8smaster taint_toleration]# kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           4m10s

[root@k8smaster deployment]# kubectl rollout status deployment/nginx-deployment
deployment "nginx-deployment" successfully rolled out

[root@k8smaster deployment]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-559d658b74   2         2         2       2m7s

[root@k8smaster deployment]# kubectl get pods --show-labels
NAME                                READY   STATUS    RESTARTS   AGE     LABELS
nginx-deployment-559d658b74-lwq7t   1/1     Running   0          2m40s   app=nginx,pod-template-hash=559d658b74
nginx-deployment-559d658b74-qd8gt   1/1     Running   0          2m40s   app=nginx,pod-template-hash=559d658b74

升级:从低版本到高版本

回滚:从高版本到低版本

扩缩:扩张或者缩小副本数量

两种方法:

1.修改nginx-deployment.yaml

[root@k8smaster deployment]# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2    #  修改数值来扩大缩小副本数量
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.1   # 修改nginx的版本
        ports:
        - containerPort: 80

[root@k8smaster deployment]# kubectl apply -f nginx-deployment.yaml 
deployment.apps/nginx-deployment configured

[root@k8smaster deployment]# kubectl get pod
NAME                                READY   STATUS        RESTARTS   AGE
nginx-deployment-559d658b74-lwq7t   0/1     Terminating   0          8m26s
nginx-deployment-559d658b74-qd8gt   0/1     Terminating   0          8m26s
nginx-deployment-66b6c48dd5-dkkx9   1/1     Running       0          5s
nginx-deployment-66b6c48dd5-hmx9j   1/1     Running       0          7s

[root@k8smaster deployment]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-66b6c48dd5-dkkx9   1/1     Running   0          33s
nginx-deployment-66b6c48dd5-hmx9j   1/1     Running   0          35s

2.使用命令

[root@k8smaster deployment]# kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.16.1
deployment.apps/nginx-deployment image updated

回滚:例如你将镜像名称命名设置为 nginx:1.161 而不是 nginx:1.16.1

[root@k8smaster deployment]# kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.16.1
deployment.apps/nginx-deployment image updated

[root@k8smaster deployment]# kubectl set image deployment/nginx-deployment nginx=nginx:1.161
deployment.apps/nginx-deployment image updated

[root@k8smaster deployment]# kubectl rollout status deployment/nginx-deployment
Waiting for deployment "nginx-deployment" rollout to finish: 1 out of 2 new replicas have been updated...

^C[root@k8smaster deployment]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-559d658b74   2         2         2       13m
nginx-deployment-5b9cf4fbdd   0         0         0       7m50s
nginx-deployment-66b6c48dd5   0         0         0       5m20s
nginx-deployment-66bc5d6c8    1         1         0       51s

[root@k8smaster deployment]# kubectl get pods
NAME                                READY   STATUS              RESTARTS   AGE
nginx-deployment-559d658b74-ctmhh   1/1     Running             0          3m17s
nginx-deployment-559d658b74-gpbjb   1/1     Running             0          3m15s
nginx-deployment-66bc5d6c8-vwrrv    0/1     ContainerCreating   0          63s

获取 Deployment 描述信息

[root@k8smaster deployment]# kubectl describe deployment
Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Wed, 29 Mar 2023 12:15:37 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 5
Selector:               app=nginx
Replicas:               2 desired | 1 updated | 3 total | 2 available | 1 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:1.161
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    ReplicaSetUpdated
OldReplicaSets:  nginx-deployment-559d658b74 (2/2 replicas created)
NewReplicaSet:   nginx-deployment-66bc5d6c8 (1/1 replicas created)
Events:
  Type    Reason             Age                  From                   Message
  ----    ------             ----                 ----                   -------
  Normal  ScalingReplicaSet  8m22s                deployment-controller  Scaled up replica set nginx-deployment-5b9cf4fbdd to 1
  Normal  ScalingReplicaSet  5m52s                deployment-controller  Scaled down replica set nginx-deployment-5b9cf4fbdd to 0
  Normal  ScalingReplicaSet  5m52s                deployment-controller  Scaled up replica set nginx-deployment-66b6c48dd5 to 1
  Normal  ScalingReplicaSet  5m50s                deployment-controller  Scaled down replica set nginx-deployment-559d658b74 to 1
  Normal  ScalingReplicaSet  5m50s                deployment-controller  Scaled up replica set nginx-deployment-66b6c48dd5 to 2
  Normal  ScalingReplicaSet  5m48s                deployment-controller  Scaled down replica set nginx-deployment-559d658b74 to 0
  Normal  ScalingReplicaSet  3m37s                deployment-controller  Scaled up replica set nginx-deployment-559d658b74 to 1
  Normal  ScalingReplicaSet  3m35s (x2 over 14m)  deployment-controller  Scaled up replica set nginx-deployment-559d658b74 to 2
  Normal  ScalingReplicaSet  3m35s                deployment-controller  Scaled down replica set nginx-deployment-66b6c48dd5 to 1
  Normal  ScalingReplicaSet  83s (x2 over 3m33s)  deployment-controller  (combined from similar events): Scaled up replica set nginx-deployment-66bc5d6c8 to 1

首先,检查 Deployment 修订历史

[root@k8smaster deployment]# kubectl rollout history deployment/nginx-deployment
deployment.apps/nginx-deployment 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
4         <none>
5         <none>

查看修订历史的详细信息

[root@k8smaster deployment]# kubectl rollout history deployment/nginx-deployment --revision=2
deployment.apps/nginx-deployment with revision #2
Pod Template:
  Labels:    app=nginx
    pod-template-hash=5b9cf4fbdd
  Containers:
   nginx:
    Image:    nginx:1.14.1
    Port:    80/TCP
    Host Port:    0/TCP
    Environment:    <none>
    Mounts:    <none>
  Volumes:    <none>

回滚到之前的修订版本

[root@k8smaster deployment]# kubectl rollout undo deployment/nginx-deployment --to-revision=2
deployment.apps/nginx-deployment rolled back

[root@k8smaster deployment]# kubectl get pod
NAME                                READY   STATUS              RESTARTS   AGE
nginx-deployment-559d658b74-ctmhh   1/1     Running             0          4m53s
nginx-deployment-559d658b74-gpbjb   0/1     Terminating         0          4m51s
nginx-deployment-5b9cf4fbdd-7l2k9   0/1     ContainerCreating   0          4s
nginx-deployment-5b9cf4fbdd-pz6q7   1/1     Running             0          6s

检查回滚是否成功

[root@k8smaster deployment]# kubectl get deployment nginx-deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   2/2     2            2           15m

[root@k8smaster deployment]# kubectl describe deployment nginx-deployment
Name:                   nginx-deployment
Namespace:              default
CreationTimestamp:      Wed, 29 Mar 2023 12:15:37 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 6
Selector:               app=nginx
Replicas:               2 desired | 2 updated | 3 total | 2 available | 1 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:        nginx:1.14.1
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    ReplicaSetUpdated
OldReplicaSets:  nginx-deployment-559d658b74 (1/1 replicas created)
NewReplicaSet:   nginx-deployment-5b9cf4fbdd (2/2 replicas created)
Events:
  Type    Reason             Age                  From                   Message
  ----    ------             ----                 ----                   -------
  Normal  ScalingReplicaSet  7m59s                deployment-controller  Scaled down replica set nginx-deployment-5b9cf4fbdd to 0
  Normal  ScalingReplicaSet  7m59s                deployment-controller  Scaled up replica set nginx-deployment-66b6c48dd5 to 1
  Normal  ScalingReplicaSet  7m57s                deployment-controller  Scaled down replica set nginx-deployment-559d658b74 to 1
  Normal  ScalingReplicaSet  7m57s                deployment-controller  Scaled up replica set nginx-deployment-66b6c48dd5 to 2
  Normal  ScalingReplicaSet  7m55s                deployment-controller  Scaled down replica set nginx-deployment-559d658b74 to 0
  Normal  ScalingReplicaSet  5m44s                deployment-controller  Scaled up replica set nginx-deployment-559d658b74 to 1
  Normal  ScalingReplicaSet  5m42s (x2 over 16m)  deployment-controller  Scaled up replica set nginx-deployment-559d658b74 to 2
  Normal  ScalingReplicaSet  5m42s                deployment-controller  Scaled down replica set nginx-deployment-66b6c48dd5 to 1
  Normal  ScalingReplicaSet  57s (x2 over 10m)    deployment-controller  Scaled up replica set nginx-deployment-5b9cf4fbdd to 1
  Normal  ScalingReplicaSet  55s (x5 over 5m40s)  deployment-controller  (combined from similar events): Scaled up replica set nginx-deployment-5b9cf4fbdd to 2

扩缩

[root@k8smaster deployment]# kubectl scale deployment/nginx-deployment --replicas=5
deployment.apps/nginx-deployment scaled

[root@k8smaster deployment]# kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5b9cf4fbdd-6jjrh   1/1     Running   0          5s
nginx-deployment-5b9cf4fbdd-7l2k9   1/1     Running   0          12m
nginx-deployment-5b9cf4fbdd-pz6q7   1/1     Running   0          13m
nginx-deployment-5b9cf4fbdd-scc58   1/1     Running   0          5s
nginx-deployment-5b9cf4fbdd-t59ld   1/1     Running   0          5s


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韩未零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值