|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
在 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 中创建混合集群时,您必须编辑图表中的 |
-
Windows RKE2 中的 HostProcess 容器在 Kubernetes v1.24.1 及更高版本中受支持。有关更多信息,请参见 上游文档。
一般要求
Windows 节点的一般网络和操作系统要求与其他 Rancher 安装 相同。
操作系统要求
我们对 Windows Server 和 Windows 容器的支持与 Microsoft 官方的 LTSC(长期服务通道)和 SAC(半年度通道)生命周期相匹配。
有关 Windows Server 的支持生命周期日期,请参见 Microsoft 文档。
Kubernetes 版本
有关 Kubernetes 组件版本的更多信息,请参见 RKE2 版本的支持矩阵。
网络要求
在配置新集群之前,请确保您已在接受入站网络流量的设备上安装了 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 集群管理节点(etcd 和 controlplane)必须在 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 的集群
本教程描述了如何创建一个 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 的要求。
-
在左上角,单击*☰ > 集群管理*。
-
在 集群 页面,点击 创建。
-
单击 自定义。
-
在 集群名称 字段中输入您的集群名称。
-
在*Kubernetes 版本*下拉菜单中,选择一个受支持的 Kubernetes 版本。
-
在*容器网络*字段中,选择*Calico*或*Flannel*。
-
单击*创建*。
3.向集群添加节点
本节描述如何将您的 Linux 和工作节点注册到集群。您将在每个节点上运行一个命令,该命令将安装 rancher-system-agent,并允许 Rancher 管理每个节点。
添加Linux主节点
在本节中,我们在Rancher UI上填写一个表单,以获取在Linux主节点上安装Rancher代理的自定义命令。然后我们将复制该命令并在Linux主节点上运行,以在集群中注册该节点。
您集群中的第一个节点应为具有*控制平面*和*etcd*角色的Linux主机。至少必须为该节点启用这两个角色,并且在添加Windows主机之前,必须将该节点添加到您的集群中。
结果:
您的集群已创建,其状态为*正在更新*。Rancher 正在启动您的集群。
节点注册并出现在*机器*选项卡下可能需要几分钟。
一旦其状态更改为*活动*,您将能够访问集群。
添加Linux工作节点
在本节中,我们运行一个命令将Linux工作节点注册到集群。
在集群的初始配置后,您的集群只有一个Linux主机。接下来,我们添加另一个Linux`worker`主机,该主机将用于支持您的集群的_Rancher集群代理_、指标服务器、DNS_和_入口。
结果:
*Worker*角色已安装在您的Linux主机上,节点与Rancher注册。节点注册到您的集群可能需要几分钟。
|
Linux工作节点的污点 对于每个添加到集群中的Linux工作节点,将添加以下污点。通过将此污点添加到Linux工作节点,任何添加到Windows集群的工作负载将自动调度到Windows工作节点。如果您想将工作负载专门调度到Linux工作节点,您需要为这些工作负载添加容忍。
|
添加Windows工作节点
在本节中,我们运行一个命令将Windows工作节点注册到集群。
|
添加Windows工作节点的注册命令仅在集群运行Linux etcd、控制平面和工作节点后出现。 |
-
集群创建后,导航到*注册*选项卡。
-
在*步骤1*的*节点角色*部分,选择*工作节点*。
-
在*步骤2*的*注册*部分,将屏幕上显示的Windows工作节点的命令复制到剪贴板。
-
使用您首选的工具登录到Windows主机,例如 Microsoft Remote Desktop。以管理员身份在*PowerShell控制台*中运行复制到剪贴板的命令。
-
可选:如果您想向集群添加更多Windows节点,请重复这些说明。
结果:
*Worker*角色已安装在您的Windows主机上,节点与Rancher注册。节点注册到您的集群可能需要几分钟。
您现在拥有一个Windows Kubernetes集群。