升级和回滚 Kubernetes

    Rancher 使用 RKE(Rancher Kubernetes Engine)来预置和编辑 RKE 集群。有关为 RKE 集群配置升级策略的更多信息,请参阅 RKE 文档

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

    升级的工作原理

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

    RKE 文档中,你将了解编辑或升级 RKE Kubernetes 集群时会发生的情况。

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

    1. 拍一张快照。
    2. 如果升级失败,请将集群恢复到升级前的 Kubernetes 版本。这可以通过选择恢复 etcd 和 Kubernetes 版本选项来实现。在恢复 etcd 快照 之前,这会将你的集群恢复到升级前的 kubernetes 版本。

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

    升级 Kubernetes 版本

    先决条件:

    • 以下选项适用于 和注册的 K3s Kubernetes 集群
    • 以下选项也适用于导入且已注册的 RKE2 集群。如果你从外部云平台导入集群但不注册,你将无法在 Rancher 中升级 Kubernetes 版本。
    • 在升级 Kubernetes 之前,先。
    1. 在左上角,单击 ☰ > 集群管理
    2. 集群页面中,进入要升级的集群,然后点击 ⋮ > 编辑配置
    3. Kubernetes 版本 下拉列表中,选择要用于集群的 Kubernetes 版本。
    4. 单击保存

    结果:已开始为集群升级 Kubernetes。

    你可以将集群恢复到使用先前 Kubernetes 版本的备份。有关详细信息,请参阅:

    配置升级策略

    你可以在 Rancher UI 中配置升级策略,也可以通过编辑 来配置策略。编辑 可以配置更多高级选项。

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

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

    要更改 worker 节点的默认数量或百分比:

    1. 在左上角,单击 ☰ > 集群管理
    2. 集群页面中,进入要升级的集群,然后点击 ⋮ > 编辑配置
    3. 单击保存

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

    默认情况下,RKE 会在升级之前封锁每个节点。默认情况下,会在升级期间被禁用。如果在集群配置中启用了清空​​,RKE 将在升级之前对节点进行封锁和清空。

    要在集群升级期间清空每个节点:

    1. 在左上角,单击 ☰ > 集群管理
    2. 集群页面中,进入要启用节点清空的集群,然后点击 ⋮ > 编辑配置
    3. 单击 ⋮ > 编辑
    4. 升级策略选项卡中,转到清空节点字段并单击。controlplane 和 worker 节点的清空是单独配置的。
    5. 配置如何删除 pod 的选项。有关每个选项的详细信息,请参阅本节
    6. (可选)配置宽限期。宽限期是给每个 pod 进行清理的超时时间,能让 pod 有机会优雅地退出。Pod 可能需要完成任何未完成的请求、回滚事务或将状态保存到某些外部存储。如果该值为负数,将使用 pod 中指定的默认值。
    7. (可选)配置超时,这是在清空放弃之前应该继续等待的时间。
    8. 单击保存

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

    升级和回滚 Kubernetes - 图2备注

    从 RKE v1.1.0 起可用

    RKE 文档中,你将了解在升级集群时防止应用停机的要求。

    你通过编辑 来获得更高级的升级策略配置选项。

    有关详细信息,请参阅 RKE 文档中的配置升级策略。这部分还包括一个用于配置升级策略的示例 。

    如果升级后节点没有出现, 命令会出错。

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

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

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

    • 关机
    • 不可用
    • 用户在升级过程中清空了节点,因此节点上没有 kubelet

    如果在升级过程中达到最大不可用节点数,Rancher 的下游集群将停留在更新中的状态,并且不会继续升级其他 controlplane 节点。它将继续评估不可用的节点集,以防其中一个节点变得可用。如果无法修复节点,则必须移除节点才能继续升级。