当使用 Rancher 初始化一个自定义集群时,Rancher 会在您的基础设施上,使用 RKE(Rancher Kubernetes Engine)进行 Kubernetes 集群初始化。
使用 Windows 集群时,有如下限制:
同时使用 Linux 以及 Windows 的节点时,Windows 节点只能作为 节点使用,Linux 则需要作为管理节点。
您只能在启用了 Windows 支持的集群中添加 Windows 节点。
Windows 集群只能适用于自定义集群,并且 Kubernetes 版本不低于 v1.15。
只能使用 Flannel 作为网络插件。
不能在已创建的集群中启用 Windows 支持。
Windows 节点必须有 50GB 的磁盘空间,并且需要保证满足所有以下的。
有关 Kubernetes 中 Windows 节点支持,请参阅Kubernetes Windows 支持或者参考。
对于自定义集群,网络,操作系统和 Docker 的一般节点要求与下游集群的节点要求相同。
为了将 Windows 节点添加到集群,该节点必须运行以下 Windows Server 版本之一,并且使用相应版本的 Docker 企业版(EE):
- 具有 Windows Server 核心版本 1809 的节点应使用 Docker EE-basic 18.09 或 Docker EE-basic 19.03。
节点要求
集群中的节点至少必须具有:
- 2 核 CPU
- 5 GB 内存
- 50 GB 磁盘空间
如果节点不满足这些要求,Rancher 将不会纳管该节点。
网络要求
在配置新集群之前,请确保已经安装了 Rancher。并且确保节点可以与 Rancher 通信。如果尚未安装 Rancher,请参考进行安装。
Rancher 仅支持在 Windows 集群中使用 Flannel 作为网络插件。
您需要在Host Gateway (L2bridge) 和 中选择一个作为 Rancher 的网络模式。
如果您选用Host Gateway (L2bridge) 网络模式,最好对所有节点使用相同的第 2 层网络。否则,您需要为其配置路由规则。有关详细信息,请参阅配置云托管的 VM 路由,如果您使用的是亚马逊 EC2,Google GCE 或 Azure VM,还需要。
VXLAN (Overlay) 模式是默认选项。如果您选用 VXLAN (Overlay) 网络,必须安装KB4489899补丁,大多数云托管的虚拟机已经安装了这个补丁。
Kubernetes 集群管理节点(etcd
和controlplane
)必须在 Linux 节点上运行。
Windows 集群中的工作负载通常部署在 Windows(worker
)节点中。但是,您必须至少有一个 Linux worker
节点才能运行 Rancher Cluster Agent、Metrics Server、DNS 和 Ingress 相关容器。
下表中是一个由三个节点组成的集群,您可以添加其他 Linux 和 Windows 节点来扩展集群,实现冗余:
容器要求
因为 Windows 要求容器必须建立在与容器相同的 Windows Server 版本上,所以您必须在 Windows Server Core 1809 或更高版本上构建容器。如果您已经为早期的 Windows Server 核心版本构建了容器,则必须在 Windows Server Core 1809 或更高版本上重新构建。
Cloud Providers
如果您在集群中设置 Kubernetes Cloud Provider,则需要执行一些其他步骤。如果要利用云提供商的功能(例如,为集群自动配置存储,负载均衡器或其他基础设施),则可能需要设置 Cloud Provider。请参阅,以获取有关如何配置 Cloud Provider 的详细信息。
如果您使用的是 GCE(Google Compute Engine)云提供商,则必须执行以下操作:
- 按照这些步骤在
cluster.yml
中启用 GCE Cloud Provider。 - 在 Rancher 中配置集群时,请在 Rancher UI 中选择“自定义云提供商”作为云提供商。
本教程将介绍如何使用三个节点创建 Windows 集群。
要创建支持 Windows 节点和容器的自定义集群,您需要完成以下任务。
要开始配置具有 Windows 支持的自定义集群,请先准备主机。
您的主机可以是:
- 云托管的虚拟机
- 虚拟化集群中的 VM
- 裸金属服务器
您将配置三个节点:
- 一个 Linux 节点,用于部署 Kubernetes 控制平面和
etcd
- 第二个 Linux 节点,它将是一个工作节点
- Windows 节点,它将用来运行 Windows 容器。
如果您的节点由云供应商托管,并且您需要自动化支持(例如负载均衡器或永久性存储设备),则您的节点还有其他配置要求。有关详细信息,请参阅。
2. 创建自定义集群
创建支持 Windows 节点的自定义集群的说明与一般创建自定义集群的说明基本相同,但是具有一些特定于 Windows 的要求。
仅当集群使用 Kubernetes v1.15+ 和 Flannel 网络插件时才可以启用 Windows 支持。
从全局视图中,单击集群选项卡,然后单击添加集群。
单击自定义。
在集群名称文本框中输入集群的名称。
在 Kubernetes 版本下拉菜单中,选择 v1.15 或更高版本。
在网络驱动字段中,选择Flannel。
在 Windows 支持部分中,单击启用。
可选:启用 Windows 支持后,您将能够选择 Flannel 后端模式。有两个网络选项: 和 VXLAN (Overlay)。默认选项是 VXLAN (Overlay) 模式。
单击 下一步.
3. 在集群上添加节点
本节介绍如何将 Linux 和 Worker 节点注册到自定义集群。
添加 Linux Master 节点
集群中的第一个节点应该是同时具有 Control Plane 和 etcd 角色的 Linux 主机。至少必须为此节点启用这两个角色,并且必须先将此节点添加到集群中,然后才能添加 Windows 主机。
在本节中,我们在 Rancher UI 上填写表格,以获取自定义命令,以在 Linux 主节点上安装 Rancher 代理。然后,我们将复制命令并在 Linux 主节点上运行该命令,以在集群中注册该节点。
在节点操作系统部分中,单击Linux。
在节点角色部分中,至少选择etcd和Control Plane。选择所有角色。
可选:如果您单击显示高级选项,则可以自定义 和节点标签等。
SSH 进入 Linux 主机,然后运行复制到剪贴板的命令。
完成配置 Linux 节点后,选择完成。
结果:
- 您的集群已创建并进入为 Provisioning 的状态。Rancher 正在启动您的集群。
- 您可以在集群的状态更新为 Active 后访问它。
- Rancher 为活动的集群分配了两个项目,即 (包含命名空间
default
)和System
(包含命名空间cattle-system
,ingress-nginx
,kube-public
和kube-system
,如果命名空间存在)。
该节点可能需要几分钟才能在您的集群中注册。
添加 Linux Worker 节点
在全局视图中,单击集群。
转到您创建的自定义集群,然后单击省略号(…)> 编辑。
向下滚动到节点操作系统。选择 Linux。
在自定义节点运行命令部分中,转到节点选项并选择Worker角色。
将屏幕上显示的命令复制到剪贴板。
使用远程终端连接登录到 Linux 主机。运行复制到剪贴板的命令。
在 Rancher 中,单击保存。
结果: Worker 角色节点已安装在您的 Linux 主机上,并且该节点向 Rancher 注册。该节点可能需要几分钟才能在您的集群中注册。
添加 Windows 节点
您可以通过编辑集群并选择Windows选项将 Windows 主机添加到自定义集群。
在全局视图中,单击集群。
转到您创建的自定义集群,然后单击省略号(…)>编辑。
向下滚动到节点操作系统。选择 Windows。注意:您将看到 worker 角色是唯一可用的角色。
将屏幕上显示的命令复制到剪贴板。
使用首选工具,例如。在命令提示符(CMD)中运行复制到剪贴板的命令。
在Rancher中,单击保存。
可选:如果要向集群添加更多 Windows 节点,请重复上述步骤。
结果: Worker角色已安装在 Windows 主机上,并且该节点向 Rancher 注册。该节点可能需要几分钟才能在您的集群中注册。您现在已经拥有来 Windows Kubernetes 集群。
可选步骤
创建集群后,您可以通过 Rancher UI 访问它。作为最佳实践,我们建议同时设置以下访问集群的替代方法:
通过 kubectl CLI 访问集群: 请按照这些步骤来通过 kubectl 访问您的集群。在这种情况下,您将通过 Rancher Server 的身份验证代理进行身份验证,然后 Rancher 会将您连接到下游集群。此方法使您无需 Rancher UI 即可管理集群。
通过 kubectl CLI 和授权的集群地址访问您的集群: 请按照来通过 kubectl 直接访问您的集群,而不需要通过 Rancher 进行认证。我们建议您设定此方法访问集群,这样在您无法连接 Rancher 时您仍然能够访问集群。
如果您为节点使用 Azure VM,则可以将Azure File用作。
为了使 Azure 平台创建所需的存储资源,请按照下列步骤操作:
配置
kubectl
连接到您的集群。复制下面的 Service Account 的
ClusterRole
和ClusterRoleBinding
配置: