本主題說明如何設定 Tanzu Kubernetes Grid (TKG) 工作負載叢集,以使用特定於 Microsoft Azure 且不能完全在叢集的平面組態檔或 Kubernetes 樣式的物件規格中設定的功能。
如需如何使用組態檔和物件規格,在 Azure 上設定工作負載叢集的相關資訊,請參閱 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 管理和工作負載叢集〉。
依預設,Azure 管理叢集和工作負載叢集是公用叢集。但是,您也可以將其設定為私人叢集,表示其 API 伺服器使用 Azure 內部負載平衡器 (ILB),因此只能從叢集自身的 VNet 或對等連線 VNet 中存取。
若要使 Azure 叢集整合為私人叢集,請在其組態檔中包含以下內容:
將 AZURE_ENABLE_PRIVATE_CLUSTER
設定為 true
。
(選用) 將 AZURE_FRONTEND_PRIVATE_IP
設定為叢集負載平衡器的內部位址。
10.0.0.100
。將 AZURE_VNET_NAME
、AZURE_VNET_CIDR
、AZURE_CONTROL_PLANE_SUBNET_NAME
、AZURE_CONTROL_PLANE_SUBNET_CIDR
、AZURE_NODE_SUBNET_NAME
和 AZURE_NODE_SUBNET_CIDR
設定為用於其他 Azure 私人叢集的 VNet 和子網路。
(選用) 如果您需要控制平面和工作節點能夠透過 Azure 網際網路連線存取網際網路,請將 AZURE_ENABLE_CONTROL_PLANE_OUTBOUND_LB
和 AZURE_ENABLE_NODE_OUTBOUND_LB
設定為 true
。
依預設,Azure 私人叢集會針對負載平衡器類型的每個 Kubernetes 服務,建立一個公用 IP 位址。若要將負載平衡器服務設定為使用私人 IP 位址,請將以下註解新增到部署資訊清單:
---
metadata:
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
如需詳細資訊,請參閱叢集 API 提供者 Azure 說明文件中的 API 伺服器端點。
Tanzu Kubernetes Grid 可以在多個目標平台帳戶上執行工作負載叢集,例如在不同的團隊之間分割雲端使用方式,或者將不同的安全設定檔套用至生產、暫存和開發工作負載。
若要將工作負載叢集部署到備用 Azure 服務主體帳戶 (不同於用於部署其管理叢集的帳戶),請執行以下動作:
建立備用 Azure 帳戶。您可以在後面的步驟中使用此帳戶的詳細資料建立 AzureClusterIdentity。如需建立 Azure 服務主體帳戶的相關資訊,請參閱 Azure 說明文件中的如何:使用入口網站建立可存取資源的 Azure AD 應用程式和服務主體。
將 kubectl
的內容設定為管理叢集:
kubectl config use-context MY-MGMT-CLUSTER@MY-MGMT-CLUSTER
其中,MY-MGMT-CLUSTER
是管理叢集的名稱。
使用以下內容建立 secret.yaml
檔案:
apiVersion: v1
kind: Secret
metadata:
name: SECRET-NAME
type: Opaque
data:
clientSecret: CLIENT-SECRET
其中:
SECRET-NAME
是用戶端密碼的密碼名稱。CLIENT-SECRET
是服務主體身分識別的用戶端密碼。用戶端密碼必須採用 base64 編碼。使用該檔案建立 Secret
物件:
kubectl apply -f secret.yaml
使用以下內容建立 identity.yaml
檔案:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: AzureClusterIdentity
metadata:
name: EXAMPLE-IDENTITY
namespace: EXAMPLE-NAMESPACE
spec:
type: ManualServicePrincipal
tenantID: AZURE-TENANT-ID
clientID: CLIENT-ID
clientSecret: {"name":"SECRET-NAME","namespace":"default"}
allowedNamespaces:
list:
- CLUSTER-NAMESPACE-1
- CLUSTER-NAMESPACE-1
其中:
EXAMPLE-IDENTITY
是用於 AzureClusterIdentity 的名稱。EXAMPLE-NAMESPACE
是 AzureClusterIdentity 的命名空間。AZURE-TENANT-ID
是 Azure 承租人識別碼。CLIENT-ID
是 Azure AD 應用程式的用戶端識別碼 (也稱為 AppID)。SECRET-NAME
是用戶端密碼的密碼名稱。CLUSTER-NAMESPACE-1
和 CLUSTER-NAMESPACE-2
是允許叢集使用其中身分識別的 Kubernetes 命名空間。可以使用命名空間陣列選取這些命名空間。使用該檔案建立 AzureClusterIdentity
物件:
kubectl apply -f identity.yaml
管理叢集現在可以使用新的 AzureClusterIdentity
物件將工作負載叢集部署到備用帳戶。
若要建立使用備用 Azure 帳戶的工作負載叢集,請將下列變數包含在叢集組態檔中:
AZURE_IDENTITY_NAME: EXAMPLE-IDENTITY
AZURE_IDENTITY_NAMESPACE: EXAMPLE-NAMESPACE
其中:
EXAMPLE-IDENTITY
是用於 AzureClusterIdentity 的名稱。EXAMPLE-NAMESPACE
是 AzureClusterIdentity 的命名空間。建立工作負載叢集後,使用備用帳戶登入 Azure 入口網站,您應該會看到叢集正在執行。
有兩種方法可以在 Azure 上部署啟用了 NVIDIA GPU 的工作負載叢集:
ClusterResourceSet
(CRS) 來設定管理叢集,以自動建立一或多個啟用了 GPU 的工作負載叢集下方的子區段說明這兩種方法以及如何測試啟用了 GPU 的叢集。
若要部署工作負載叢集並手動對其進行設定以利用 Azure 上可用的 NVIDIA GPU 虛擬機器,請執行以下動作:
在叢集的組態檔中,針對工作節點,將 AZURE_NODE_MACHINE_TYPE
設定為與 GPU 相容的虛擬機器類型,例如 Standard_NC4as_T4_v3
。
使用叢集組態檔部署叢集:
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
其中,MY-GPU-CLUSTER
是分配給叢集的名稱。
在叢集上安裝 GPU 叢集原則和 GPU Operator:
如果 kubectl context
不是目前內容,則將其設定為叢集。
從叢集 API 提供者 Azure 存放庫下載所需的 NVIDIA GPU 資源,並將其儲存到目前的目錄:
套用叢集原則:
kubectl apply clusterpolicy-crd.yaml
套用 GPU Operator:
kubectl apply gpu-operator-components.yaml
執行 kubectl get pods -A
。您應該會看到 default
命名空間中的 gpu-operator-
網繭以及 gpu-operator-resources
命名空間中的 nvidia-
網繭的清單。
附註此功能處於不受支援的技術預覽狀態;請參閱 TKG 功能狀態。
每當將 gpu: nvidia
新增到叢集資訊清單中的標籤時,可以將管理叢集設定為自動建立啟用了 GPU 的工作負載叢集。為此,請安裝 ClusterResourceSet
(CRS) 並將其啟用,如下所示:
若要設定管理叢集以建立 GPU 叢集,請執行以下動作:
在 VMware {code} Sample Exchange 中搜尋 TKG 的 GPU CRS 並下載 Tanzu Kubernetes Grid v1.4 的 gpu-crs.yaml
檔案。
將 kubectl
的內容設定為管理叢集的內容:
kubectl config use-context my-management-cluster-admin@my-management-cluster
將 CRS 檔套用至管理叢集,使用 --server-side
選項處理大量 ConfigMap
資料:
kubectl apply -f gpu-crs.yaml --server-side
若要建立 GPU 工作負載叢集,請執行以下動作:
在叢集的組態檔中,針對工作節點,將 AZURE_NODE_MACHINE_TYPE
設定為與 GPU 相容的虛擬機器類型,例如 Standard_NC4as_T4_v3
。
使用具有 --dry-run
選項的 tanzu cluster create
透過叢集組態檔產生部署資訊清單:
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG --dry-run > MY-GPU-CLUSTER-MANIFEST
其中,MY-GPU-CLUSTER
是分配給叢集的名稱。
透過將叢集傳遞到 kubectl apply
來建立叢集:
kubectl apply -f MY-GPU-CLUSTER-MANIFEST
執行 kubectl get pods -A
。您應該會看到 default
命名空間中的 gpu-operator-
網繭以及 gpu-operator-resources
命名空間中的 nvidia-
網繭的清單。
若要測試啟用了 GPU 的叢集,請執行以下動作:
透過執行 NVIDIA 說明文件中的 CUDA VectorAdd 向量新增測試來測試 GPU 處理。
測試 GPU Operator:
垂直擴充工作負載叢集的工作節點計數:
tanzu cluster scale MY-GPU-CLUSTER -w 2
再次執行 kubectl get pods -A
。您應該會看到為新增的節點列出的其他 gpu-operator-
和 nvidia-
網繭。