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

RKE1 到 SUSE® Rancher Prime: RKE2 Windows 的迁移指南

本文件的内容不在 Rancher 支持的 SLA 范围内。请谨慎操作。

本文件介绍了最终用户如何将其 Windows 工作负载从 RKE1 迁移到 RKE2。

RKE1 Windows 调度

RKE1 Windows 工作负载调度基于污点和容忍。

在 RKE1 Windows 集群中,每个 Linux 节点,无论其分配的角色如何,都将具有默认污点,除非工作负载配置了容忍,否则无法在其上调度工作负载。这是 RKE1 Windows 集群的一个主要设计特性,旨在仅运行 Windows 工作负载。

  • 默认 RKE1 Linux 节点 NoSchedule 污点:

apiVersion: v1
kind: Node
spec:
  ...
  taints:
  - effect: NoSchedule
    key: cattle.io/os
    value: linux

  • RKE1 Linux NoSchedule 工作负载的容忍

以下容忍将允许最终用户工作负载在 RKE1 Windows 集群的任何 Linux 节点上调度。这些容忍用于各种内核 Rancher 服务和工作负载。

apiVersion: apps/v1
kind: Deployment
spec:
  ...
  template:
    ...
    spec:
      tolerations:
      - effect: NoSchedule
        key: cattle.io/os
        operator: Equal
        value: linux

  • 根据最佳实践,任何在 Linux 节点上运行的最终用户工作负载将仅在具有工作角色的节点上调度:

apiVersion: apps/v1
kind: Deployment
spec:
  ...
  template:
    ...
    spec:
      tolerations:
      - effect: NoSchedule
        key: cattle.io/os
        operator: Equal
        value: linux
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - preference:
              matchExpressions:
              - key: node-role.kubernetes.io/worker
                operator: In
                values:
                - "true"
            weight: 100
      ...

SUSE® Rancher Prime: RKE2 Windows 调度

根据反馈和对混合工作负载支持的请求,RKE2 Windows 被设计为默认支持 Linux 和 Windows 工作负载。RKE2 调度默认依赖于节点选择器。这与 RKE1 有显著变化,因为 RKE2 中未包含污点和容忍。节点选择器是 RKE1 Windows 集群的关键部分,这使得您的工作负载迁移变得简单。

示例迁移

RKE1 到 SUSE® Rancher Prime: RKE2 Windows 工作负载

  • 迁移前 RKE1 Windows 部署:

apiVersion: apps/v1
kind: Deployment
spec:
  ...
  template:
    ...
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/os
                operator: NotIn
                values:
                - linux

  • 使用 NodeAffinity 迁移的 RKE2 Windows 部署:

apiVersion: apps/v1
kind: Deployment
...
spec:
  ...
  template:
    ...
    spec:
      ...
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: kubernetes.io/os
                    operator: In
                    values:
                      - windows

RKE1 Windows 集群的仅限 Linux 部署

在使用节点选择器和节点亲和性时,请注意以下事项:

  • 如果同时指定 nodeSelectornodeAffinity,则必须满足这两个条件,Pod 才能调度到节点上。

  • 如果您指定与单个 nodeSelectorTerms 相关的多个 matchExpressions,则只有在满足所有 matchExpressions 的情况下,Pod 才能调度到节点上。

  • 迁移前 RKE1 Windows 集群的仅限 Linux 部署,目标为 RKE1 Linux 工作节点:

apiVersion: apps/v1
kind: Deployment
spec:
  ...
  template:
    ...
    spec:
      tolerations:
      - effect: NoSchedule
        key: cattle.io/os
        operator: Equal
        value: linux
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            preference:
              matchExpressions:
              - key: node-role.kubernetes.io/worker
                operator: In
                values:
                - "true"

  • 使用节点选择器迁移的 RKE2 混合集群的仅限 Linux 部署,目标为 RKE2 Linux 工作节点:

apiVersion: apps/v1
kind: Deployment
spec:
  ...
  template:
    ...
    spec:
      nodeSelector:
        kubernetes.io/os: "linux"
        node-role.kubernetes.io/worker: "true"

  • 使用节点亲和性迁移的 RKE2 混合集群的仅限 Linux 部署,目标为 RKE2 Linux 工作节点:

 apiVersion: apps/v1
kind: Deployment
spec:
  ...
  template:
    ...
    spec:
       affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            preference:
              matchExpressions:
              - key: node-role.kubernetes.io/worker
                operator: In
                values:
                - "true"
            nodeSelectorTerms:
              - matchExpressions:
                  - key: kubernetes.io/os
                    operator: In
                    values:
                      - linux

RKE1 Windows 支持的 Windows Server 版本

长期服务通道 (LTSC)

  • Windows Server 2019 LTSC ✅ 将于 2024 年 1 月 9 日达到主流 EOL,2029 年 1 月 9 日达到扩展 EOL

半年度通道 (SAC)

  • Windows Server 20H2 SAC ❌ 已于 2022 年 8 月 9 日达到 EOL

  • Windows Server 2004 SAC ❌ 已于 2021 年 12 月 14 日达到 EOL

  • Windows Server 1909 SAC ❌ 已于 2021 年 5 月 11 日达到 EOL

  • Windows Server 1903 SAC ❌ 已于 2020 年 12 月 8 日达到 EOL

  • Windows Server 1809 SAC ❌ 已于 2020 年 11 月 10 日达到 EOL

SUSE® Rancher Prime: RKE2 Windows 支持的 Windows Server 版本

SUSE® Rancher Prime: RKE2 长期服务通道

  • Windows Server 2019 LTSC ✅ 将于 2024 年 1 月 9 日达到主流 EOL,2029 年 1 月 9 日达到扩展 EOL

  • Windows Server 2022 LTSC ✅ 将于 2026 年 10 月 13 日达到主流 EOL,并于 2031 年 10 月 13 日达到扩展 EOL

RKE2 不支持 SAC。

有关详细信息,请参见以下参考:

Kubernetes 版本支持

以下列出的所有版本均根据 Rancher v2.6.7 支持矩阵 受到 SLA 支持。未列出的任何版本应视为已达到 EOL,并且不受 SUSE 的 SLA 支持。

Rancher 2.5 与。Rancher 2.6 Windows 集群支持矩阵

  • RKE1 与。RKE2 Windows 集群支持的 Kubernetes 版本:*

Kubernetes 版本 RKE1 RKE2

1.18

1.19

1.20

1.21

1.22

1.23

1.24

1.25+

Rancher 2.5 与。Rancher 2.6 支持的 Kubernetes 版本,用于配置 RKE1 和 SUSE® Rancher Prime: RKE2 Windows 集群

Rancher 版本 Kubernetes 版本 RKE1 RKE2

2.5 - RKE1 配置

1.18 1.19 1.20

2.6 - RKE1 配置

1.18 1.19 1.20 1.21 1.22

2.6 - RKE2 配置

1.22 1.23 1.24 1.25+

将工作负载迁移到 SUSE® Rancher Prime: RKE2 Windows

参考 Rancher 2.5 与的表格。Rancher 2.6 Windows 集群支持矩阵 Rancher 2.5 与。Rancher 2.6 支持的 Kubernetes 版本用于配置 RKE1 和 RKE2 Windows 集群,您会发现 RKE1 和 RKE2 之间的 Kubernetes 版本重叠发生在 1.22。这是在遵循 Rancher 推荐的方法时迁移 RKE1 Windows 工作负载所需的基础版本。

Rancher 2.5 的就地升级

  1. 将 Rancher 版本升级到 v2.6.5 及以上。

  2. 将 RKE1 Windows 下游集群升级到 RKE1 v1.22,使用最新可用的补丁版本。

  3. 使用 RKE2 v1.22 配置一个新的 RKE2 Windows 下游集群,使用与 RKE1 Windows 集群相匹配的补丁版本。

  4. 开始将 Windows 工作负载从 RKE1 迁移到 RKE2 集群。

  5. 执行验证测试,以确保在将应用程序从 RKE1 迁移到 RKE2 时没有功能丧失或变化。

  6. 在成功进行验证测试后,您可以选择将 RKE2 1.22.x 集群升级到新的次要版本,例如 1.23 或 1.24。

将 Windows 工作负载迁移到新的 Rancher 环境

执行以下任一选项需要 Rancher v2.6.5 或更高版本。

当使用 RKE1 和 RKE2 的匹配 Kubernetes 补丁版本时:

  1. 使用 RKE2 v1.22 配置一个新的 RKE2 Windows 下游集群,使用与 RKE1 Windows 集群相匹配的补丁版本。

  2. 开始将 Windows 工作负载从 RKE1 迁移到 RKE2 集群。

  3. 执行验证测试,以确保在将应用程序从 RKE1 迁移到 RKE2 时没有功能丧失或变化。

  4. 在成功进行验证测试后,您可以选择将 RKE2 1.22.x 集群升级到新的次要版本,例如 1.23 或 1.24。

当使用 RKE2 的较新 Kubernetes 补丁版本时:

  1. 使用 RKE2 v1.23 或 v1.24 配置一个新的 RKE2 Windows 下游集群。

  2. 开始将 Windows 工作负载从 RKE1 迁移到 RKE2 集群。

  3. 执行验证测试,以确保在将应用程序从 RKE1 迁移到 RKE2 时没有功能丧失或变化。