
Kubernetes实战(十)-升级和回滚(Deployment)
创建新版本的 Deployment:在新的版本下启动一个新的 Deployment 资源,以便镜像拉取和配置验证均可以在不影响现有服务的前提下完成。 预热(摊开):在进行全面升级之前,可以将部分 Pod 进行转换,以减少全局性的服务中断风险。 逐步升级(滚动更新):使用 Kubernetes 的标签机制,对 Pod 进行筛选和逐一替换,实现子集 Pod 的可以完全平滑过渡。 验证(灰度发布):在确保新版本稳定性的前提下,逐步增加 robes down 的比例。 全量升级:当新版本被完全验证稳定后,全量替换旧版本,并重启所有服务。 回滚:如果在上述过程中出现问题,可以选择回滚到最后一个稳定版本,确保集群的完整性。
发布日期:2025-04-03 11:21:46
浏览次数:8
分类:精选文章
本文共 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 会被自动终止,确保服务连续性。滚动升级的实施过程非常流畅,因此在集群规模较大时依然能够保持服务可用性。
滚动升级的过程主要包括以下几个步骤:
值得注意的是,滚动升级过程中的每个步骤都必须精准执行,以确保集群的自愈能力。这样可以避免因扩大规模而导致的服务中断。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月20日 16时12分57秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LangSmith的简单介绍
2023-01-30
laradock 安装使用 kafka
2023-01-30
Laradock在window上使用的坑
2023-01-30
Laravel 5.3 不同用户表登录认证-优化
2023-01-30