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
相关推荐
云川之下9 小时前
【k8s】NAD(NetworkAttachmentDefinition)与SR‑IOV‑Operator 关系
云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…12 小时前
K8S实战:NFS+StorageClass+PV/PVC+Deployment
运维·云原生·容器·kubernetes·storageclass·linux运维·持久卷
三言老师12 小时前
CentOS7.9 + Kubernetes 1.18.20 -清理所有 docker / containerd 残留
docker·容器·kubernetes
circuitsosk12 小时前
从Docker到Kubernetes:AI应用服务化与弹性伸缩的落地实践
人工智能·docker·kubernetes·ai应用部署
AAA@峥13 小时前
K8s 配置管理实战:ConfigMap 与 Secret 完整使用指南
kubernetes·云计算
showyoui14 小时前
K8s 集群迁移踩坑:Istio 升级后 nginx 403
网络·docker·kubernetes·istio·service_mesh
海兰14 小时前
云原生持续交付平台 Zadig 在 Ubuntu 24.04 上的部署及使用指南
linux·ubuntu·云原生
云川之下15 小时前
【k8s】sriov‑device‑plugin、sriov‑network‑config‑daemon详解
云原生·容器·kubernetes
张忠琳1 天前
【NPU】Ascend Device Plugin —Part 6 K8s客户端 + 重复检测模块 超深度源码分析之二
云原生·容器·kubernetes·npu·docker device
雨声不在1 天前
私有 Docker Registry 排障实录:两个隐蔽的坑
docker·容器