Kubernetes 滚动更新实战指南(上)
在 Kubernetes 环境中,复制控制器(Replication Controller)的规范或容器镜像的更新是常见需求。若复制控制器基于旧镜像或定义文件创建,则需要对其进行更新。传统方式是删除旧的复制控制器并基于更新后的镜像或规范创建新的,但这会导致应用不可用。而 Kubernetes 提供的滚动更新机制,可在不中断服务的情况下完成更新。
1. 问题与解决方案
当复制控制器的 Docker 镜像或控制器规范更新时,传统的删除并重新创建方式会使应用不可用。而滚动更新机制采用“优雅终止”机制,在容器终止前提供回调,让容器有时间保存内存状态并关闭开放连接,确保应用的连续性。
滚动更新过程中,旧版本的复制控制器的 Pod 会逐个终止,同时新版本的 Pod 会逐个启动。例如,从复制控制器 RC1 滚动更新到 RC2,初始时 RC1 有三个 Pod,RC2 没有 Pod;接着 RC1 有两个 Pod,RC2 有一个 Pod;再接着 RC1 有一个 Pod,RC2 有两个 Pod;最终更新完成后,RC1 没有 Pod,RC2 有三个 Pod。
此外,滚动更新还采用了控制器/服务解耦的管理模式,遵循单一职责原则,允许在更新过程中多个控制器与同一个服务关联。
2. 环境设置
- 创建基于 Amazon Linux AMI 的 Amazon EC2 实例。
- 获取实例的公共 IP,并使用 SSH 登录:
ssh -i "docker.pem" ec2-user@5
Kubernetes滚动更新实战解析
超级会员免费看
订阅专栏 解锁全文
19

被折叠的 条评论
为什么被折叠?



