当使用 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 集群管理节点(etcdcontrolplane)必须在 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 支持。

  1. 全局视图中,单击集群选项卡,然后单击添加集群

  2. 单击自定义

  3. 集群名称文本框中输入集群的名称。

  4. Kubernetes 版本下拉菜单中,选择 v1.15 或更高版本。

  5. 网络驱动字段中,选择Flannel

  6. Windows 支持部分中,单击启用

  7. 可选:启用 Windows 支持后,您将能够选择 Flannel 后端模式。有两个网络选项: 和 VXLAN (Overlay)。默认选项是 VXLAN (Overlay) 模式。

  8. 单击 下一步.

3. 在集群上添加节点

本节介绍如何将 Linux 和 Worker 节点注册到自定义集群。

添加 Linux Master 节点

集群中的第一个节点应该是同时具有 Control Planeetcd 角色的 Linux 主机。至少必须为此节点启用这两个角色,并且必须先将此节点添加到集群中,然后才能添加 Windows 主机。

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

  1. 节点操作系统部分中,单击Linux

  2. 节点角色部分中,至少选择etcdControl Plane。选择所有角色。

  3. 可选:如果您单击显示高级选项,则可以自定义 和节点标签等。

  4. SSH 进入 Linux 主机,然后运行复制到剪贴板的命令。

  5. 完成配置 Linux 节点后,选择完成

结果:

  • 您的集群已创建并进入为 Provisioning 的状态。Rancher 正在启动您的集群。
  • 您可以在集群的状态更新为 Active 后访问它。
  • Rancher 为活动的集群分配了两个项目,即 (包含命名空间 default)和 System(包含命名空间 cattle-systemingress-nginxkube-publickube-system,如果命名空间存在)。

该节点可能需要几分钟才能在您的集群中注册。

添加 Linux Worker 节点

  1. 全局视图中,单击集群

  2. 转到您创建的自定义集群,然后单击省略号(…)> 编辑。

  3. 向下滚动到节点操作系统。选择 Linux

  4. 自定义节点运行命令部分中,转到节点选项并选择Worker角色。

  5. 将屏幕上显示的命令复制到剪贴板。

  6. 使用远程终端连接登录到 Linux 主机。运行复制到剪贴板的命令。

  7. Rancher 中,单击保存

结果: Worker 角色节点已安装在您的 Linux 主机上,并且该节点向 Rancher 注册。该节点可能需要几分钟才能在您的集群中注册。

添加 Windows 节点

您可以通过编辑集群并选择Windows选项将 Windows 主机添加到自定义集群。

  1. 全局视图中,单击集群

  2. 转到您创建的自定义集群,然后单击省略号(…)>编辑。

  3. 向下滚动到节点操作系统。选择 Windows。注意:您将看到 worker 角色是唯一可用的角色。

  4. 将屏幕上显示的命令复制到剪贴板。

  5. 使用首选工具,例如。在命令提示符(CMD)中运行复制到剪贴板的命令。

  6. Rancher中,单击保存

  7. 可选:如果要向集群添加更多 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 平台创建所需的存储资源,请按照下列步骤操作:

  1. 配置 Azure Cloud Provider

  2. 配置kubectl连接到您的集群。

  3. 复制下面的 Service Account 的ClusterRoleClusterRoleBinding配置: