k8s-pod的镜像升级与回滚

k8s-pod的镜像升级与回滚


官方文档:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/#updating-a-deployment

一、滚动更新

deploy升级过程 --》滚动升级

一个一个去升级,无服务中断

  1. 只修改副本数量

    不会创建新的rs

  2. 修改副本数量和镜像文件版本或者名字

    会重新创建一个新的rs ,deploy名字不会改变

    新的rs会去创建新的pod

yaml 复制代码
[root@k8s-1 probe]# vim nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.27
        ports:
        - containerPort: 80
[root@k8s-1 probe]# kubectl apply -f nginx.yaml 
deployment.apps/nginx-deployment configured

旧rs到新rs

bash 复制代码
[root@k8s-1 probe]# kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     1            3           5d20h
[root@k8s-1 probe]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-6bb46d885f   1         1         0       16s
nginx-deployment-8d545c96d    3         3         3       5d20h
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS              RESTARTS        AGE
nginx-deployment-6bb46d885f-pksq5   0/1     ContainerCreating   0               73s
nginx-deployment-8d545c96d-5gb56    1/1     Running             1 (4d15h ago)   5d2h
nginx-deployment-8d545c96d-5kmtz    1/1     Running             1 (4d15h ago)   5d2h
nginx-deployment-8d545c96d-bjbmw    1/1     Running             1 (4d15h ago)   5d2h

# 手动删除旧rs
[root@k8s-1 probe]# kubectl delete rs nginx-deployment-8d545c96d
replicaset.apps "nginx-deployment-8d545c96d" deleted
[root@k8s-1 probe]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-6bb46d885f   3         3         3       3m4s
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS              RESTARTS         AGE
nginx-deployment-6bb46d885f-hfvdb   1/1     Running             0                31s
nginx-deployment-6bb46d885f-p2ckv   1/1     Running             0                63s
nginx-deployment-6bb46d885f-pksq5   1/1     Running             0                3m6s

变更镜像版本,rs也会变

bash 复制代码
[root@k8s-1 probe]# vim nginx.yaml
[root@k8s-1 probe]# kubectl apply -f nginx.yaml 
deployment.apps/nginx-deployment configured
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS              RESTARTS         AGE
nginx-deployment-6bb46d885f-hfvdb   1/1     Running             0                3m5s
nginx-deployment-6bb46d885f-p2ckv   1/1     Running             0                3m37s
nginx-deployment-6bb46d885f-pksq5   1/1     Running             0                5m40s
nginx-deployment-8d545c96d-h4gmc    0/1     ContainerCreating   0                2s

[root@k8s-1 probe]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-6bb46d885f   2         2         2       5m46s
nginx-deployment-8d545c96d    2         2         1       8s
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS              RESTARTS         AGE
nginx-deployment-6bb46d885f-p2ckv   1/1     Running             0                3m45s
nginx-deployment-6bb46d885f-pksq5   1/1     Terminating         0                5m48s
nginx-deployment-8d545c96d-4znt2    1/1     Running             0                6s
nginx-deployment-8d545c96d-8zqqs    0/1     ContainerCreating   0                1s
nginx-deployment-8d545c96d-h4gmc    1/1     Running             0                10s

[root@k8s-1 probe]# kubectl get pod
NAME                               READY   STATUS      RESTARTS         AGE
nginx-deployment-8d545c96d-4znt2   1/1     Running     0                22s
nginx-deployment-8d545c96d-8zqqs   1/1     Running     0                17s
nginx-deployment-8d545c96d-h4gmc   1/1     Running     0                26s

二、版本回滚

回滚本质是 "反向滚动升级",也可直接修改yaml文件

bash 复制代码
[root@k8s-1 probe]# kubectl rollout history deployment
deployment.apps/nginx-deployment 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
[root@k8s-1 probe]# kubectl rollout undo deployment/nginx-deployment --to-revision=2
deployment.apps/nginx-deployment rolled back
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS              RESTARTS       AGE
nginx-deployment-6bb46d885f-wqgd4   0/1     ContainerCreating   0              6s
nginx-deployment-8d545c96d-4znt2    1/1     Running             0              2m57s
nginx-deployment-8d545c96d-8zqqs    1/1     Running             0              2m52s
nginx-deployment-8d545c96d-h4gmc    1/1     Running             0              3m1s

[root@k8s-1 probe]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-6bb46d885f   2         2         1       8m46s
nginx-deployment-8d545c96d    2         2         2       3m8s
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS              RESTARTS       AGE
nginx-deployment-6bb46d885f-2whgd   0/1     ContainerCreating   0              1s
nginx-deployment-6bb46d885f-c5rr4   1/1     Running             0              9s
nginx-deployment-6bb46d885f-wqgd4   1/1     Running             0              18s
nginx-deployment-8d545c96d-4znt2    1/1     Terminating         0              3m9s
nginx-deployment-8d545c96d-h4gmc    1/1     Running             0              3m13s

[root@k8s-1 probe]# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-6bb46d885f   3         3         3       9m9s
nginx-deployment-8d545c96d    0         0         0       3m31s
[root@k8s-1 probe]# kubectl get pod
NAME                                READY   STATUS             RESTARTS       AGE
nginx-deployment-6bb46d885f-2whgd   1/1     Running            0              22s
nginx-deployment-6bb46d885f-c5rr4   1/1     Running            0              30s
nginx-deployment-6bb46d885f-wqgd4   1/1     Running            0              39s
相关推荐
ShiLiu_mtx1 小时前
k8s - 7
云原生·容器·kubernetes
MonkeyKing_sunyuhua4 小时前
docker compose up -d --build 完全使用新代码打包的方法
docker·容器·eureka
醇氧5 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
匀泪8 小时前
云原生(LVS NAT模式集群实验)
服务器·云原生·lvs
70asunflower8 小时前
用Docker创建不同的容器类型
运维·docker·容器
CodeGolang9 小时前
Docker容器化部署Zabbix监控系统完整指南
docker·容器·zabbix
DolitD9 小时前
云流技术深度剖析:国内云渲染主流技术与开源和海外厂商技术实测对比
功能测试·云原生·开源·云计算·实时云渲染
ghostwritten10 小时前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes
[shenhonglei]20 小时前
灰度发布功能需求说明书
kubernetes
lpruoyu20 小时前
【Docker进阶-03】存储原理
docker·容器