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

在 Windows 集群上启动 Kubernetes

在使用 Rancher 提供的 自定义集群 时,Rancher 使用 RKE2 在现有节点上安装 Kubernetes。

在使用 Rancher 提供的 Windows 集群中,集群必须同时包含 Linux 和 Windows 节点。Kubernetes 控制平面只能在 Linux 节点上运行,而 Windows 节点只能担任工作角色。Windows 节点只能用于部署工作负载。

有关 Windows 支持的 Kubernetes 功能的摘要,请参见 Kubernetes 文档中的 Windows 上使用 Kubernetes 的支持功能和限制在 Kubernetes 中调度 Windows 容器的指南

SUSE® Rancher Prime: RKE2 Windows 集群的功能

以下是 Windows 集群提供的主要 RKE2 功能:

  • 使用 containerd 的 RKE2 Windows 容器

  • 直接从 Rancher UI 添加 Windows RKE2 自定义集群的配置

  • Windows RKE2 自定义集群的 Calico 和 Flannel CNI

  • Windows Server 的 SAC 版本(2004 和 20H2)包含在技术预览中

Rancher 默认允许 Windows 工作负载 Pod 在 Windows 和 Linux 工作器上部署。在 RKE2 中创建混合集群时,您必须编辑图表中的 nodeSelector 以将 Pod 定向到兼容的 Windows 节点。有关如何使用 nodeSelector 将 Pod 分配给节点的更多信息,请参阅 Kubernetes 文档

  • Windows RKE2 中的 HostProcess 容器在 Kubernetes v1.24.1 及更高版本中受支持。有关更多信息,请参见 上游文档

一般要求

Windows 节点的一般网络和操作系统要求与其他 Rancher 安装 相同。

操作系统要求

我们对 Windows Server 和 Windows 容器的支持与 Microsoft 官方的 LTSC(长期服务通道)和 SAC(半年度通道)生命周期相匹配。

有关 Windows Server 的支持生命周期日期,请参见 Microsoft 文档。

Kubernetes 版本

有关 Kubernetes 组件版本的更多信息,请参见 RKE2 版本的支持矩阵

节点要求

集群中的主机需要至少具备:

  • 2 核处理器

  • 5 GB 内存

  • 50 GB 磁盘空间

如果节点不满足这些要求,Rancher 将不会配置该节点。

网络要求

在配置新集群之前,请确保您已在接受入站网络流量的设备上安装了 Rancher。这是集群节点与 Rancher 通信所必需的。如果您尚未安装 Rancher,请在继续本指南之前参考 安装文档

Rancher 使用 Calico 和 Flannel 作为网络提供者支持 Windows。

如果您正在为 AWS 虚拟私有云配置 DHCP 选项集,请注意在 domain-name 选项字段中只能指定一个域名。根据 DHCP 选项 文档:

某些 Linux 操作系统接受用空格分隔的多个域名。然而,其他 Linux 操作系统和 Windows 将该值视为单个域名,这会导致意外行为。如果您的 DHCP 选项集与具有多个操作系统的 VPC 关联,请仅指定一个域名。

在 VMware vSphere 上运行 Rancher,要求 ESXi 6.7u2 及以上版本

如果您在 VMware vSphere 上使用 Rancher,且 ESXi 版本为 6.7u2 或更高,并且使用 Red Hat Enterprise Linux 8.3、CentOS 8.3 或 SUSE Enterprise Linux 15 SP2 或更高版本,则必须禁用 vmxnet3 虚拟网络适配器的硬件卸载功能。如果不这样做,将导致不同集群节点之间的所有 Pod 网络连接因超时错误而失败。来自 Windows Pod 到运行在 Linux 节点上的关键服务(如 CoreDNS)的所有连接也将失败。外部连接也可能会失败。此问题是由于 Linux 发行版在 vmxnet3 中启用了硬件卸载功能,以及 vmxnet3 硬件卸载功能中的一个错误,导致丢弃访客覆盖流量的数据包。为了解决此问题,必须禁用 vmxnet3 硬件卸载功能。此设置在重启后不会保留,因此每次启动时都必须禁用。推荐的解决方案是在 /etc/systemd/system/disable_hw_offloading.service 创建一个 systemd 单元文件,该文件在启动时禁用 vmxnet3 硬件卸载功能。一个示例 systemd 单元文件,禁用 vmxnet3 硬件卸载功能,如下所示。请注意,<VM network interface> 必须根据主机 vmxnet3 网络接口进行自定义,例如:ens192

[Unit]
Description=Disable vmxnet3 hardware offloading feature

[Service]
Type=oneshot
ExecStart=ethtool -K <VM network interface> tx-udp_tnl-segmentation off
ExecStart=ethtool -K <VM network interface> tx-udp_tnl-csum-segmentation off
StandardOutput=journal

[Install]
WantedBy=multi-user.target

然后设置 systemd 单元文件的适当权限:

chmod 0644 /etc/systemd/system/disable_hw_offloading.service

最后,启用 systemd 服务:

systemctl enable disable_hw_offloading.service

架构要求

Kubernetes 集群管理节点(etcdcontrolplane)必须在 Linux 节点上运行。

worker 节点是您的工作负载将部署的地方,通常是 Windows 节点,但必须至少有一个在 Linux 上运行的 worker 节点,以便运行 Rancher 集群代理、DNS、度量服务器和与 Ingress 相关的容器。

我们建议使用下表中列出的最小三节点架构,但您可以随时添加更多 Linux 和 Windows 工作器,以扩展集群以实现冗余:

节点 操作系统 Kubernetes 集群角色 用途

节点 1

Linux(推荐使用 Ubuntu Server 18.04)

控制平面、etcd、工作器

管理 Kubernetes 集群

节点 2

Linux(推荐使用 Ubuntu Server 18.04)

工作器

支持 Rancher 集群代理、度量服务器、DNS 和集群的 Ingress。

节点 3

Windows(需要 Windows Server 核心版本 1809 或更高版本,推荐使用 2022 版本)

工作器

运行您的 Windows 容器

容器要求

Windows 要求容器必须在与其部署的 Windows Server 版本相同的版本上构建。因此,容器必须在 Windows Server 核心版本 1809 或更高版本上构建。如果您有为早期 Windows Server 核心版本构建的现有容器,则必须在 Windows Server 核心版本 1809 或更高版本上重新构建。

云提供商特定要求

如果您在集群中设置了 Kubernetes 云提供商,则需要一些额外的步骤。如果您希望利用云提供商的能力,例如自动配置存储、负载均衡器或其他基础设施,您可能想要设置云提供商。有关如何配置满足先决条件的云提供商节点集群的详细信息,请参阅 此页面

如果您使用的是 GCE(Google 计算引擎)云提供商,则必须执行以下操作:

  • 通过遵循 这些步骤cluster.yml 中启用 GCE 云提供商。

  • 在 Rancher 中配置集群时,在 Rancher UI 中选择 自定义云提供商 作为云提供商。

教程:如何创建支持 Windows 的集群

本教程描述了如何创建一个 Rancher 提供的集群,该集群在 推荐架构 中有三个节点。

要设置支持 Windows 节点和容器的集群,您需要完成以下任务。

1.配置主机

要开始在支持 Windows 的现有节点上配置集群,请准备您的主机。

您的主机可以是:

  • 云托管的虚拟机

  • 来自虚拟化集群的虚拟机

  • 裸机服务器

您将配置三个节点:

  • 一个 Linux 节点,管理 Kubernetes 控制平面,存储您的 etcd,并可选地作为工作器。

  • 第二个 Linux 节点,将作为另一个工作器。

  • Windows 节点,将作为工作器运行您的 Windows 容器。

节点 操作系统

节点 1

Linux(推荐使用 Ubuntu Server 18.04)

节点 2

Linux(推荐使用 Ubuntu Server 18.04)

节点 3

Windows(需要 Windows Server 核心版本 1809 或更高版本,推荐使用 2022 版本)

如果您的节点由 云提供商 托管,并且您希望获得诸如负载均衡器或持久存储设备等自动化支持,则您的节点有额外的配置要求。有关详细信息,请参见 选择云提供商

2.在现有节点上创建集群

在现有节点上创建 Windows 集群的说明与一般 创建自定义集群的说明 非常相似,但有一些特定于 Windows 的要求。

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

  2. 集群 页面,点击 创建

  3. 单击 自定义

  4. 集群名称 字段中输入您的集群名称。

  5. 在*Kubernetes 版本*下拉菜单中,选择一个受支持的 Kubernetes 版本。

  6. 在*容器网络*字段中,选择*Calico*或*Flannel*。

  7. 单击*创建*。

3.向集群添加节点

本节描述如何将您的 Linux 和工作节点注册到集群。您将在每个节点上运行一个命令,该命令将安装 rancher-system-agent,并允许 Rancher 管理每个节点。

添加Linux主节点

在本节中,我们在Rancher UI上填写一个表单,以获取在Linux主节点上安装Rancher代理的自定义命令。然后我们将复制该命令并在Linux主节点上运行,以在集群中注册该节点。

您集群中的第一个节点应为具有*控制平面*和*etcd*角色的Linux主机。至少必须为该节点启用这两个角色,并且在添加Windows主机之前,必须将该节点添加到您的集群中。

  1. 集群创建后,导航到*注册*选项卡。

  2. 在*步骤1*的*节点角色*部分,选择所有三个角色。虽然您可以仅选择*etcd*和*控制平面*角色,但我们建议选择所有三个。

  3. 可选:如果您点击*显示高级*,可以配置其他设置,例如指定IP地址、覆盖节点主机名,或向节点添加 标签污点

  4. 在*步骤2*的*注册*部分,将屏幕上显示的命令复制到剪贴板。

  5. SSH进入您的Linux主机并运行您复制到剪贴板的命令。

结果:

您的集群已创建,其状态为*正在更新*。Rancher 正在启动您的集群。

节点注册并出现在*机器*选项卡下可能需要几分钟。

一旦其状态更改为*活动*,您将能够访问集群。

添加Linux工作节点

在本节中,我们运行一个命令将Linux工作节点注册到集群。

在集群的初始配置后,您的集群只有一个Linux主机。接下来,我们添加另一个Linux`worker`主机,该主机将用于支持您的集群的_Rancher集群代理_、指标服务器DNS_和_入口

  1. 集群创建后,导航到*注册*选项卡。

  2. 在*步骤1*的*节点角色*部分,选择*工作节点*。

  3. 可选:如果您点击*显示高级*,可以配置其他设置,例如指定IP地址、覆盖节点主机名,或向节点添加 标签污点

  4. 在*步骤2*的*注册*部分,将屏幕上显示的命令复制到剪贴板。

  5. SSH进入您的Linux主机并运行您复制到剪贴板的命令。

结果:

*Worker*角色已安装在您的Linux主机上,节点与Rancher注册。节点注册到您的集群可能需要几分钟。

Linux工作节点的污点

对于每个添加到集群中的Linux工作节点,将添加以下污点。通过将此污点添加到Linux工作节点,任何添加到Windows集群的工作负载将自动调度到Windows工作节点。如果您想将工作负载专门调度到Linux工作节点,您需要为这些工作负载添加容忍。

污点键 污点值 污点效果

cattle.io/os

linux

NoSchedule

添加Windows工作节点

在本节中,我们运行一个命令将Windows工作节点注册到集群。

添加Windows工作节点的注册命令仅在集群运行Linux etcd、控制平面和工作节点后出现。

  1. 集群创建后,导航到*注册*选项卡。

  2. 在*步骤1*的*节点角色*部分,选择*工作节点*。

  3. 可选:如果您点击*显示高级*,可以配置其他设置,例如指定IP地址、覆盖节点主机名,或向节点添加 标签污点

  4. 在*步骤2*的*注册*部分,将屏幕上显示的Windows工作节点的命令复制到剪贴板。

  5. 使用您首选的工具登录到Windows主机,例如 Microsoft Remote Desktop。以管理员身份在*PowerShell控制台*中运行复制到剪贴板的命令。

  6. 可选:如果您想向集群添加更多Windows节点,请重复这些说明。

结果:

*Worker*角色已安装在您的Windows主机上,节点与Rancher注册。节点注册到您的集群可能需要几分钟。

您现在拥有一个Windows Kubernetes集群。

可选的后续步骤

创建集群后,您可以通过Rancher UI访问它。作为最佳实践,我们建议设置这些访问集群的替代方式:

  • *使用kubectl CLI访问您的集群:*按照这些步骤在您的工作站上使用kubectl访问集群。在这种情况下,您将通过Rancher服务器的身份验证代理进行身份验证,然后Rancher将连接您到下游集群。此方法允许您在没有Rancher UI的情况下管理集群。

  • *使用授权的集群端点,通过kubectl CLI访问您的集群:*按照这些步骤直接使用kubectl访问您的集群,而无需通过Rancher服务器进行身份验证。我们建议设置这种替代方法来访问您的集群,以便在无法连接到Rancher的情况下,您仍然可以访问集群。

Azure中存储类的配置。

如果您使用 Azure 虚拟机作为节点,可以将 Azure 文件 作为集群的 StorageClass。有关详细信息,请参阅本节