本主題說明如何準備 Microsoft Azure,以執行 Tanzu Kubernetes Grid。
如果您要將 Tanzu Kubernetes Grid 安裝在 Azure VMware 解決方案 (AVS) 上,您會安裝到 vSphere 環境中。請參閱〈準備將管理叢集部署到 VMware Cloud 環境〉中的準備 Microsoft Azure 上的 Azure VMware 解決方案,來準備您的環境,以及準備將管理叢集部署到 vSphere,以部署管理叢集。
為方便起見,此頁面末尾提供準備檢查清單,以確定您已準備好將 Tanzu Kubernetes Grid 管理叢集部署到 Azure。
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 總計 |
---|---|---|---|---|
Dev | 1 | 4 | 4 | 8 |
5 | 20 | 24 | ||
Prod | 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.2.0+vmware.1 .yaml
。imageRepository
值執行 DNS 查閱,以尋找其 CNAME。(選用) 虛擬網路 (VNet),且具有:
CLUSTER_API_SERVER_PORT
變數。如果您不使用現有 VNet,安裝程序會建立新的 VNet。
Azure CLI 已安裝在本機。請參閱 Microsoft Azure 說明文件中的安裝 Azure CLI。
如果要將 LoadBalancer
類型的服務部署到以類別為基礎的工作負載叢集,請依照在 Azure 上以類別為基礎的工作負載叢集的 LoadBalancer
服務需要進行手動閘道或前端設定中所述,來設定 NAT 閘道或其他前端。
*或者參閱準備網際網路受限的環境,以便在無法存取外部網路的情況下安裝。
下表說明 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 (Select an existing 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 訂閱識別碼和 VNet 資源群組APP-ID
是從 az 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
和訂閱識別碼。
在 Tanzu Kubernetes Grid v2.2 中,預設叢集映像 --plan
值是 k8s-1dot25dot7-ubuntu-2004
,這是以 Kubernetes 版本 1.25.7 和機器作業系統 Ubuntu 20.04 為基礎。執行下列命令:
az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot25dot7-ubuntu-2004 --subscription AZURE_SUBSCRIPTION_ID
其中,AZURE_SUBSCRIPTION_ID
是您的 Azure 訂閱識別碼。
必須重複此動作,以便針對您要使用的每個 Kubernetes 版本或作業系統 (在您部署叢集時,以及每次升級到新版本的 Tanzu Kubernetes Grid 時),接受其基礎映像授權。
使用 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 Proxy,然後輸入您在上一個步驟中建立的密碼。
ssh-add ~/.ssh/id_rsa
在文字編輯器中開啟 .ssh/id_rsa.pub
檔案,以便在您部署管理叢集時輕鬆地複製貼上即可。
使用這份檢查清單,來確定您已準備好將 Tanzu Kubernetes Grid 管理叢集部署到 Azure:
已安裝 Tanzu CLI
tanzu version
。輸出應會列出 version: v0.29.0
,這是 Tanzu Kubernetes Grid v2.2 中的 Tanzu Framework 版本。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-1dot25dot7-ubuntu-2004
。輸出應會包含 "accepted": true
。對於生產部署,強烈建議為叢集啟用身分識別管理:* 如需您在部署管理叢集之前要執行的準備步驟的相關資訊,請參閱設定身分識別管理中的取得您的身分識別提供者詳細資料。* 如需 Tanzu Kubernetes Grid 中的身分識別管理和存取控制的概念資訊,請參閱關於身分識別和存取管理。
如果您在具有外部網際網路連線的環境中使用 Tanzu Kubernetes Grid,一旦設定身分識別管理後,即可準備將管理叢集部署到 Azure。