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
相关推荐
Java后端的Ai之路2 小时前
Kubernetes是什么?(小白入门版)
云原生·容器·kubernetes·教程
heimeiyingwang2 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构
木雷坞3 小时前
视觉算法环境 Docker 镜像拉取失败排查
运维·人工智能·docker·容器
空中海3 小时前
第二篇:注册中心篇 — Nacos 与 Eureka 服务注册发现
spring boot·云原生·eureka
瀚高PG实验室3 小时前
安全版V4.5版本docker容器license过期问题处理步骤
安全·docker·容器·瀚高数据库
007张三丰4 小时前
系统架构设计师范文4:论微服务架构及其应用
微服务·云原生·架构·软考·系统架构设计师
AI攻城狮5 小时前
Human-in-the-Loop 是生产环境不可妥协的环节
云原生
筱_智5 小时前
Docker学习-超详细-通俗易懂(从入门到精通)
学习·docker·容器
EAIReport5 小时前
Docker与K8s核心解析:共同性、差异性及实战适配指南
docker·容器·kubernetes
长安链开源社区5 小时前
动手开发 | 如何通过k8s部署长安链
云原生·容器·kubernetes·区块链