本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

升级和回滚 Kubernetes

在升级到最新版本的 Rancher 后,下游 Kubernetes 集群可以升级为使用最新支持的 Kubernetes 版本。

Rancher 在配置和编辑 RKE 集群时将 RKE(Rancher Kubernetes Engine)作为库调用。有关配置 RKE 集群升级策略的更多信息,请参阅 RKE 文档

已测试的 Kubernetes 版本

在发布新版本的 Rancher 之前,会使用最新的小版本 Kubernetes 进行测试,以确保兼容性。有关每个 Rancher 版本测试了哪些 Kubernetes 版本的详细信息,请参阅 支持维护条款。

升级的工作原理

RKE v1.1.0 更改了集群升级的方式。

RKE 文档, 的这一部分中,您将了解编辑或升级 RKE Kubernetes 集群时会发生什么。

在升级集群的 Kubernetes 版本时,我们建议您:

  1. 创建快照。

  2. 启动 Kubernetes 升级。

  3. 如果升级失败,将集群恢复到升级前的 Kubernetes 版本。这可以通过选择 恢复 etcd 和 Kubernetes 版本 选项来实现。这将使您的集群恢复到升级前的 Kubernetes 版本,然后再恢复 etcd 快照。

恢复操作将在不处于健康或活动状态的集群上进行。

升级 Kubernetes 版本

先决条件:
  1. 在左上角,单击*☰ > 集群管理*。

  2. 集群 页面,转到您想要升级的集群并点击 ⋮ > 编辑配置

  3. Kubernetes 版本 下拉菜单中,选择您想要用于该集群的 Kubernetes 版本。

  4. 单击 保存

*结果:*Kubernetes 开始为该集群进行升级。

回滚

集群可以恢复到使用先前 Kubernetes 版本的备份。有关更多信息,请参考以下部分:

配置升级策略

从 RKE v1.1.0 开始,提供了额外的升级选项,以便您对升级过程进行更细粒度的控制。如果满足某些 条件和要求,这些选项可用于在集群升级期间保持应用程序的可用性。

升级策略可以在 Rancher UI 中配置,或通过编辑 cluster.yml 来配置。通过编辑 cluster.yml 可以获得更高级的选项。

在 Rancher UI 中配置最大不可用工作节点

在 Rancher UI 中,可以配置最大不可用工作节点的数量。在集群升级期间,工作节点将按此大小分批升级。

默认情况下,最大不可用工作节点数定义为所有工作节点的 10%。此数字可以配置为百分比或整数。当定义为百分比时,批量大小向下舍入到最接近的节点,最少为一个节点。

要更改工作节点的默认数量或百分比,

  1. 在左上角,单击*☰ > 集群管理*。

  2. 集群 页面,转到您想要升级的集群并点击 ⋮ > 编辑配置

  3. 在*升级策略*选项卡中,将*工作并发性*输入为固定数字或百分比。要获取此数字,可以取集群中的节点数并减去最大不可用节点数。

  4. 单击 保存

*结果:*集群已更新为使用新的升级策略。

在Rancher UI中启用升级期间的节点排空。

默认情况下,RKE 在升级每个节点之前会 封锁该节点。 排空在升级期间默认是禁用的。如果在集群配置中启用了排空,RKE 在升级之前将同时封锁和排空该节点。

要在集群升级期间启用每个节点的排空,

  1. 在左上角,单击*☰ > 集群管理*。

  2. 在*集群*页面,转到您想要启用节点排空的集群,然后单击*⋮ > 编辑配置*。

  3. 点击 ⋮ > 编辑

  4. 在*升级策略*选项卡中,转到*排空节点*字段并单击*是*。节点排空为控制平面和工作节点单独配置。

  5. 配置删除 Pods 的选项。有关每个选项的更多信息,请参阅本节。

  6. 可选地,配置一个宽限期。宽限期是给每个Pod清理的超时时间,以便它们有机会优雅地退出。Pods可能需要完成任何未完成的请求、回滚事务或将状态保存到某些外部存储。如果该值为负数,将使用 pod 中指定的默认值。

  7. 可选地,配置一个超时,该超时规定了排空操作在放弃前应继续等待的时间。

  8. 单击 保存

*结果:*集群已更新为使用新的升级策略。

  • 存在一个 已知问题,即 Rancher UI 不显示 etcd 和 controlplane 的状态为已排空,即使它们正在被排空。

  • 在升级过程中,即使没有用户可见的 YAML 更改,节点也可能被排空。如果更新了非动态配置文件或引入了新的`system-agent-installer`镜像,则可能会发生这种情况。在这种情况下,Rancher 会生成一个新的升级计划,从而导致新的计划哈希。当`Upgrade Strategy`设置为`Drain nodes`时,此计划更改可能会触发节点排空。

在升级期间保持应用程序的可用性

RKE 文档的这一部分,中,您将了解在升级集群时防止应用程序停机时间的要求。

在 cluster.yml 中配置升级策略

通过编辑`cluster.yml`,可以获得更高级的升级策略配置选项。

有关详细信息,请参阅 RKE 文档中的 配置升级策略。该部分还包括一个配置升级策略的示例`cluster.yml`。

查错

如果节点在升级后未能启动,`rke up`命令将出错。

如果不可用节点的数量超过配置的最大值,则不会进行任何升级。

如果升级停止,您可能需要修复不可用节点或将其从集群中去除,然后才能继续升级。

失败的节点可能处于多种不同状态:

  • 已关闭

  • 不可用

  • 用户在升级过程中排空节点,因此节点上没有 kubelet

  • 升级本身失败

如果在升级过程中达到最大不可用节点数量,Rancher 用户集群将停留在更新状态,无法继续升级其他控制平面节点。它将继续评估不可用节点的集合,以防其中一个节点变为可用。如果节点无法修复,您必须去除该节点以继续升级。