必须先准备 vSphere 环境,然后才能使用 Tanzu CLI 或安装程序界面部署管理集群。您必须确保 vSphere 满足常规要求,并导入 Tanzu Kubernetes Grid 创建集群节点虚拟机的基础映像模板。每个基础映像模板包含某个版本的计算机操作系统和某个版本的 Kubernetes。
kubectl
的计算机。请参见安装 Tanzu CLI 和其他工具以与独立管理集群配合使用。
tanzu
、kubectl
和其他命令。vSphere 网络*,具有以下项或者能力:
VSPHERE_CONTROL_PLANE_ENDPOINT
,或者如果对控制平面端点使用 NSX Advanced Load Balancer,请从地址池中自动设置地址。CLUSTER_API_SERVER_PORT
或为具有 NSX Advanced Load Balancer 的环境设置 VSPHERE_CONTROL_PLANE_ENDPOINT_PORT
变量。~/.config/tanzu/tkg/bom/
下,并且其名称包含 Tanzu Kubernetes Grid 版本,例如 v2.1.1 的 bom-2.1.1+vmware.1.yaml
。date
命令以查看时区设置。esxcli system time set
。如果要将 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 个工作节点 | 控制平面节点:
工作节点:
|
示例:
|
控制平面节点:
工作节点:
|
3 个控制平面节点和 3 个工作节点 | 控制平面节点:
工作节点:
|
例如:一个工作负载集群,部署有 3 个控制平面和 500 个工作节点 | 控制平面节点:
工作节点:
|
3 个控制平面节点和 3 个工作节点 | 控制平面节点:
工作节点:
|
例如:200 个工作负载集群,每个集群部署有 3 个控制平面和 5 个工作节点 | 控制平面节点:
工作节点:
|
另外,请参见下面的集群节点的最小虚拟机大小。
在 vSphere 8 上,vSphere with Tanzu 功能包括一个主管,您可以将该主管用作 Tanzu Kubernetes Grid 的管理集群。这意味着在 vSphere 8 上,如果 vSphere with Tanzu 和主管已启用,您不需要使用 tanzu management-cluster create
或 tanzu 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 的每个管理集群和工作负载集群都需要一个静态虚拟 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 之前,必须先将包含运行集群节点的操作系统和 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,如构建计算机映像中所述。
要将基础映像模板导入到 vSphere:
下载集群节点的 Tanzu Kubernetes Grid OVA。对于管理集群,这必须是 Kubernetes v1.24.10 OVA 下载之一。
重要确保在使用安全修补程序版本时下载最新的 OVA 基础映像模板。
您可以在 Tanzu Kubernetes Grid 产品下载页面上找到更新后其中包含安全修补程序的基础映像模板。
在 vSphere Client 中,右键单击 vCenter Server 清单中的对象,选择部署 OVF 模板 (Deploy OVF template)。
按照安装程序提示从 OVA 部署虚拟机。
注意如果选择厚置备作为磁盘格式,则当 Tanzu Kubernetes Grid 从模板创建集群节点虚拟机时,将预留每个节点磁盘的完整大小。如果部署多个集群或具有多个节点的集群,这会快速消耗存储。但是,如果选择精简置备,在部署集群时,这可能会被误认为可用的存储量。如果选择精简置备,则部署集群时可能有足够的可用存储,但存储可能会在集群运行和累计数据时耗尽。
OVA 部署完成后,右键单击虚拟机,然后选择模板 (Template) > 转换为模板 (Convert to Template)。
重要在将虚拟机转换为模板之前,请勿打开虚拟机电源。
在虚拟机和模板视图中,右键单击新模板,选择添加权限,然后将 tkg-user
分配给具有 TKG
角色的模板。
有关如何为 Tanzu Kubernetes Grid 创建用户和角色的信息,请参见下述的 vSphere 帐户所需的权限。
对下载了 OVA 文件的每个 Kubernetes 版本重复此过程。
部署管理集群时提供给 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 访问的凭据和权限中列出的权限。
在 vSphere Client 中,转到管理 > 访问控制 > 角色,然后创建具有以下权限的新角色,例如 TKG
。
vSphere 对象 | 所需权限 |
---|---|
Cns | 可搜索 |
数据存储 | 分配空间 浏览数据存储 低级别文件操作 |
全局(如果使用 Velero 进行备份和还原) | 禁用方法 启用方法 许可证 |
网络 | 分配网络 |
配置文件驱动的存储 | 配置文件驱动的存储视图 |
资源 | 将虚拟机分配给资源池 |
会话 | 消息 验证会话 |
虚拟机 | 更改配置 > 添加现有磁盘 更改配置 > 添加新磁盘 更改配置 >添加或移除设备 更改配置 >高级配置 更改配置 > 更改 CPU 计数 更改配置 > 更改内存 更改配置 > 更改设置 更改配置 >配置裸设备 更改配置 >扩展虚拟磁盘 更改配置 > 修改设备设置 更改配置 > 移除磁盘 更改配置 > 切换磁盘更改跟踪* 编辑清单 >从现有清单创建 编辑清单 > 移除 交互 > 打开电源 交互 > 关闭电源 置备 > 允许只读磁盘访问* 置备 > 允许虚拟机下载* 置备 > 部署模板 快照管理> 创建快照* 快照管理 > 移除快照* *需要启用 Velero 插件所需的快照,如备份和还原管理和工作负载集群基础架构中所述。您可以稍后根据需要添加这些权限。 |
vApp | 导入 |
在管理 (Administration) > 单一登录 (Single Sign On) > 用户和组 (Users and Groups) 中,在相应的域中创建新的用户帐户,例如 tkg-user
。
在主机和集群 (Hosts and Clusters)、虚拟机和模板 (VMs and Templates)、存储 (Storage) 和网络连接 (Networking) 视图中,右键单击 Tanzu Kubernetes Grid 部署将使用的对象,选择添加权限 (Add Permission),并将具有 TKG
角色的 tkg-user
分配给每个对象。
根据集群复杂性和预期需求配置管理集群节点和工作负载集群节点的大小。您可以根据预定义的节点大小将它们设置为 small
、medium
、large
或 extra-large
。
对于 vSphere 上的所有集群,请使用 SIZE
、CONTROLPLANE_SIZE
和 WORKER_SIZE
集群配置变量配置这些集群。或者,要获得更大的粒度,您可以使用 VSPHERE_*
_DISK_GIB
、_NUM_CPUS
和 _MEM_MIB
配置变量。
对于管理集群,安装程序界面实例类型字段还会配置节点虚拟机大小。
对于运行示例应用程序的单工作线程管理集群和工作负载集群,请使用以下最小虚拟机大小:
small
medium
要使 Tanzu CLI 从运行该 CLI 的计算机连接到 vSphere,必须在部署管理集群时向 Tanzu Kubernetes Grid 提供 SSH 密钥对的公钥部分。如果运行 CLI 的计算机上还没有秘钥对,则可以使用 ssh-keygen
等工具生成密钥对。
在将运行 Tanzu CLI 的计算机上,运行以下 ssh-keygen
命令。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
出现提示 Enter file in which to save the key (/root/.ssh/id_rsa):
时,按 Enter 以接受默认值。
将私钥添加到计算机上运行的 SSH 代理,然后输入在上一步中创建的密码。
ssh-add ~/.ssh/id_rsa
在文本编辑器中打开文件 .ssh/id_rsa.pub
,以便在部署管理集群时轻松复制和粘贴该文件。
如果您的 vSphere 环境使用不受信任的自签名证书对连接进行身份验证,则必须在部署管理集群时验证 vCenter Server 的指纹。如果您的 vSphere 环境使用由已知证书颁发机构 (CA) 签名的受信任证书,则无需验证指纹。
您可以使用 Web 浏览器的证书查看器获取vSphere证书指纹。
单击 URL 字段中 Web 地址左侧的安全 (Secure)(挂锁)图标以访问证书查看器。
后续步骤取决于您使用的浏览器。例如,在 Google Chrome 中,选择连接是安全的 (Connection is secure) > 证书有效 (Certificate is valid) 以查看证书详细信息,包括指纹。
记录浏览器中的 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 的管理集群,请执行以下操作:
将 Linux 配置为接受路由器通告,确保 Docker 服务启动时不会从路由表中移除默认 IPv6 路由。有关详细信息,请参见 Docker CE 删除 IPv6 默认路由。sudo sysctl net.ipv6.conf.eth0.accept_ra=2
为引导集群创建伪装规则以从引导集群发送出站流量:sudo ip6tables -t nat -A POSTROUTING -s fc00:f853:ccd:e793::/64 ! -o docker0 -j MASQUERADE
有关伪装规则的详细信息,请参见伪装。
通过运行 tanzu mc create
部署管理集群,如在配置文件中部署管理集群中所述。
TKG_IP_FAMILY
和其他变量。对于生产部署,强烈建议为集群启用身份管理:
如果在具有外部 Internet 连接的环境中使用 Tanzu Kubernetes Grid,在设置身份管理后,即可部署管理集群到 vSphere。