- 使用 Azure CLI 部署 Azure Nexus Kubernetes 叢集。
開始之前
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
使用 Azure Cloud Shell 中的 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱 如何在 Docker 容器中執行 Azure CLI。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
安裝 必要 Azure CLI 延伸模組的最新版本。
本文需要 2.61.0 版或更新版本的 Azure CLI。 如果您是使用 Azure Cloud Shell,就已安裝最新版本。
如果您有多個 Azure 訂用帳戶,請使用命令
az account選取適當的訂用帳戶識別碼,以計費資源。請參閱 參考區段 中的 VM SKU 資料表,以取得支援的 VM SKU 清單。
請參閱 支援的 Kubernetes 版本 ,以取得支援的 Kubernetes 版本清單。
使用
az group create命令建立資源群組。 Azure 資源群組是部署及管理 Azure 資源所在的邏輯群組。 建立資源群組時,系統會提示您指定位置。 此位置是資源群組中繼資料的儲存位置,如果未在資源建立期間指定另一個區域,此位置也會是您在 Azure 中執行資源的位置。 下列範例會在 eastus 位置建立名為 myResourceGroup 的資源群組。az group create --name myResourceGroup --location eastus下列輸出範例類似於成功建立資源群組:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null }若要部署 Bicep 檔案或 ARM 範本,您需要對要部署的資源具備寫入存取權,並且需要存取 Microsoft.Resources/deployments 資源類型上所有作業的權限。 例如,若要部署叢集,您需要 Microsoft.NetworkCloud/kubernetesclusters/write 和 Microsoft.Resources/deployments/* 權限。 如需角色與權限的清單,請參閱 Azure 內建角色。
您需要
custom locationAzure 操作員連接點叢集的資源識別碼。您需要根據特定的工作負載需求建立 各種網絡 ,並且為您的工作負載提供適當的 IP 位址至關重要。 為確保順利實施,建議諮詢相關支援團隊尋求協助。
本快速入門假設您已有 Kubernetes 概念的基本知識。 如需詳細資訊,請參閱 Azure Kubernetes Services (AKS) 的 Kubernetes 核心概念。
建立 Azure Nexus Kubernetes 叢集
下列範例會在 eastus 位置的資源群組 myResourceGroup 中建立名為 myNexusK8sCluster 的叢集。
在執行命令之前,您需要設定數個變數來定義叢集的組態。 以下是您需要設定的變數,以及一些可用於某些變數的預設值:
| Variable | Description |
|---|---|
| 位置 | 您要建立叢集的 Azure 區域。 |
| 資源群組 | 您要建立叢集的 Azure 資源群組名稱。 |
| 訂閱識別碼 | Azure 訂用帳戶的識別碼。 |
| 自定義位置 | 此引數指定 Nexus 執行個體的自訂位置。 |
| CSN_ARM_ID | CSN ID 是您要使用的雲端服務網路的唯一識別碼。 |
| CNI_ARM_ID | CNI ID 是容器執行階段要使用的網路介面的唯一識別碼。 |
| AAD_管理群組_物件_ID | 具有叢集管理員權限的 Microsoft Entra 群組的物件 ID。 |
| CLUSTER_NAME | 您要指定給 Nexus Kubernetes 叢集的名稱。 |
| K8S_VERSION | 您要使用的 Kubernetes 版本。 |
| ADMIN_USERNAME | 叢集管理員的使用者名稱。 |
| SSH_PUBLIC_KEY | 用於與叢集安全通訊的 SSH 公開金鑰。 |
| CONTROL_PLANE_COUNT | 叢集的控制平面節點數目。 |
| CONTROL_PLANE_VM_SIZE | 控制平面節點的虛擬機器大小。 |
| INITIAL_AGENT_POOL_NAME | 初始代理池的名稱。 |
| INITIAL_AGENT_POOL_COUNT | 初始代理程式集區中的節點數目。 |
| INITIAL_AGENT_POOL_VM_SIZE | 初始代理程式集區的虛擬機器大小。 |
| POD_CIDR | 叢集中 Kubernetes Pod 的網路範圍,以 CIDR 表示法表示。 |
| SERVICE_CIDR | 叢集中 Kubernetes 服務的網路範圍,以 CIDR 表示法表示。 |
| DNS_SERVICE_IP | Kubernetes DNS 服務的 IP 位址。 |
定義這些變數之後,您可以執行 Azure CLI 命令來建立叢集。 在末尾新增 --debug 旗標,以提供更詳細的輸出以進行疑難排解。
若要定義這些變數,請使用下列 set 命令,並將範例值取代為您偏好的值。 您也可以使用部分變數的預設值,如下列範例所示:
RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"
這很重要
在執行這些命令之前,您必須將CUSTOM_LOCATION、CSN_ARM_ID、CNI_ARM_ID和AAD_ADMIN_GROUP_OBJECT_ID的預留位置取代為實際值。
定義這些變數之後,您可以執行下列 Azure CLI 命令來建立 Kubernetes 叢集:
az networkcloud kubernetescluster create \
--name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--subscription "${SUBSCRIPTION_ID}" \
--extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
--location "${LOCATION}" \
--kubernetes-version "${K8S_VERSION}" \
--aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
--admin-username "${ADMIN_USERNAME}" \
--ssh-key-values "${SSH_PUBLIC_KEY}" \
--control-plane-node-configuration \
count="${CONTROL_PLANE_COUNT}" \
vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
--initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
--network-configuration \
cloud-services-network-id="${CSN_ARM_ID}" \
cni-network-id="${CNI_ARM_ID}" \
pod-cidrs="[${POD_CIDR}]" \
service-cidrs="[${SERVICE_CIDR}]" \
dns-service-ip="${DNS_SERVICE_IP}"
如果沒有足夠的容量來部署要求的叢集節點,則會出現錯誤訊息。 不過,此訊息不會提供可用容量的任何詳細資料。 它指出,由於容量不足,無法繼續建立叢集。
備註
容量計算會考量整個平台叢集、而不是僅限於個別機架。 因此,如果在容量不足的區域 (其中機架等於區域) 中建立代理程式集區,但另一個區域有足夠的容量,則叢集建立會繼續進行,但最終會逾時。只有在建立叢集或代理程式集區期間未指定特定區域時,這種容量檢查方法才有意義。
幾分鐘後,命令完成並傳回叢集的相關資訊。 如需更多進階選項,請參閱 快速入門:使用 Bicep 部署 Azure Nexus Kubernetes 叢集。
檢閱已部署的資源
部署完成之後,您可以使用 CLI 或 Azure 入口網站來檢視資源。
若要檢視資源群組中myNexusK8sCluster叢集的myResourceGroup詳細數據,請執行下列 Azure CLI 命令:
az networkcloud kubernetescluster show \
--name myNexusK8sCluster \
--resource-group myResourceGroup
此外,若要取得與資源群組中myNexusK8sCluster叢集相關myResourceGroup聯的代理程式集區名稱清單,您可以使用下列 Azure CLI 命令。
az networkcloud kubernetescluster agentpool list \
--kubernetes-cluster-name myNexusK8sCluster \
--resource-group myResourceGroup \
--output table
連接至叢集
現在已成功建立 Nexus Kubernetes 叢集並連線到 Azure Arc,您可以使用叢集連線功能輕鬆連線到它。 叢集連線可讓您從任何地方安全地存取和管理叢集,方便進行互動式開發、偵錯和叢集管理任務。
如需可用選項的詳細資訊,請參閱 連線到 Azure 運算子連接點 Kubernetes 叢集。
備註
當您建立 Nexus Kubernetes 叢集時,Nexus 會自動建立專門用來儲存叢集資源的受控資源群組,在此群組內,會建立 Arc 連線的叢集資源。
若要存取叢集,您需要設定叢集連線 kubeconfig。 使用相關的 Microsoft Entra 實體登入 Azure CLI 之後,您可以從任何位置取得與叢集通訊的必要資訊 kubeconfig ,甚至是在叢集周圍的防火牆之外。
設定
CLUSTER_NAME和RESOURCE_GROUPSUBSCRIPTION_ID變數。CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>查詢管理的資源群組並儲存到
azaz account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)下列命令會啟動 connectedk8s Proxy,可讓您連線至指定 Nexus Kubernetes 叢集的 Kubernetes API 伺服器。
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &用
kubectl來將要求傳送至叢集:kubectl get pods -A您現在應該會看到叢集的回應,其中包含所有節點的清單。
備註
如果您看到錯誤訊息「無法將存取權杖張貼至用戶端 proxy」或「無法連線到 MSI」,您可能需要執行 az login 來重新向 Azure 進行驗證。
新增代理人集區
上一個步驟中建立的叢集有單一節點集區。 讓我們使用命令 az networkcloud kubernetescluster agentpool create 新增第二個代理程式集區。 下列範例會建立名為 myNexusK8sCluster-nodepool-2的代理程式集區:
您也可以使用部分變數的預設值,如下列範例所示:
RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"
定義這些變數之後,您可以執行下列 Azure CLI 命令來新增代理程式集區:
az networkcloud kubernetescluster agentpool create \
--name "${AGENT_POOL_NAME}" \
--kubernetes-cluster-name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--subscription "${SUBSCRIPTION_ID}" \
--extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
--count "${AGENT_POOL_COUNT}" \
--mode "${AGENT_POOL_MODE}" \
--vm-sku-name "${AGENT_POOL_VM_SIZE}"
幾分鐘後,命令會完成並傳回代理程式集區的相關資訊。 如需更多進階選項,請參閱 快速入門:使用 Bicep 部署 Azure Nexus Kubernetes 叢集。
備註
您可以使用初始代理程式集區設定,在叢集本身的初始建立期間新增多個代理程式集區。 但是,如果您想要在初始建立後新增代理程式集區,您可以使用上述命令為 Nexus Kubernetes 叢集建立其他代理程式集區。
下列輸出範例類似於成功建立代理程式集區。
$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count Location Mode Name ProvisioningState ResourceGroup VmSkuName
------- ---------- ------ ---------------------------- ------------------- --------------- -----------
1 eastus System myNexusK8sCluster-nodepool-1 Succeeded myResourceGroup NC_P10_56_v1
1 eastus User myNexusK8sCluster-nodepool-2 Succeeded myResourceGroup NC_P10_56_v1
清理資源
不再需要時,請刪除資源群組。 資源群組及資源群組中的所有資源都會被刪除。
使用 az group delete 命令來移除資源群組、Kubernetes 叢集,以及運算子連接點網路資源以外的所有相關資源。
az group delete --name myResourceGroup --yes --no-wait
後續步驟
您現在可以直接透過 叢集連線 或透過 Azure 操作員服務管理員部署 CNF。