准备将管理集群部署到 vSphere

必须先准备 vSphere 环境,然后才能使用 Tanzu CLI 或安装程序界面部署管理集群。您必须确保 vSphere 满足常规要求,并导入 Tanzu Kubernetes Grid 创建集群节点虚拟机的基础映像模板。每个基础映像模板包含某个版本的计算机操作系统和某个版本的 Kubernetes。

常规要求

  • 安装了 Tanzu CLI、Docker 和 kubectl 的计算机。请参见安装 Tanzu CLI 和其他工具以与独立管理集群配合使用
    • 这是引导计算机,您可以从中运行 tanzukubectl 和其他命令。
    • 引导计算机可以是本地物理机,也可以是通过控制台窗口或客户端 shell 访问的虚拟机。
  • vSphere 8、vSphere 7、vSphere 6.7u3、VMware Cloud on AWS 或 Azure VMware 解决方案帐户,具有以下项:
  • vSphere 实例具有以下对象:
    • 独立主机或至少具有两个主机的 vSphere 集群
      • 如果要部署到 vSphere 集群,最好启用 vSphere DRS。
    • 可选,要在其中部署 Tanzu Kubernetes Grid 实例的资源池
    • 用于收集 Tanzu Kubernetes Grid 虚拟机的虚拟机文件夹
    • 容量足以容纳控制平面和工作节点虚拟机文件的数据存储
    • 如果要将多个 Tanzu Kubernetes Grid 实例部署到同一 vSphere 实例,请为您部署的每个实例创建专用资源池、虚拟机文件夹和网络。
  • 您已完成准备 vSphere 环境的以下操作:
  • vSphere 网络*,具有以下项或者能力:

    • 能够通过 DHCP 或允许虚拟机在引导时选择地址,将 IP 地址分配给为集群创建的虚拟机。在 vSphere 中,网络类型默认为 VSS,但您可能更喜欢生产环境中的 VDS 或 NSX。
      • 在 VDS 和 NSX 中,创建一个可向 TKG 中的 Kubernetes 节点分配 IP 地址的自定义虚拟机网络。
    • DNS 名称服务器。
      • VSS 包括此内容。对于 VDS 和 NSX,或者如果您使用节点 IPAM,则需要知道并配置 DNS 名称服务器地址。
    • 配置了选项 3(路由器)和选项 6 (DNS) 的 DHCP 服务器,用于连接 Tanzu Kubernetes Grid 部署的集群节点虚拟机。节点虚拟机必须能够连接到 vSphere。
    • 您创建的所有集群(包括管理集群和工作负载集群)的一组可用静态虚拟 IP 地址。
      • 部署到 vSphere 的每个集群都需要静态 IP 地址或 FQDN 作为其控制平面端点。
        • 您可以将此值配置为 VSPHERE_CONTROL_PLANE_ENDPOINT,或者如果对控制平面端点使用 NSX Advanced Load Balancer,请从地址池中自动设置地址。
        • 创建管理集群或工作负载集群后,必须按照 配置节点 DHCP 预留和端点 DNS 记录(仅限 vSphere)中所述配置其节点 DHCP 预留和端点 DNS。有关如何配置 DHCP 预留的说明,请参见 DHCP 服务器文档。
    • 允许从运行集群的网络中输出到 vCenter Server 的流量。
    • 允许在本地引导计算机与所创建集群中所有虚拟机的端口 6443 之间传输流量。端口 6443 是默认公开 Kubernetes API 的位置。要更改管理集群或工作负载集群的此端口,请在部署集群时设置 CLUSTER_API_SERVER_PORT 或为具有 NSX Advanced Load Balancer 的环境设置 VSPHERE_CONTROL_PLANE_ENDPOINT_PORT 变量。
    • 允许在您创建的集群中的所有虚拟机的端口 443 与 和 vCenter Server 之间传输流量。端口 443 是公开 vCenter Server API 的位置。
    • 对于 TCP,允许在本地引导计算机与管理集群物料清单 (BoM) 文件中列出的映像存储库之间通过端口 443 传输流量。BoM 文件位于 ~/.config/tanzu/tkg/bom/ 下,并且其名称包含 Tanzu Kubernetes Grid 版本,例如 v2.1.1 的 bom-2.1.1+vmware.1.yaml
    • 在所有主机上运行的网络时间协议 (NTP) 服务,以及在 UTC 上运行的主机。要检查主机上的时间设置,请执行以下操作:
      1. 使用 SSH 登录到 ESXi 主机。
      2. 运行 date 命令以查看时区设置。
      3. 如果时区不正确,请运行 esxcli system time set
    • 可从所有虚拟机访问 NTP 服务器。您可以使用 DHCP 选项 42 进行配置,否则请按照配置没有 DHCP 选项 42 的 NTP 操作。
  • 如果要将 NSX ALB 用作负载均衡器和控制平面 HA 的端点提供程序,则在 vSphere 实例中安装 NSX Advanced Load Balancer (ALB)。请参见安装 NSX Advanced Load Balancer

  • 如果 vSphere 环境运行 VMware NSX,则可以在部署管理集群时使用 NSX 界面。确保您的 NSX 设置包含启用了 DHCP 的分段。确保在所有 ESXi 主机、vCenter Server 和引导计算机上配置 NTP。

*或者参见准备 Internet 受限环境以便在无法访问外部网络的情况下可以进行安装。

管理集群大小调整示例

下表介绍了 vSphere 上的管理集群的大小调整示例。使用此数据作为指导,确保扩展管理集群以处理您计划部署的工作负载集群数量。工作负载集群虚拟机大小列中列出了用于可以管理…列中示例的虚拟机大小。

管理集群计划 管理集群虚拟机大小 可以管理… 工作负载集群虚拟机大小
3 个控制平面节点和 3 个工作节点

控制平面节点:

  • CPU:2
  • 内存:4 GB
  • 磁盘:20 GB

工作节点:

  • CPU:2
  • 内存:4 GB
  • 磁盘:20 GB
示例:
  • 5 个工作负载集群,每个集群部署 3 个控制平面和 200 个工作节点;或
  • 10 个工作负载集群,每个集群部署有 3 个控制平面和 50 个工作节点

控制平面节点:

  • CPU:2
  • 内存:4 GB
  • 磁盘:20 GB

工作节点:

  • CPU:2
  • 内存:4 GB
  • 磁盘:20 GB
3 个控制平面节点和 3 个工作节点

控制平面节点:

  • CPU:4
  • 内存:16 GB
  • 磁盘:40 GB

工作节点:

  • CPU:4
  • 内存:16 GB
  • 磁盘:40 GB
例如:一个工作负载集群,部署有 3 个控制平面和 500 个工作节点

控制平面节点:

  • CPU:16
  • 内存:64 GB
  • 磁盘:100 GB

工作节点:

  • CPU:8
  • 内存:8 GB
  • 磁盘:20 GB
3 个控制平面节点和 3 个工作节点

控制平面节点:

  • CPU:4
  • 内存:16 GB
  • 磁盘:40 GB

工作节点:

  • CPU:4
  • 内存:16 GB
  • 磁盘:40 GB
例如:200 个工作负载集群,每个集群部署有 3 个控制平面和 5 个工作节点

控制平面节点:

  • CPU:2
  • 内存:4 GB
  • 磁盘:20 GB

工作节点:

  • CPU:2
  • 内存:4 GB
  • 磁盘:20 GB

另外,请参见下面的集群节点的最小虚拟机大小

vSphere with Tanzu 主管是管理集群

在 vSphere 8 上,vSphere with Tanzu 功能包括一个主管,您可以将该主管用作 Tanzu Kubernetes Grid 的管理集群。这意味着在 vSphere 8 上,如果 vSphere with Tanzu 和主管已启用,您不需要使用 tanzu management-cluster createtanzu mc create 部署管理集群。支持在未启用 vSphere with Tanzu 时将 Tanzu Kubernetes Grid 管理集群部署到 vSphere 8,但首选选项是启用 vSphere with Tanzu 并使用内置主管集群(如果可能)。vSphere with Tanzu 主管与 vSphere 紧密集成,因此可提供比使用独立管理集群更简化的用户体验。但是,在 vSphere 上使用独立管理集群比主管提供更多的配置和自定义选项。

重要

与 vSphere 8 中的 TKG 2.x 和 vSphere with Tanzu 主管兼容的 Tanzu CLI 版本与 vSphere 7 中的主管集群不兼容。要在 vSphere 7 上对 vSphere with Tanzu 主管集群使用 Tanzu CLI,请使用 TKG v1.6 中的 Tanzu CLI 版本。要使用与具有主管的 TKG 2.x 兼容的 Tanzu CLI 版本,请升级到 vSphere 8。如果 vSphere with Tanzu 主管集群不存在,可以将独立 TKG 2.x 管理集群部署到 vSphere 7。有关 Tanzu CLI 与 VMware 产品之间兼容性的信息,请参见 Tanzu CLI 文档

Tanzu CLI 适用于通过 vSphere with Tanzu 提供的管理集群以及由 Azure 上的 Tanzu Kubernetes Grid、Amazon Web Services (AWS) 和 vSphere with Tanzu 未启用时的 vSphere 部署的独立管理集群,从而允许您使用单个工具跨多个基础架构部署和管理工作负载集群。有关如何将 Tanzu CLI 与主管结合使用的信息,请参见《使用 Tanzu CLI 创建和管理 TKG 2.1 工作负载集群》中的将 Tanzu CLI 连接到主管

有关 vSphere 8 中的 vSphere with Tanzu 功能的信息,请参见 vSphere with Tanzu 8.0 文档

注意

在 Azure VMware 解决方案上,无法创建主管集群,需要部署管理集群才能运行 tanzu 命令。

适用于 vSphere 的 Kube-Vip 和 NSX Advanced Load Balancer

部署到 vSphere 的每个管理集群和工作负载集群都需要一个静态虚拟 IP 地址,用于向集群的 API 服务器发送外部请求。您必须能够分配此 IP 地址,因此它不能在您的 DHCP 范围内,但必须与 DHCP 范围位于同一子网中。

集群控制平面的 Kube-Vip pod 使用此静态虚拟 IP 地址处理 API 请求,并且 API 服务器证书包含用于启用安全 TLS 通信的地址。在工作负载集群中,Kube-Vip 在第 2 层基本故障切换模式下运行,一次将虚拟 IP 地址分配给一个控制平面节点。在此模式下,Kube-Vip 不会用作控制平面流量的真正负载均衡器。

Tanzu Kubernetes Grid 可以使用 Kube-Vip 作为工作负载集群中工作负载的负载均衡器(技术预览版)。在基于 Windows 的集群上,不能将 Kube-VIP 作为 LoadBalancer 服务。有关详细信息,请参见 Kube-VIP Load Balancer

要对 vSphere 上的工作负载进行负载均衡,请使用 NSX Advanced Load Balancer,也称为 Avi 负载均衡器(Essentials Edition)。

重要

在 vSphere 8 上,要将 NSX Advanced Load Balancer 与 TKG 独立管理集群及其工作负载集群结合使用,您需要 NSX ALB v22.1.2 或更高版本以及 TKG v2.1.1 或更高版本。

将基础映像模板导入到 vSphere

将集群部署到 vSphere 之前,必须先将包含运行集群节点的操作系统和 Kubernetes 版本的基础映像模板导入 vSphere。对于每个受支持的操作系统和 Kubernetes 版本对,VMware 会以 OVA 格式发布基础映像模板,以便将集群部署到 vSphere。将 OVA 导入 vSphere 后,必须将生成的虚拟机转换为虚拟机模板。

集群节点支持的基础映像取决于集群的类型,如下所示:

  • 管理集群:OVA 必须具有 Kubernetes v1.24.10,这是 Tanzu Kubernetes Grid v2.1.1 的默认版本。因此,其必须为以下项之一:

    • Ubuntu v20.04 Kubernetes v1.24.10 OVA

      注意

      在 Tanzu Kubernetes Grid v2.1 中,Ubuntu OVA 映像使用统一可扩展固件接口 (UEFI) 引导模式。

    • Photon v3 Kubernetes v1.24.10 OVA

    • 具有自定义 Tanzu Kubernetes 版本 (TKr) 的自定义 OVA,如构建计算机映像中所述。

  • 工作负载集群:OVA 可以具有任何受支持的操作系统和 Kubernetes 版本组合,如 Tanzu Kubernetes 版本打包在一起。请参见多个 Kubernetes 版本

要将基础映像模板导入到 vSphere:

  1. 转到 Tanzu Kubernetes Grid 下载页面,使用您的 VMware Customer Connect 凭据登录,然后单击转到下载 (Go to Downloads)
  2. 下载集群节点的 Tanzu Kubernetes Grid OVA。对于管理集群,这必须是 Kubernetes v1.24.10 OVA 下载之一。

    重要

    确保在使用安全修补程序版本时下载最新的 OVA 基础映像模板。

    您可以在 Tanzu Kubernetes Grid 产品下载页面上找到更新后其中包含安全修补程序的基础映像模板。

  3. 在 vSphere Client 中,右键单击 vCenter Server 清单中的对象,选择部署 OVF 模板 (Deploy OVF template)

  4. 选择本地文件 (Local File),单击按钮以上载文件,然后导航到本地计算机上下载的 OVA 文件。
  5. 按照安装程序提示从 OVA 部署虚拟机。

    • 接受或修改设备名称
    • 选择目标数据中心或文件夹
    • 选择目标主机、集群或资源池
    • 接受最终用户许可协议 (EULA)
    • 选择磁盘格式和目标数据存储
    • 选择虚拟机要连接的网络
    注意

    如果选择厚置备作为磁盘格式,则当 Tanzu Kubernetes Grid 从模板创建集群节点虚拟机时,将预留每个节点磁盘的完整大小。如果部署多个集群或具有多个节点的集群,这会快速消耗存储。但是,如果选择精简置备,在部署集群时,这可能会被误认为可用的存储量。如果选择精简置备,则部署集群时可能有足够的可用存储,但存储可能会在集群运行和累计数据时耗尽。

  6. 单击完成 (Finish) 以部署虚拟机。
  7. OVA 部署完成后,右键单击虚拟机,然后选择模板 (Template) > 转换为模板 (Convert to Template)

    重要

    在将虚拟机转换为模板之前,请勿打开虚拟机电源。

  8. 虚拟机和模板视图中,右键单击新模板,选择添加权限,然后将 tkg-user 分配给具有 TKG 角色的模板。

    有关如何为 Tanzu Kubernetes Grid 创建用户和角色的信息,请参见下述的 vSphere 帐户所需的权限

对下载了 OVA 文件的每个 Kubernetes 版本重复此过程。

vSphere 帐户所需的权限

部署管理集群时提供给 Tanzu Kubernetes Grid 的 vCenter Single Sign On 帐户必须具有正确的权限才能在 vSphere 中执行所需的操作。

建议不要为 Tanzu Kubernetes Grid 提供 vSphere 管理员帐户,因为这为 Tanzu Kubernetes Grid 提供的权限远大于其所需的权限。为 Tanzu Kubernetes Grid 分配权限的最佳方法是创建一个角色和一个用户帐户,然后在 vSphere 对象上授予该用户帐户该角色。

注意

如果要将工作负载集群部署到 vSphere 7 或 8 并启用 vSphere with Tanzu,则除了设置下面列出的权限外,还必须设置全局 > 云管理员权限。如果要使用 Velero 备份和还原工作负载集群,还必须设置《虚拟磁盘开发工具包编程指南》中的 VMDK 访问的凭据和权限中列出的权限。

  1. 在 vSphere Client 中,转到管理 > 访问控制 > 角色,然后创建具有以下权限的新角色,例如 TKG

    vSphere 对象 所需权限
    Cns 可搜索
    数据存储 分配空间
    浏览数据存储
    低级别文件操作
    全局(如果使用 Velero 进行备份和还原) 禁用方法
    启用方法
    许可证
    网络 分配网络
    配置文件驱动的存储 配置文件驱动的存储视图
    资源 将虚拟机分配给资源池
    会话 消息
    验证会话
    虚拟机 更改配置 > 添加现有磁盘
    更改配置 > 添加新磁盘
    更改配置 >添加或移除设备
    更改配置 >高级配置
    更改配置 > 更改 CPU 计数
    更改配置 > 更改内存
    更改配置 > 更改设置
    更改配置 >配置裸设备
    更改配置 >扩展虚拟磁盘
    更改配置 > 修改设备设置
    更改配置 > 移除磁盘
    更改配置 > 切换磁盘更改跟踪*
    编辑清单 >从现有清单创建
    编辑清单 > 移除
    交互 > 打开电源
    交互 > 关闭电源
    置备 > 允许只读磁盘访问* 置备 > 允许虚拟机下载* 置备 > 部署模板
    快照管理> 创建快照*
    快照管理 > 移除快照*

    *需要启用 Velero 插件所需的快照,如备份和还原管理和工作负载集群基础架构中所述。您可以稍后根据需要添加这些权限。
    vApp 导入

  2. 管理 (Administration) > 单一登录 (Single Sign On) > 用户和组 (Users and Groups) 中,在相应的域中创建新的用户帐户,例如 tkg-user

  3. 主机和集群 (Hosts and Clusters)虚拟机和模板 (VMs and Templates)存储 (Storage) 网络连接 (Networking) 视图中,右键单击 Tanzu Kubernetes Grid 部署将使用的对象,选择添加权限 (Add Permission),并将具有 TKG 角色的 tkg-user 分配给每个对象。

    • 主机和集群
      • 根 vCenter Server 对象
      • 数据中心以及所有主机和集群文件夹,从数据中心对象下到 Tanzu Kubernetes Grid 部署的集群
      • 目标主机和集群
      • 启用了传播到子项的目标资源池
    • 虚拟机和模板
      • 部署的 Tanzu Kubernetes Grid 基础映像模板
      • 启用了传播到子项的目标虚拟机和模板文件夹
    • 存储
      • 数据存储和所有存储文件夹,从数据中心对象到将用于 Tanzu Kubernetes Grid 部署的数据存储
    • 网络
      • 将向其分配集群的网络或分布式端口组
      • Distributed Switch

集群节点的最小虚拟机大小

根据集群复杂性和预期需求配置管理集群节点和工作负载集群节点的大小。您可以根据预定义的节点大小将它们设置为 smallmediumlargeextra-large

对于 vSphere 上的所有集群,请使用 SIZECONTROLPLANE_SIZEWORKER_SIZE 集群配置变量配置这些集群。或者,要获得更大的粒度,您可以使用 VSPHERE_* _DISK_GIB_NUM_CPUS_MEM_MIB 配置变量。

对于管理集群,安装程序界面实例类型字段还会配置节点虚拟机大小。

对于运行示例应用程序的单工作线程管理集群和工作负载集群,请使用以下最小虚拟机大小:

  • 未安装任何服务:small
  • 安装的基本服务(Wavefront、Fluent Bit、Contour、Envoy 和 TMC 代理):medium

创建 SSH 密钥对

要使 Tanzu CLI 从运行该 CLI 的计算机连接到 vSphere,必须在部署管理集群时向 Tanzu Kubernetes Grid 提供 SSH 密钥对的公钥部分。如果运行 CLI 的计算机上还没有秘钥对,则可以使用 ssh-keygen 等工具生成密钥对。

  1. 在将运行 Tanzu CLI 的计算机上,运行以下 ssh-keygen 命令。

    ssh-keygen -t rsa -b 4096 -C "email@example.com"
    
  2. 出现提示 Enter file in which to save the key (/root/.ssh/id_rsa): 时,按 Enter 以接受默认值。

  3. 输入并重复密钥对的密码。
  4. 将私钥添加到计算机上运行的 SSH 代理,然后输入在上一步中创建的密码。

    ssh-add ~/.ssh/id_rsa
    
  5. 在文本编辑器中打开文件 .ssh/id_rsa.pub,以便在部署管理集群时轻松复制和粘贴该文件。

获取 vSphere 证书指纹

如果您的 vSphere 环境使用不受信任的自签名证书对连接进行身份验证,则必须在部署管理集群时验证 vCenter Server 的指纹。如果您的 vSphere 环境使用由已知证书颁发机构 (CA) 签名的受信任证书,则无需验证指纹。

您可以使用 Web 浏览器的证书查看器获取vSphere证书指纹。

  1. 在 Web 浏览器中登录到 vSphere Client。
  2. 单击 URL 字段中 Web 地址左侧的安全 (Secure)(挂锁)图标以访问证书查看器。

    后续步骤取决于您使用的浏览器。例如,在 Google Chrome 中,选择连接是安全的 (Connection is secure) > 证书有效 (Certificate is valid) 以查看证书详细信息,包括指纹。

  3. 记录浏览器中的 SHA-1 指纹值。如果它在每个十六进制对之间包含空格,请将每个空格替换为 : 字符,例如,6D:4A:DC:6C:C4:43:73:BB:DF:9A:32:68:67:56:F9:96:02:08:64:F4

    从安装程序界面部署管理集群时,可以使用指纹字符串对其进行验证,或者从配置文件部署集群时将其提供给 VSPHERE_TLS_THUMBPRINT 选项。

IPv6 的设置和规则

要在 IPv6 网络环境中部署支持 IPv6 的管理集群,请执行以下操作:

  1. 将 Linux 配置为接受路由器通告,确保 Docker 服务启动时不会从路由表中移除默认 IPv6 路由。有关详细信息,请参见 Docker CE 删除 IPv6 默认路由sudo sysctl net.ipv6.conf.eth0.accept_ra=2

  2. 为引导集群创建伪装规则以从引导集群发送出站流量:sudo ip6tables -t nat -A POSTROUTING -s fc00:f853:ccd:e793::/64 ! -o docker0 -j MASQUERADE 有关伪装规则的详细信息,请参见伪装

  3. 通过运行 tanzu mc create 部署管理集群,如在配置文件中部署管理集群中所述。

    • 为管理集群创建配置文件时,按照针对 IPv6 配置中所述设置 TKG_IP_FAMILY 和其他变量。
    • 要支持 IPv6,您必须在配置文件(而不是安装程序界面)中部署管理集群。

下一步操作

对于生产部署,强烈建议为集群启用身份管理:

如果在具有外部 Internet 连接的环境中使用 Tanzu Kubernetes Grid,在设置身份管理后,即可部署管理集群到 vSphere。

check-circle-line exclamation-circle-line close-line
Scroll to top icon