本主题介绍了如何准备 Microsoft Azure 以运行 Tanzu Kubernetes Grid。
如果要在 Azure VMware 解决方案 (AVS) 上安装 Tanzu Kubernetes Grid,则您将安装到 vSphere 环境中。请参见《准备部署管理集群到 VMware Cloud 环境》中的准备 Microsoft Azure 上的 Azure VMware 解决方案以准备环境,以及准备部署管理集群到 vSphere 以部署管理集群。
为方便起见,此页面末尾提供了准备检查表,以确保您已准备好将 Tanzu Kubernetes Grid 管理集群部署到 Azure。
重要Tanzu Kubernetes Grid v2.4.x 是支持在 Azure 上创建独立 TKG 管理集群的上一个 TKG 版本。Tanzu Kubernetes Grid v2.5 版本中将移除在 Azure 上创建独立 TKG 管理集群的功能。
从现在开始,VMware 建议您使用 Tanzu Mission Control 创建本机 Azure AKS 集群,而不是在 Azure 上创建新的 TKG 管理集群。有关如何使用 Tanzu Mission Control 创建本机 Azure AKS 集群的信息,请参见《Tanzu Mission Control》文档中的管理 Azure AKS 集群的生命周期。
有关详细信息,请参见《VMware Tanzu Kubernetes Grid v2.4 发行说明》中的弃用 AWS 和 Azure 上的 TKG 管理和工作负载集群。
具有以下条件的 Microsoft Azure 帐户:
Owner
角色所需的权限。 prod
还是 dev
计划。要了解有关计划的更多信息,请参见工作负载集群计划。dev
计划:4 个 vCPU(1 个主节点、1 个工作节点)prod
计划:8 个 vCPU(3 个主节点、1 个工作节点)dev
计划:4 个 vCPU(1 个主节点、1 个工作节点)prod
计划:12 个 vCPU(3 个主节点、3 个工作节点)例如,假设单个管理集群以及具有相同计划的所有集群:
计划 | 工作负载集群 | 用于工作负载的 vCPU | 用于管理的 vCPU | 总 vCPU |
---|---|---|---|---|
开发 | 1 | 4 个 | 4 个 | 8 |
5 | 20 | 24 | ||
生产 | 1 | 12 | 8 | 20 |
5 | 60 | 68 |
集群具有足够的公用 IP 地址配额,包括公用 IP 地址 - 标准、公用 IP 地址 - 基本和静态公用 IP 地址的配额。标准 Azure 帐户的配额为每个地理区域 10 个公用 IP 地址。每个 Tanzu Kubernetes Grid 集群都需要 2 个公用 IP 地址,而无论它有多少个控制平面节点和工作节点。对于类型为 LoadBalancer
的每个 Kubernetes 服务对象,需要 1 个公用 IP 地址。
~/.config/tanzu/tkg/bom/
下,其名称包含 Tanzu Kubernetes Grid 版本。例如,tkg-bom-v2.3.1+vmware.1 .yaml
。imageRepository
值运行 DNS 查找以查找其 CNAME。(可选)虚拟网络 (VNet),具有:
CLUSTER_API_SERVER_PORT
变量。如果不使用现有 VNet,安装过程将创建一个新 VNet。
Azure CLI 本地安装。请参见 Microsoft Azure 文档中的安装 Azure CLI。
如果要将 LoadBalancer
类型的服务部署到基于类的工作负载集群,请按照 Azure上基于类的工作负载集群的 LoadBalancer
服务需要手动配置网关或前端中所述,配置 NAT 网关和其他前端。
*或者参见准备 Internet 受限环境以便在无法访问外部网络的情况下可以进行安装。
下表介绍了 Azure 上的管理集群的大小调整示例。使用此数据作为指导,确保扩展管理集群以处理您计划部署的工作负载集群数量。工作负载集群虚拟机大小列中列出了用于可以管理…列中示例的虚拟机大小。
管理集群计划 | 管理集群虚拟机大小 | 可以管理 … | 工作负载集群虚拟机大小 |
---|---|---|---|
3 个控制平面节点和 3 个工作节点 |
|
示例:
|
|
3 个控制平面节点和 3 个工作节点 |
|
例如:一个工作负载集群,部署有 3 个控制平面和 250 个工作节点 |
|
3 个控制平面节点和 3 个工作节点 |
|
例如:199 个工作负载集群,每个集群部署有 3 个控制平面和 3 个工作节点 |
|
Azure 上的 Tanzu Kubernetes Grid 管理集群和工作负载集群要求在其 VNet 和 VNet 资源组中定义两个网络安全组 (NSG):
CLUSTER-NAME-controlplane-nsg
并与集群的控制平面子网相关联的 NSG名为 CLUSTER-NAME-node-nsg
并与集群的工作节点子网关联的 NSG
其中,CLUSTER-NAME
是集群的名称。
注意提供不遵循上述格式的 NSG 名称可能会阻止部署。
如果为管理集群指定现有 VNet,则必须按照上述常规要求中所述创建这些 NSG。为管理集群指定现有 VNet 时,在安装程序界面中选择现有 VNet 或在其配置文件中选择 AZURE_VNET_NAME
。
如果没有为集群指定现有 VNet,部署过程将创建新的 VNet 和所需的 NSG。
有关如何配置集群的 Vnet、资源组和子网,请参见《配置文件变量参考》中的 Microsoft Azure 表。
Tanzu Kubernetes Grid 将 Azure 资源作为通过服务主体访问 Azure 的已注册客户端应用程序进行管理。要创建服务主体并配置其对 Azure 资源的访问权限,可以使用 az ad sp create-for-rbac
命令。
通过运行 az login
登录到 Azure CLI。
创建服务主体,并为其分配 Owner
角色:
az ad sp create-for-rbac --role "Owner" --name "APP-NAME" --scopes /subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP
az role assignment create --assignee APP-ID --role "Owner"
其中:
APP-NAME
是提供给服务主体的任何名称SUBSCRIPTION-ID
和 RESOURCE-GROUP
是 Azure 订阅 ID 和 VNet 资源组APP-ID
是从 daz ad sp create-for-rbac
返回的 appId
值例如,要创建 Owner
角色并将其分配给名为 tkg
的服务主体:
$ az ad sp create-for-rbac --role "Owner" --name "tkg" --scopes /subscriptions/c789uce3-aaaa-bbbb-cccc-a51b6b0gb405/resourceGroups/myrg
Creating 'Owner' role assignment under scope '/subscriptions/c789uce3-aaaa-bbbb-cccc-a51b6b0gb405'
The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
'name' property in the output is deprecated and will be removed in the future. Use 'appId' instead.
{
"appId": "c407cfd4-aaaa-bbbb-cccc-80af703eb0ed",
"displayName": "tkg",
"name": "c407cfd4-aaaa-bbbb-cccc-80af703eb0ed",
"password": "R6yM_.aaaabbbbccccdddd111122223333",
"tenant": "9c117323-aaaa-bbbb-cccc-9ee430723ba3"
}
$ az role assignment create --assignee c407cfd4-aaaa-bbbb-cccc-80af703eb0ed --role "Owner"
记录输出。将在以下接受基础映像许可证步骤中以及稍后部署管理集群时使用此信息。有关 az ad sp create-for-rbac
支持的选项的完整列表,请参见 Azure 文档中的 az ad sp create-for-rbac。
要在 Azure 上运行管理集群虚拟机,请接受其基本 Kubernetes 版本和计算机操作系统的许可证。
运行 az vm image terms accept
命令,指定 --plan
和订阅 ID。
在 Tanzu Kubernetes Grid v2.3.1 中,默认集群映像 --plan
值为 k8s-1dot26dot8-ubuntu-2004
,具体取决于 Kubernetes 版本 1.26.8 和计算机操作系统 Ubuntu 20.04。运行下列命令:
az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot26dot8-ubuntu-2004 --subscription AZURE_SUBSCRIPTION_ID
其中,AZURE_SUBSCRIPTION_ID
是 Azure 订阅 ID。
必须重复此操作,以便接受要在部署集群时以及每次升级到新版本的 Tanzu Kubernetes Grid 时要使用的每个 Kubernetes 版本或操作系统的基础映像许可证。
使用 Tanzu CLI 从称为引导计算机的计算机部署管理集群。要连接到 Azure,引导计算机必须提供 SSH 密钥对的公钥部分。如果引导计算机还没有 SSH 密钥对,您可以使用 ssh-keygen
等工具生成一个密钥对。
在引导计算机上,运行以下 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
,以便在部署管理集群时轻松复制和粘贴该文件。
使用以下检查表确保您准备好将 Tanzu Kubernetes Grid 管理集群部署到 Azure:
已安装 Tanzu CLI
tanzu version
。有关与 Tanzu Kubernetes Grid v2.3 兼容的 CLI 版本列表,请参见产品互操作性矩阵。Azure 帐户
https://portal.azure.com
)。已安装 Azure CLI
az version
。输出应列出 Azure CLI 的当前版本,如 Microsoft Azure 文档中的安装 Azure CLI 中所列。已注册 tkg
应用
tkg
应用在上述将 Tanzu Kubernetes Grid 注册为 Azure 客户端应用中列为已配置且具有当前密钥。az ad sp show --id.
已接受基础虚拟机映像许可证
az vm image terms show --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot26dot8-ubuntu-2004
。输出应包含 "accepted": true
。对于生产部署,强烈建议为集群启用身份管理:*有关部署管理集群之前要执行的准备步骤的信息,请参阅配置身份管理中的获取您的身份提供程序详细信息。* 有关 Tanzu Kubernetes Grid 中的身份管理和访问控制的概念信息,请参见关于身份和访问管理。
如果在具有外部 Internet 连接的环境中使用 Tanzu Kubernetes Grid,在设置身份管理后,即可将管理集群部署到 Azure。