本节说明了如何在 Rancher 中配置 vSphere 凭证,在 vSphere 中创建节点以及在这些节点上启动 Kubernetes 集群。

先决条件

本节介绍了使用 vSphere 在 Rancher 中创建节点和集群需要的必要条件。该节点模板的文档使用 vSphere Web Services API 6.5 版本中进行了测试。

在 vSphere 中创建凭证

在继续创建集群之前,必须确保您的 vSphere 账户拥有足够的权限。当您设置节点模板时,该模板将需要使用这些 vSphere 凭证。

有关如何在 vSphere 中创建具有所需权限的用户,请参考此使用指南。通过这些步骤您将创建出需要提供给 Rancher 的用户名和密码,从而允许 Rancher 在 vSphere 中创建资源。

网络权限

必须确保运行 Rancher 的节点能够建立以下网络连接:

  • 能够访问 vCenter 服务中的 vSphere API(通常使用端口: 443/TCP)。
  • 能够访问位于实例化虚拟机的所有 ESXi 节点上的 Host API(端口 443/TCP)(仅在使用 ISO 创建节点时需要)。
  • 能够访问虚拟机的端口 22/TCP 和 2376/TCP。

请参照节点网络需求来获取详细的端口需求。

适用于 vSphere API 访问的有效 ESXi 许可证

vSphere 服务器必须具生效的,经过评估的 ESXi 许可证。免费的 ESXi 许可证不支持 API 访问。

使用 vSphere 创建集群

本节介绍了如何使用 Rancher UI 设置 vSphere 凭证,节点模板和 vSphere 集群。

配置参考

详细的节点模板配置,请参照节点模板配置参考

Rancher 使用 RKE 创建 Kubernetes 集群。详细的 vSphere 中集群配置,请参照RKE 文档中的集群配置参考

请注意,必须启用 vSphere Cloud Provider 才能够动态配置数据卷。

使用 vSphere 凭证创建节点模板

创建集群前,您需要创建 vSphere节点模板 用于配置 VSphere 中的虚拟机。创建并保存的节点模板可在创建其他 vSphere 集群时重复使用。

  1. 登录 Rancher UI。

  2. 在右上角的用户设定菜单中,选择节点模板

  3. 单击添加模板,然后单击vSphere图标。

A. 配置 vSphere 凭证

根据您的 Rancher 版本,为集群配置 vSphere 凭证的步骤有所不同。

import Tabs from ‘@theme/Tabs’; import TabItem from ‘@theme/TabItem’;

您的账户访问信息保存在云凭证。云凭证会保存为 Kubernetes 密文。您可以创建新的云凭证或使用现有的云凭证。创建云凭证的步骤如下:

  1. 单击添加凭证
  2. 名称字段,输入 vSphere 凭证的名称。
  3. vCenter or ESXi 服务 字段,输入 vCenter 或 ESXi 节点名/IP。ESXi 是用于创建和运行虚拟机和虚拟设备的虚拟化平台。vCenter Server 是一项服务,通过它可以管理网络中连接的多个节点池中的节点资源。
  4. 可选:在端口字段,配置 vCenter 或 ESXi 服务的端口。
  5. 用户名密码 字段,输入您 vSphere 的用户名和密码。
  6. 单击创建

结果: 节点模板成功添加了 vSphere 的云凭证。

账户访问 选项中,输入 vCenter 的 FQDN 或 IP 地址和 vSphere 用户账户的凭证。

B. 配置节点调度

选择虚拟机将被调度到的虚拟机管理程序。配置选项取决于您的 Rancher 版本。

调度部分中的字段会自动显示为数据中心和 vSphere 中可用的选项。

  1. 数据中心选项中,选择用于虚拟机调度的数据中心。
  2. 资源池(可选):选择资源池。资源池可用于对独立节点或集群中的 CPU 和内存资源进行分区,也可以嵌套。
  3. 数据存储:如果您有数据存储集群,则可以切换到该数据存储集群,将虚拟机调度到该数据存储集群。如果选择该选项,则可以选择单个磁盘。
  4. Folder 可选:选择要放置虚拟机的文件夹。此下拉菜单中的 VM 文件夹直接与 vSphere 中的 VM 文件夹相对应。注意:文件夹名称在 vSphere 配置文件中应该以vm/开头。
  5. 主机(可选):选择一个特定的节点用于创建 VM。对于独立 ESXi 或具有 DRS(分布式资源调度程序)的集群,请将此字段设置为空。如果指定了该字段,就会使用节点系统的池,而且资源池的参数会被忽略。

调度选项卡中,输入:

  • 用于创建 VM 的数据中心的名称或路径。

  • 虚拟机网络的名称。

  • 保存磁盘的数据存储名称或路径。

    image

C. 配置实例和操作系统

根据 Rancher 版本的不同,可以使用不同的选项来配置实例。

实例选项选项卡中,配置该节点模板创建节点的 CPU 数量,内存和磁盘大小。

创建方法选项中,配置在 vSphere 中创建 VMs 的创建方法。可用选项包括通过 RancherOS ISO 创建 VMs 或通过一个已有的 VM 或VM 模板克隆 VMs。

已有的 VM 或 VM 模板可以使用配置了cloud-init并使用NoCloud datasource的任何现代 Linux 操作系统。

选择创建虚拟机的方式:

  • 模板部署: Data Center: 选择一个数据中心中的 VM 模板。
  • 模板部署: Content Library: 首先选择包含您的模板的 Content Library,然后在Library 模板选项中选择模板。
  • 克隆一个现有的虚拟机:虚拟机选项中,选择一个用于克隆的虚拟机。
  • 从 boot2docker ISO 安装(弃用): 确保操作系统ISO下载地址选项填写正确的 VMware ISO 或 RancherOS (rancheros-vmware.iso)地址。请注意这个 URL 必须在 Rancher Server 的节点中能够访问。

实例选项选项卡中,配置该节点模板创建节点的 CPU 数量,内存和磁盘大小。

仅支持从 RancherOS ISO 创建虚拟机。

确保操作系统ISO下载地址选项填写正确的 VMware ISO 或 RancherOS (rancheros-vmware.iso)地址。

image

D. 添加网络

从 Rancher v2.3.3 开始可用

现在,节点模板允许 VM 配置多个网络。在网络字段中,您可以单击添加网络来添加任何 vSphere 中可用的网络。

E. 启用磁盘 UUIDs

为了使用 RKE 创建集群,必须为所有节点配置磁盘 UUIDs。

从 Rancher v2.0.4 开始,在 vSphere 节点模板中默认启用了磁盘 UUIDs。

如果您在使用 Rancher v2.0.4 之前的版本,请参照以下说明以获取如何通过 Rancher 节点模板启用 UUID 的详细信息。

F. 可选:配置节点标签和自定义属性

将元数据附加到 VM 的方式因 Rancher 版本而异。

可选: 添加 vSphere 标签和自定义属性。标签使您可以将元数据附加到 vSphere 清单中的对象,以使排序和搜索这些对象更加容易。

对于标签,在您选择节点模版时,所有 vSphere 标签都会显示出来。

在自定义属性中,Rancher 将允许您选择已在 vSphere 中设置的所有自定义属性。自定义属性作为 keys,您可以为每个属性输入 value。

注意: 自定义属性是一项 legacy 功能,最终将会从 vSphere 中删除。这些属性使您可以将元数据附加到 vSphere 清单中的对象,以使排序和搜索这些对象更加容易。

可选:

  • 为虚拟机提供一组配置参数(实例选项)。
  • 为 VM 分配标签,这些标签可用作在集群中调度规则的依据。
  • 自定义将要创建的 VM 中的 Docker 守护程序的配置。

注意: 自定义属性是一项 legacy 功能,最终将会从 vSphere 中删除。这些属性使您可以将元数据附加到 vSphere 清单中的对象,以使排序和搜索这些对象更加容易。

G. 可选:配置 cloud-init

Cloud-init 允许您在第一次启动时通过应用配置来初始化节点。这可能包括诸如创建用户,授权 SSH 密钥或设置网络等事情。

VM 的 cloud-init 支持范围取决于 Rancher 的版本。

要使用 cloud-init 初始化,请使用有效的 YAML 语法创建一个配置文件,然后将文件内容粘贴到Cloud Init字段中。请参照cloud-init 文档。以获取 cloud config 配置示例。

注意,通过 ISO 创建 VM 时不支持使用 cloud-init 选项

您可以在Cloud Init字段中指定 RancherOS cloud-config.yaml 文件的 URL。有关受支持的配置的详细信息,请参考RancherOS 文档。请注意,创建的 VM 中必须可以访问该 URL。

H. 保存节点模板

为此模板分配一个描述性的名称,然后单击创建

节点模板配置参考

适用于 vSphere 节点模板的配置选项的参考,请参考本节

使用节点模板创建 Kubernetes 集群

创建模板后,可以使用它启动 vSphere 集群。

如果要在 vSphere 节点上安装的 Kubernetes 中使用一些高级功能,您需要通过修改集群 YAML 文件来启用 vSphere Cloud Provider。此项既适用于预先创建的自定义节点,也适用于使用 vSphere 节点驱动程序在 Rancher 中创建的节点。

要创建集群,请执行以下步骤:

A. 设置集群名称和成员角色

  1. 以管理员身份登录到 Rancher UI。

  2. 进入到全局中的集群列表页面。

  3. 单击添加集群 选择 vSphere 基础设施供应商。

  4. 填写 集群名称

  5. 指定需要的成员角色

    通过成员角色来设置用户访问集群的权限。

    • 单击添加成员将需要访问这个集群的用户添加到成员中。
    • 角色下拉菜单中选择每个用户的权限。

注意:

如果您的集群启用了 DRS,推荐设置VM-VM 关联性规则。这些规则使分配了 etcd 和控制平面角色的 VM 在分配给不同的节点池时可以在单独的 ESXi 节点上运行。这种做法可确保单个物理机的故障不会影响这些平面的可用性。

B. 配置 Kubernetes 选项

使用集群选项设置 Kubernetes 的版本,网络插件以及是否要启用项目网络隔离。要查看更多集群选项,请单击显示高级选项

C. 为集群添加节点池

将一个或多个节点池添加到您的集群。

节点池是基于节点模板的节点的集合。节点模板定义节点的配置,例如要使用的操作系统,CPU 数量和内存量。每个节点池必须分配一个或多个节点角色。

:::important 注意:

  • 每个节点角色(即 etcdControl PlaneWorker)应分配给不同的节点池。尽管可以为一个节点池分配多个节点角色,但是不应对生产集群执行此操作。
  • 推荐的设置是拥有一个具有etcd节点角色且数量为 3 的节点池,一个具有Control Plane节点角色且数量至少为 2 的节点池,以及具有Worker节点角色且数量为 1 的节点池。至少两个。关于 etcd 节点角色,请参考 etcd 管理指南

:::

D. 可选:添加自我修复的节点池

要使节点池能够自我修复,请在自动替换列中输入一个大于零的数字。如果节点池在指定的分钟内处于非活动状态,Rancher 将使用该节点池使用的节点模板来重新创建该节点。

注意: 自我修复节点池旨在帮助您为无状态应用程序替换工作节点。不建议在主节点或具有持久卷连接的节点的节点池上启用节点自动替换。当节点池中的节点失去与集群的连接时,其持久卷将被破坏,从而导致有状态应用程序丢失数据。

E. 创建集群

单击 创建 开始创建虚拟机和 Kubernetes 集群。

结果:

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

可选:配置 Cloud Provider 和并创建存储

有关如何使用 Rancher 在 vSphere 中创建存储的,请参照vShpere 存储

为了在 vSphere 中创建存储,必须启用 vSphere Cloud Provider。

为集群启用 vSphere Cloud Provider

  1. 设置 Cloud Provider 选项为Custom.

    vsphere-node-driver-cloudprovider

  2. 单击编辑 YAML

  3. 将以下结构内容插入到预先配置的集群 YAML 中。从 Rancher v2.3+ 开始,此结构必须放在rancher_kubernetes_engine_config下。在 v2.3 之前的版本中,必须将其定义为顶级字段。注意,name 必须设置为vsphere

    1. rancher_kubernetes_engine_config: # Required as of Rancher v2.3+
    2. cloud_provider:
    3. name: vsphere
    4. vsphereCloudProvider:
    5. # 在下面加入您的 provider 配置

    Rancher 使用 RKE(the Rancher Kubernetes Engine)来创建 Kubernetes 集群。请参照RKE 文档中的 vSphere 配置参考以获取vsphereCloudProvider配置中属性的详细信息。

可选步骤

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

  • 通过 kubectl CLI 访问集群: 请按照这些步骤来通过 kubectl 访问您的集群。在这种情况下,您将通过 Rancher Server 的身份验证代理进行身份验证,然后 Rancher 会将您连接到下游集群。此方法使您无需 Rancher UI 即可管理集群。

  • 通过 kubectl CLI 和授权的集群地址访问您的集群: 请按照这些步骤来通过 kubectl 直接访问您的集群,而不需要通过 Rancher 进行认证。我们建议您设定此方法访问集群,这样在您无法连接 Rancher 时您仍然能够访问集群。