升级到最新版本的 Rancher 之后,下游 Kubernetes 集群可以升级为 Rancher 支持的最新的 Kubernetes 版本。
Rancher 将使用 RKE(Rancher Kubernetes Engine)作为库来创建和编辑 RKE 集群。有关为 RKE 集群配置升级策略的更多信息,请参考RKE 文档。
新功能
从 Rancher v2.3.0 开始,Rancher 添加了 Kubernetes 元数据功能,该功能允许在不升级 Rancher 的情况下,获取到 Kubernetes 补丁版本。有关详细信息,请参阅关于 Kubernetes 元数据的部分。
从 Rancher v2.4.0 开始,
- 添加了将 K3s Kubernetes 集群导入 Rancher 的功能,以及在编辑这些集群时升级 Kubernetes 的功能。有关详细信息,请参阅关于导入集群的部分。
- Rancher UI 中提供了用于配置 RKE 集群升级策略的新高级选项:最大不可用工作节点和驱散节点。这些选项利用了 RKE v1.1.0 的新的集群升级功能,其中节点可以进行滚动升级,以便在某些特殊情况下,保障在集群升级期间集群和应用的可用性。
经过测试的 Kubernetes 版本
在发布新版本的 Rancher 之前,将会对 Kubernetes 的最新次要版本进行了测试,以确保兼容性。例如,Rancher v2.3.0 中以及验证了 Kubernetes v1.15.4,v1.14.7 和 v1.13.11。有关在每个 Rancher 版本上测试过哪个版本的 Kubernetes 的详细信息,请参阅支持维护条款。
升级的工作原理
RKE v1.1.0 更改了集群升级方式。
在这一部分的 RKE 文档中,您将了解编辑或升级 RKE Kubernetes 集群时会发生什么。
升级的最佳实践
Rancher v2.4+
升级集群的 Kubernetes 版本时,我们建议您:
- 备份集群,保存集群快照。
- 启动 Kubernetes 升级。
- 如果升级失败,请在 Rancher UI 中编辑集群,将 Kubernetes 版本修改为之前的版本,并单击保存。
- 从 etcd 快照还原集群。在还原之前,请确保您的集群正在运行升级之前的 Kubernetes 版本。
还原操作将在处于非健康状态或非 active
状态的集群上进行。
Rancher v2.4 之前的版本
升级集群的 Kubernetes 版本时,我们建议您:
- 备份集群,保存集群快照。
- 查看集群 YAML,记下当前的 Kubernetes 版本。
- 启动 Kubernetes 升级。
- 如果升级失败,编辑集群 YAML,修改 Kubernetes 版本到之前的版本。
- 从 etcd 快照还原集群。
注意:用户无法在 Rancher UI 中通过表单来还原 Kubernetes 版本。
升级 Kubernetes 版本
先决条件:
- 以下选项仅适用于 RKE 集群和导入的 K3s Kubernetes 集群。
- 升级 Kubernetes 之前,请备份您的集群。
- 从全局视图中,找到要升级 Kubernetes 版本的集群。选择 省略号 > 编辑。
- 点开集群选项。
- 从 Kubernetes 版本下拉菜单中,选择要用于集群的 Kubernetes 版本。
- 单击保存。
结果: 集群开始升级 Kubernetes 版本。
滚回 Kubernetes 版本
自 v2.4 起可用
可以使用备份将集群还原到先前的状态,并使用之前的 Kubernetes 版本。有关更多信息,请参阅以下部分:
Rancher v2.4.0 之前的版本中,需要编辑 YAML 才能回滚 Kubernetes 版本。
配置升级策略
从 RKE v1.1.0 开始,升级功能加入了一些新选项,您可以控制升级过程的一些细节,例如,您可以配置最大不可用工作节点数量、先驱散节点再升级集群、保证升级期间应用的可用性、配置升级策略等。如果满足某些条件和要求,则可以使用这些选项在集群升级期间保障集群的 Kubernetes 组件和业务应用的可用性。
可以在 Rancher UI 中通过表单来配置升级策略,也可以通过编辑cluster.yml
来配置。通过编辑cluster.yml
,可以使用更多高级选项。
在 Rancher UI 中配置最大不可用工作节点数量
从 Rancher UI 中,可以配置最大不可用工作节点的数量。在集群升级过程中,将按此大小批量升级工作节点。
默认情况下,最大不可用工作节点数为所有工作节点的 10%。可以通过百分比或整数的形式配置最大不可用工作节点数。当定义为百分比时,批量处理的节点数会四舍五入到最接近的节点,但最小值不会小于 1。
- 转到 Rancher UI 中的集群视图。
- 单击省略号>编辑。
- 在高级选项部分中,转到最大不可用工作节点数字段。输入批量升级的工作节点的百分比。(可选)从下拉菜单中选择数量,然后输入最大不可用工作节点的整数。
- 单击保存。
结果: 集群已更新为使用新的升级策略。
先驱散节点再升级集群
默认情况下,在升级每个节点之前,RKE 会暂停(cordons)节点。默认情况下,不会对节点进行驱散(drain)。如果在集群配置中启用了驱散功能,则 RKE 将在升级节点之前暂停并驱散节点。
- 转到 Rancher UI 中的集群视图。
- 单击省略号>编辑。
- 在高级选项部分中,转到驱散字段,然后单击是。
- 选择安全或激进的驱散选项。有关每个选项的更多信息,请参考本节。
- (可选)配置优雅停止时长。优雅停止时长是分配给每个 Pod 进行清理的超时时间,因此 Pod 将有机会优雅地退出。Pod 可能需要完成所有未完成的请求,回滚事务或将状态保存到某些外部存储。如果此值为负数,则将使用每个 Pod 中自己定义的优雅停止时长。
- (可选)配置超时,该超时是驱散节点的最长的等待的时间。超过这个时间后,即使无法完成驱散节点,也将对节点进行升级。
- 单击保存。
结果: 集群已更新为使用新的升级策略。
注意: 从 Rancher v2.4.0 开始,存在一个已知问题,Rancher UI 将不会显示 etcd 节点和控制面节点被驱散了的状态,即使它们已被成功驱散了。
在升级期间保证应用的可用性
自 RKE v1.1.0 起可用
在 RKE 文档 中,您将了解在升级集群时,为防止应用宕机的要求。
在 cluster.yml 中配置升级策略
通过编辑cluster.yml
,可以使用更多高级升级策略配置选项。
有关详细信息,请参阅 RKE 文档中的配置升级策略。其中也包括了用于配置升级策略的cluster.yml
示例。
故障排查
如果节点在升级后没有出现,则rke up
命令会报错。
如果升级前,不可用节点的数量超过了配置的最大不可用数量,则不会开始进行升级。
如果升级停止了,则可能需要修复不可用的节点或将其从集群中删除,然后才能继续升级。
发生故障的节点可能处于许多不同的状态:
- 关机
- 不可用
- 升级过程中,用户清理了节点,因此节点上没有 kubelet
- 升级本身失败
如果在升级过程中达到了最大不可用管理面节点数,则 Rancher 中的下游集群将停留在Updating
状态,并且不会继续升级任何其他控制平面节点。如果其中一个节点可用,它将继续评估不可用节点的数量。如果无法修复该节点,则必须移除该节点才能继续升级。