Share via


快速入門:使用 Azure CLI 建立 Azure Nexus Kubernetes 叢集

  • 使用 Azure CLI 部署 Azure Nexus Kubernetes 叢集。

開始之前

如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

  • 安裝最新版 的必要 Azure CLI 擴充功能

  • 本文需要 Azure CLI 2.49.0 版或更新版本。 如果您是使用 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/部署資源類型上的所有作業。 例如,若要部署叢集,您需要 Microsoft.NetworkCloud/kubernetesclusters/write 和 Microsoft.Resources/deployments/* 許可權。 如需角色與權限的清單,請參閱 Azure 內建角色

  • 您需要 custom location Azure 操作員 Nexus 叢集的資源識別碼。

  • 您必須根據特定的工作負載需求建立 各種網路 ,而且必須有適當的IP位址可供您的工作負載使用。 為了確保順利執行,建議您諮詢相關的支援小組以取得協助。

  • 本快速入門假設您已有 Kubernetes 概念的基本知識。 如需詳細資訊,請參閱 Azure Kubernetes Services (AKS) 的 Kubernetes 核心概念

建立 Azure Nexus Kubernetes 叢集

下列範例會在 eastus 位置的資源群組 myResourceGroup 中建立名為 myNexusK8sCluster叢集。

執行命令之前,您必須設定數個變數來定義叢集的組態。 以下是您需要設定的變數,以及可用於特定變數的一些預設值:

變數 描述
LOCATION 您想要在其中建立叢集的 Azure 區域。
RESOURCE_GROUP 您想要在其中建立叢集的 Azure 資源群組名稱。
SUBSCRIPTION_ID Azure 訂用帳戶的標識碼。
CUSTOM_LOCATION 這個自變數會指定 Nexus 實例的自定義位置。
CSN_ARM_ID CSN 識別碼是您想要使用的雲端服務網路的唯一標識碼。
CNI_ARM_ID CNI 識別碼是容器運行時間所要使用的網路介面的唯一標識碼。
AAD_ADMIN_GROUP_OBJECT_ID 應該在叢集上具有系統管理員許可權的 Microsoft Entra 群組對象標識碼。
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 旗標,以提供更詳細的輸出以供疑難解答之用。

若要定義這些變數,請使用下列集合命令,並將範例值取代為您慣用的值。 您也可以使用部分變數的預設值,如下列範例所示:

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_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}" \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE}}]" \
  --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 入口網站 來檢視資源。

若要檢視資源群組中myResourceGroup叢集的詳細myNexusK8sCluster數據,請執行下列 Azure CLI 命令:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

此外,若要取得資源群組中myResourceGroup叢集相關聯的myNexusK8sCluster代理程式集區名稱清單,您可以使用下列 Azure CLI 命令。

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

連線至叢集

既然 Nexus Kubernetes 叢集已成功建立並連線到 Azure Arc,您可以使用叢集連線功能輕鬆地連線到它。 叢集連線可讓您從任何地方安全地存取和管理叢集,方便進行互動式開發、偵錯和叢集管理工作。

如需可用選項的詳細資訊,請參閱 azure 操作員 Nexus Kubernetes 叢集 連線。

注意

當您建立 Nexus Kubernetes 叢集時,Nexus 會自動建立專用於儲存叢集資源的受控資源群組,在此群組中建立 Arc 連線的叢集資源。

若要存取叢集,您必須設定叢集連線 kubeconfig。 使用相關的 Microsoft Entra 實體登入 Azure CLI 之後,您可以取得 kubeconfig 從任何地方與叢集通訊的必要條件,即使是在圍住叢集的防火牆之外也一樣。

  1. 設定 CLUSTER_NAMERESOURCE_GROUPSUBSCRIPTION_ID 變數。

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. 使用和 az 儲存查詢受控資源群組 MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. 下列命令會啟動 connectedk8s Proxy,可讓您連線到指定 Nexus Kubernetes 叢集的 Kubernetes API 伺服器。

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. 使用 kubectl 將要求傳送至叢集:

    kubectl get pods -A
    

    您現在應該會看到包含所有節點清單的叢集回應。

注意

如果您看到錯誤訊息「無法將存取令牌張貼至用戶端 ProxyFailed 以連線到 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 叢集,以及操作員 Nexus 網路資源以外的所有相關資源。

az group delete --name myResourceGroup --yes --no-wait

下一步

您現在可以透過叢集連線透過 Azure 操作員服務管理員直接部署 CNF。