6-k8s-控制器版本管理

文章目录

    • 一、概念介绍
    • 二、配置介绍
    • 三、版本生成测试
    • 四、版本回滚测试

一、概念介绍

  1. 什么是控制器:在k8s中,控制器是一种用于控制和管理Pod的管理器,包括Deployment、ReplicaSet、StatefulSet等。

  2. 什么是控制器版本管理:是指对于同一个控制器,在进行更新和回滚操作时,可以记录和管理相应的版本信息。每个版本都会有一个固定的版本号,以及与此版本相关的配置和参数信息。这样,当需要回滚到某个版本时,可以很方便地找到相应的版本进行操作,而且也不会出现配置信息丢失的情况。

  3. 控制器版本如何生成:当执行kubectl apply或edit命令来更新一个控制器时,默认情况下会创建一个新的版本,而之前的版本会被保留。通过kubectl rollout history命令可以查看控制器的版本历史记录,并且可以基于版本号进行回滚操作。

  4. 控制器版本管理优势:控制器版本管理能够提高系统的可靠性和稳定性。在进行更新操作时,k8s会保存历史相关版本,新发布的版本有问题,可以迅速回滚到之前的版本,从而避免应用程序因为操作失误或者意外故障而出现问题。

二、配置介绍

  1. 控制器版本配置:spec.revisionHistoryLimit

    ps:当超过设置的数量,旧的版本将会被清除。如果设置为0,则无法进行回滚
    6-k8s-控制器版本管理_第1张图片

  2. statefulset控制器更新策略

    ps:利用滚动更新中的partition属性,可以实现简易的灰度发布的效果。例如我们有5个pod如果当前 partition设置为3那么此时滚动更新时,只会更新那些序号>=3的pod。利用该机制,我们可以通过控制partition的值,来决定只更新其中—部分pod,确认没有问题后再主键增大更新的pod数量,最终实现全部pod更新

    #默认更新策略:
      updateStrategy:
        rollingUpdate:
          partition: 0         
        type: RollingUpdate    #1.RollingUpdate 滚动更新:从下往上更新,倒序更新。2.OnDelete 手动更新,需要删除一个pod才会触发更新策略
    

三、版本生成测试

  1. 创建nginx控制器:kubectl create deployment nginx --image=nginx

  2. 修改配置,添加存活探针:kubectl edit deployment nginx

            livenessProbe:
              httpGet:
                path: /started.html
                port: 80
              failureThreshold: 3
              periodSeconds: 10
              successThreshold: 1
              timeoutSeconds: 5
    
  3. 每次修改deployment后,都会生成一个新的Replicaset控制器:kubectl get rs
    在这里插入图片描述

  4. 查看历史版本信息:kubectl rollout history deployment/nginx
    在这里插入图片描述

  5. 查看历史版本,某个版本的具体信息:kubectl rollout history deployment/控制器 --revision=版本号

    ps:可以看出版本1版本2的区别,就是添加了存活探针配置
    6-k8s-控制器版本管理_第2张图片

四、版本回滚测试

  1. 回退到版本1:kubectl rollout undo deployment/控制器 --to-revision=版本号
    在这里插入图片描述

  2. 查看版本滚动情况:kubectl rollout status deployment 控制器
    在这里插入图片描述

  3. 再次查看版本历史:kubectl rollout history deployment/nginx

    ps:可以看到版本1被移除了,新增了版本3。实际上版本3就是版本1,因为是回滚版本。
    在这里插入图片描述

  4. 由于有的时候我们需要修改很多次资源配置,如果我们只想产生一次资源历史版本,则可以再修改前先暂停记录版本,等待升级版本结束后,再重新启用

    1. 暂停记录版本:kubectl rollout pause deploy  控制器
    2. 重新启用版本:kubectl rollout  resume  deploy  控制器
    

你可能感兴趣的:(k8s学习笔记,kubernetes,docker,容器)