暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

第5节 K8S的Deployment控制器滚动升级

DevOps架构实战 2023-09-08
260

一、Deployment控制器核心

(1)、适合部署无状态的应用服务

(2)、用来管理pod和replicaset

(3)、上线部署、副本控制、滚动更新、回滚等功能

二、 K8S的Deployment控制器滚动升级  (金丝雀发布 or 灰度发布)

(1)、对各个实例批次进行单独更新,而非同一时刻对所有实例进行全部更新,达到不中断服务的更新升级方式

(2)、Deployment控制器 给旧版本(old_rs)副本数减少至0、给新版本(new_rs)副本数量增至期望值(replicas)

(3)、Deployment更新有两种方式

Recreate :删除全部旧的pod,然后创建新的pod

RollingUpdate:滚动升级更新,删除部分,更新部分,在整个更新过程中,存在两个版本的pod:分别是maxUnavailable 和 maxSurge

[root@master ~]# more deploy-rollout.yaml

 

apiVersion: apps/v1

kind: Deployment

metadata:

  name: haha-deploy

  namespace: dev

spec:

  replicas: 5

  revisionHistoryLimit: 5  #保留历史版本5

  strategy:

    type: RollingUpdate

  selector:

    matchLabels:

      app: haha-nginx-pod

  template:

    metadata:

      labels:

        app: haha-nginx-pod

    spec:

      containers:

      - name: haha-nginx

        image: nginx:1.20.0

1查看控制器参数

[root@master ~]# kubectl describe deploy haha-deploy -n dev

滚动升级

2nginx版本更新至1.23.0

[root@master ~]# kubectl set image deployment/haha-deploy haha-nginx=nginx:1.23.0 -n dev

备注:

追加 --record 以保存正在更改资源的 kubectl 命令,方便查看history版本列表修改命令

[root@master ~]# kubectl set image deployment/haha-deploy haha-nginx=nginx:1.23.0 -n dev --record=true

[root@master ~]# kubectl set image deployment/haha-deploy haha-nginx=nginx:1.20.0 -n dev --record=true

3动态查看升级过程,存在多个不同版本

[root@master ~]# kubectl get pods -n dev -w

4发布回滚

kubectl rollout 版本升级相关介绍

history 升级历史记录

undo 默认回滚上一版本,使用--to-revision回滚到指定版本

pause 暂停版本升级发布

resume 继续恢复刚暂停的版本升级

status 升级状态

 

查看历史版本列表

[root@master ~]# kubectl rollout history deployment/haha-deploy -n dev

查看具体某一个历史版本信息

[root@master ~]# kubectl rollout history deployment/haha-deploy -n dev --revision=2

回滚上一版本

[root@master ~]# kubectl rollout undo deployment/haha-deploy -n dev

查看升级情况

[root@master ~]# kubectl rollout status deployment/haha-deploy -n dev

回滚指定版本

[root@master ~]# kubectl rollout undo deployment/haha-deploy -n dev --to-revision=2


----------------------end---------------------

推荐阅读

1K8s最佳实践Kubernetes-Rancher2.x持续交付与自动化运维

2、第1节 Kubernetes名称空间介绍和资源操作实战

3、第2节 Kubernetes资源文件yaml参数介绍

4、第3节Kubernetes的Pod资源讲解实战

5、第4节 Kubernetes标签Label和标签选择器实战


如果本文对你有帮助的话,欢迎点赞&在看&转发,这对我继续分享&创作优质文章非常重要。感谢🙏🏻

文章转载自DevOps架构实战,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论