使用k8s 配置 RollingUpdate 滚动更新实现应用的灰度发布

方案实现方式:

RollingUpdate 滚动更新机制

当某个服务需要升级时,传统的做法是,先将要更新的服务下线,业务停止后再更新版本和配置,然后重新启动服务。

如果业务集群规模较大时,这个工作就变成了一个挑战,而且全部停止了服务,再逐步升级的方式会导致服务较长时间不可用。

针对这个问题,k8s提供了滚动更新(rolling-update)的方式来解决上述问题。

滚动更新是针对pod来操作的,它通过一次只更新一小部分副本,成功后,再更新更多的副本,最终完成所有副本的更新。

滚动更新的最大的好处是零停机,整个更新过程始终有副本在运行,从而保证了服务的连续性

spec:
  replicas: 5
  minReadySeconds: 120 #Pod被认为是可用状态的最小秒数,应用启动并注册nacos延迟时间。默认是0
  selector:
    matchLabels:
      run: httpservice
  strategy:
    rollingUpdate:
      #指定更新时最大扩展的pod数
      maxSurge: 2
      #指定可接受的不可用pod数
      maxUnavailable: 1
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpservice-deployment
spec:
  replicas: 5
  minReadySeconds: 120 #Pod被认为是可用状态的最小秒数,应用启动并注册nacos延迟时间。默认是0
  selector:
    matchLabels:
      run: httpservice
  strategy:
    rollingUpdate:
      #指定更新时最大扩展的pod数
      maxSurge: 2
      #指定可接受的不可用pod数
      maxUnavailable: 1
  template:
    metadata:
      labels:
        run: httpservice
    spec:
      containers:
        - name: http-service
          image: httpd:2.4.33
          ports:
            - containerPort: 80


 

apiVersion: v1
kind: Service
metadata:
  name: $IMG_NAME
  namespace: rz-dt
  labels:
    app: $IMG_NAME
spec:
  type: NodePort
  ports:
    - port: 8091
      nodePort: 31082 #service对外开放端口
  selector:
    app: $IMG_NAME
---
apiVersion: apps/v1
kind: Deployment #对象类型
metadata:
  name: $IMG_NAME #名称
  namespace: rz-dt
  labels:
    app: $IMG_NAME #标注
spec:
  replicas: 1 #运行容器的副本数,修改这里可以快速修改分布式节点数量
  progressDeadlineSeconds: 600 #在Deployment 在进度卡住6分钟后报告
  minReadySeconds: 120 #Pod被认为是可用状态的最小秒数。默认是0
  strategy:
    rollingUpdate:
      maxSurge: 1 #升级过程中激增Pod的最大数量
      maxUnavailable: 0 #升级过程中不可用Pod的最大数量
    type: RollingUpdate
  selector:
    matchLabels:
      app: $IMG_NAME
  template:
    metadata:
      labels:
        app: $IMG_NAME
    spec:
      containers: #docker容器的配置
        - name: $IMG_NAME
          env:
            - name: aliyun_logs_catalina
              value: stdout
          image: rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/$IMG_NAME:$IMG_TAG # pull镜像的地址 ip:prot/dir/images:tag
          imagePullPolicy: Always #pull镜像时机,
          #command: ["java","-Dserver.port=8055","-jar","/usr/local/cenobitor/k8s-springboot-demo.jar"]
          ports:
            - containerPort: 8091 #容器对外开放端口,需与springboot配置文件一致
          volumeMounts:
            - name: time-config
              mountPath: /etc/localtime
              readOnly: true
            - name: volume-logs
              mountPath: /logs
              subPath: logs
          resources:
            limits:
              cpu: 500m
              memory: 1Gi
            requests:
              cpu: 10m
              memory: 50Mi
      #从私有仓库拉取镜像凭证
      imagePullSecrets:
        - name: rz-dt-miyue-vpc
      volumes:
        - name: time-config
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: volume-logs
          persistentVolumeClaim:
            claimName: rz-dt-nas-volume-claim

相关推荐

  1. k8s配置pods滚动发布

    2024-01-24 13:42:02       9 阅读
  2. k8s通过编排文件,实现服务滚动更新

    2024-01-24 13:42:02       15 阅读
  3. K8S滚动更新守护进程集

    2024-01-24 13:42:02       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-24 13:42:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-24 13:42:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-24 13:42:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-24 13:42:02       18 阅读

热门阅读

  1. 1.23 力扣图论

    2024-01-24 13:42:02       34 阅读
  2. LeetCode 49 字母异位词分组

    2024-01-24 13:42:02       38 阅读
  3. 文心一言 VS ChatGPT

    2024-01-24 13:42:02       35 阅读
  4. ubuntu下使用python3的venv虚拟环境

    2024-01-24 13:42:02       38 阅读
  5. C语言大师(8)异常处理

    2024-01-24 13:42:02       28 阅读
  6. 查看现有的conda源

    2024-01-24 13:42:02       34 阅读
  7. HBase学习五:运维排障之宕机恢复

    2024-01-24 13:42:02       43 阅读
  8. 【FINEBI】finebi中常用图表类型及其适用场景

    2024-01-24 13:42:02       32 阅读
  9. 蓝桥杯-1矩阵切割(c/c++)

    2024-01-24 13:42:02       34 阅读
  10. 【AI】深度学习在编码中的应用(3)

    2024-01-24 13:42:02       29 阅读
  11. gin中使用validator做参数校验

    2024-01-24 13:42:02       40 阅读
  12. Redis-2

    Redis-2

    2024-01-24 13:42:02      35 阅读
  13. Python3多线程爬虫实例讲解

    2024-01-24 13:42:02       36 阅读