準備將管理叢集部署到 Microsoft Azure

本主題說明如何準備 Microsoft Azure,以執行 Tanzu Kubernetes Grid。

如果您要將 Tanzu Kubernetes Grid 安裝在 Azure VMware 解決方案 (AVS) 上,您會安裝到 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 管理和工作負載叢集〉

一般需求

  • Tanzu CLI 已安裝在本機。請參閱安裝 Tanzu CLI 和 Kubernetes CLI 以與獨立管理叢集配合使用
  • Microsoft Azure 帳戶,且其具備:

    • 建立服務主體並為其指派 Owner 角色所需的權限。
      如需角色的詳細資訊,請參閱 Azure 內建角色
    • 您的叢集具有足夠的虛擬機器核心 (vCPU) 配額。標準 Azure 帳戶的配額是每個區域有 10 個 vCPU。vCPU 需求具體取決於您將使用 prod 還是 dev 計劃。若要進一步瞭解計劃,請參閱工作負載叢集計劃
      Tanzu Kubernetes Grid 叢集要求每個節點需有 2 個 vCPU,表示:
    • 管理叢集:
      • 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 位址。

  • 對於 TCP,允許在本機啟動機器與管理叢集用料表清單 (BoM) 檔案中列出的映像存放庫之間,透過連接埠 443 傳輸流量。*
    • BoM 檔位於 ~/.config/tanzu/tkg/bom/ 下,其名稱含有 Tanzu Kubernetes Grid 版本。例如,tkg-bom-v2.3.1+vmware.1 .yaml
    • 針對所有 imageRepository 值執行 DNS 查閱,以尋找其 CNAME。
  • (選用) OpenSSL 已安裝在本機,用來建立新的金鑰配對或驗證下載套件指紋。請參閱 OpenSSL
  • (選用) 虛擬網路 (VNet),且具有:

    • 管理叢集控制平面節點的子網路
    • 叢集 VNet 資源群組中的網路安全群組 (NSG),位於控制平面子網路上,並含有以下輸入安全規則,以便啟用 SSH 和 Kubernetes API 伺服器連線:
      • 允許任何來源和目的地經由連接埠 22 進行 TCP 傳輸
      • 允許任何來源和目的地經由連接埠 6443 進行 TCP 傳輸,且連接埠 6443 是在您所建立的叢集中的虛擬機器上公開 Kubernetes API 的位置。若要針對管理叢集或工作負載叢集變更這個連接埠,請在部署叢集時,設定 CLUSTER_API_SERVER_PORT 變數。
    • 管理叢集工作節點的子網路
    • 管理叢集工作節點的 NSG,位於叢集的 VNet 資源群組中和叢集的工作節點子網路上

    如果您不使用現有 VNet,安裝程序會建立新的 VNet。

  • Azure CLI 已安裝在本機。請參閱 Microsoft Azure 說明文件中的安裝 Azure CLI

  • 如果要將 LoadBalancer 類型的服務部署到以類別為基礎的工作負載叢集,請依照在 Azure 上以類別為基礎的工作負載叢集的 LoadBalancer 服務需要進行手動閘道或前端設定中所述,來設定 NAT 閘道或其他前端。

*或者參閱準備網際網路受限的環境,以便在無法存取外部網路的情況下安裝。

管理叢集大小調整範例

下表說明 Azure 上的管理叢集大小調整範例。請使用此資料作為指引,以確保管理叢集已調整,而能處理您計劃部署的工作負載叢集數量。工作負載叢集的虛擬機器大小資料行列出用於可以管理… 資料行中範例的虛擬機器大小。

管理叢集計劃 管理叢集的虛擬機器大小 可以管理… 工作負載叢集的虛擬機器大小
3 個控制平面節點和 3 個工作節點
  • 控制平面節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
  • 工作節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
範例:
  • 5 個工作負載叢集,每個叢集各部署了 3 個控制平面和 200 個工作節點;或者
  • 10 個工作負載叢集,每個叢集各部署了 3 個控制平面和 50 個工作節點
  • 控制平面節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
  • 工作節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
3 個控制平面節點和 3 個工作節點
  • 控制平面節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
  • 工作節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
範例:一個工作負載叢集,其中部署了 3 個控制平面和 250 個工作節點
  • 控制平面節點:Standard_D4s_v3 (CPU:4;記憶體:16 GB;SSD:32 GB)
  • 工作節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
3 個控制平面節點和 3 個工作節點
  • 控制平面節點:Standard_D4s_v3 (CPU:4;記憶體:16 GB;SSD:32 GB)
  • 工作節點:Standard_D4s_v3 (CPU:4;記憶體:16 GB;SSD:32 GB)
範例:199 個工作負載叢集,每個叢集部署有 3 個控制平面和 3 個工作節點
  • 控制平面節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)
  • 工作節點:Standard_D2s_v3 (CPU:2;記憶體:8 GB;SSD:16 GB)

為現有 VNet 建立 Azure NSG

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 用戶端應用程式

Tanzu Kubernetes Grid 會將 Azure 資源當成已登錄的用戶端應用程式來管理,此應用程式會透過服務主體來存取 Azure。若要建立服務主體,並設定其對 Azure 資源的存取權,您可以使用 az ad sp create-for-rbac 命令。

  1. 執行 az login 來登入 Azure CLI。

  2. 建立服務主體,並為其指派 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-IDRESOURCE-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.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 訂閱識別碼。

必須重複此動作,以便針對您要使用的每個 Kubernetes 版本或作業系統 (在您部署叢集時,以及每次升級到新版本的 Tanzu Kubernetes Grid 時),接受其基礎映像授權。

建立 SSH 金鑰配對 (選用)

使用 Tanzu CLI,從稱為啟動機器的機器來部署管理叢集。若要連線至 Azure,啟動機器必須提供 SSH 金鑰配對中的公開金鑰部分。如果啟動機器還沒有 SSH 金鑰配對,您可以使用 ssh-keygen 等工具來產生一個金鑰配對。

  1. 在啟動機器上,執行以下 ssh-keygen 命令。

    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    
  2. 當出現提示 Enter file in which to save the key (/root/.ssh/id_rsa): 時,請按 Enter 以接受預設值。

  3. 輸入金鑰配對的密碼,並重複此動作。
  4. 將私密金鑰新增到正在您機器上執行的 SSH Proxy,然後輸入您在上一個步驟中建立的密碼。

    ssh-add ~/.ssh/id_rsa
    
  5. 在文字編輯器中開啟 .ssh/id_rsa.pub 檔案,以便在您部署管理叢集時輕鬆地複製貼上即可。

準備檢查清單

使用這份檢查清單,來確定您已準備好將 Tanzu Kubernetes Grid 管理叢集部署到 Azure:

  • 已安裝 Tanzu CLI

    • 執行 tanzu version。有關與 Tanzu Kubernetes Grid v2.3 相容的 CLI 版本清單,請參見產品互通性對照表
  • Azure 帳戶

    • 登入 Azure Web 入口網站 (網址:https://portal.azure.com)。
  • 已安裝 Azure CLI

    • 執行 az version。輸出應會列出 Azure CLI 的目前版本,如 Microsoft Azure 說明文件中的安裝 Azure CLI 所列。
  • 已登錄 tkg 應用程式

    • 在 Azure 入口網站中,選取 Active Directory > 應用程式登錄 (App Registrations) > 擁有的應用程式 (Owned applications),並確認其中已列出 tkg 應用程式 (如同上述將 Tanzu Kubernetes Grid 登錄為 Azure 用戶端應用程式中的設定),且其具有目前的密碼。
    • 或者,在 Azure CLI 中,執行 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 中的身分識別管理和存取控制的概念資訊,請參閱關於身分識別和存取管理

如果您在具有外部網際網路連線的環境中使用 Tanzu Kubernetes Grid,一旦設定身分識別管理後,即可準備將管理叢集部署到 Azure。

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