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
相关推荐
fengkai454513 分钟前
十二、Redis -2
运维·数据库·redis·容器
DolitD2 小时前
3D应用多实例并发中的GPU隔离技术路径分析
容器·gru·接口隔离原则
姜鱼问生4 小时前
docker exec 排查容器问题:从日志到进程
运维·网络·数据库·docker·容器
小匠石钧知6 小时前
07_在k8s集群中安装ingress-nginx
nginx·容器·kubernetes·ingress
零基础1236 小时前
Docker 部署实战:从入门到精通
docker·容器
承渊政道7 小时前
自建服务越来越多怎么管理?Docker部署Flare,搭一个自己的数字入口
运维·docker·容器·内网穿透·cpolar·nas·flare
芷栀夏8 小时前
极空间部署Photopea:Docker运行、网页修图与多设备使用
运维·docker·容器
openFuyao20 小时前
新增Agent沙箱调度能力!openFuyao v26.09社区发行版上线,AI原生基础设施能力进一步升级
云原生·ai-native·ai推理·openfuyao·多样化算力集群软件
谢亮_vipxieliang20 小时前
Kubernetes 1.36 深度解读:从 kubelet 安全到 GPU 原生调度的 70 项改进
安全·kubernetes·kubelet
阿里云云原生1 天前
云效工作项智能优化:先澄清,再开工
云原生