博客
关于我
Kubernetes实战(十)-升级和回滚(Deployment)
阅读量:802 次
发布时间:2023-01-29

本文共 1231 字,大约阅读时间需要 4 分钟。

Kubernetes 提供了为容器升级和回滚的功能,当集群中的某个服务需要升级时,我们需要停止目前与该服务相关所有的 Pod,然后根据改动后的内容创建新的 Pod。如果集群规模较大,这个工作将变成一个挑战,而且先全部停止然后逐步升级的方式会导致较长时间的服务不可用。Kubernetes 提供了滚动升级功能来解决上述问题,同时如果在升级过程中出现了差错,可以通过回滚功能回滚到之前部署的任意版本。

Deployment 的升级

以 Deployment类资源文件 nginx-deploy.yaml 为例:

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx-deploy  labels:    k8s-app: nginx-demospec:      selector:        matchLabels:          app: nginx      replicas: 3      template:        metadata:          labels:            app: nginx        spec:          containers:          - name: nginx            image: nginx:1.7.9            ports:            - containerPort: 80

滚动升级是解决大规模集群升级挑战的核心功能之一。传统的方式是直接停止所有相关 Pod,随后重新创建新的 Pod,这会导致服务中断时间过长。在 Kubernetes 中,滚动升级实现了从“全部停机”到“逐步过程”的升级,同时保留了旧版本的 Pod,以便快速应对升级过程中的问题。当新版本部署完成后,旧版本的 Pod 会被自动终止,确保服务连续性。滚动升级的实施过程非常流畅,因此在集群规模较大时依然能够保持服务可用性。

滚动升级的过程主要包括以下几个步骤:

  • 创建新版本的 Deployment:在新的版本下启动一个新的 Deployment 资源,以便镜像拉取和配置验证均可以在不影响现有服务的前提下完成。
  • 预热(摊开):在进行全面升级之前,可以将部分 Pod 进行转换,以减少全局性的服务中断风险。
  • 逐步升级(滚动更新):使用 Kubernetes 的标签机制,对 Pod 进行筛选和逐一替换,实现子集 Pod 的可以完全平滑过渡。
  • 验证(灰度发布):在确保新版本稳定性的前提下,逐步增加 robes down 的比例。
  • 全量升级:当新版本被完全验证稳定后,全量替换旧版本,并重启所有服务。
  • 回滚:如果在上述过程中出现问题,可以选择回滚到最后一个稳定版本,确保集群的完整性。
  • 值得注意的是,滚动升级过程中的每个步骤都必须精准执行,以确保集群的自愈能力。这样可以避免因扩大规模而导致的服务中断。

    转载地址:http://uqryk.baihongyu.com/

    你可能感兴趣的文章
    nginx添加允许跨域header头
    查看>>
    nginx添加模块与https支持
    查看>>
    nginx状态监控
    查看>>
    Nginx用户认证
    查看>>
    Nginx的location匹配规则的关键问题详解
    查看>>
    Nginx的Rewrite正则表达式,匹配非某单词
    查看>>
    Nginx的使用总结(一)
    查看>>
    Nginx的使用总结(三)
    查看>>
    Nginx的使用总结(二)
    查看>>
    Nginx的使用总结(四)
    查看>>
    Nginx的可视化神器nginx-gui的下载配置和使用
    查看>>
    nginx的平滑升级方法:
    查看>>
    Nginx的是什么?干什么用的?
    查看>>
    Nginx的端口修改问题
    查看>>
    nginx看这一篇文章就够了
    查看>>
    Nginx知识详解(理论+实战更易懂)
    查看>>
    Nginx简单介绍
    查看>>
    Nginx系列6之-rewirte功能使用案例总结
    查看>>
    nginx线程模型理解
    查看>>
    nginx自动摘除和恢复后端服务,进行自动检测
    查看>>