在 Azure Kubernetes Service (AKS) 的自訂虛擬網路中建立節點自動佈建 (NAP) 叢集

本文將教你如何在自訂虛擬網路(VNet)中建立啟用節點自動配置(NAP)的Azure Kubernetes Service (AKS)叢集。 你建立一個 VNet 和子網,然後授予該 VNet 的管理身份存取權。

先決條件

局限性

設定環境變數並建立資源群組

  1. 請設定本文中使用的環境變數。 用你自己的值替換佔位符值。

    export SUBSCRIPTION_ID="<subscription-id>"
    export RG_NAME="<resource-group-name>"
    export LOCATION="<location>"
    export VNET_NAME="<vnet-name>"
    export SUBNET_NAME="<subnet-name>"
    export IDENTITY_NAME="<managed-identity-name>"
    export CLUSTER_NAME="<cluster-name>"
    
  2. 請使用指令az account set選擇您的 Azure 訂閱。

    az account set --subscription $SUBSCRIPTION_ID
    
  3. 使用 az group create 命令建立資源群組。

    az group create \
        --name $RG_NAME \
        --location $LOCATION
    

建立虛擬網路和子網

  1. 使用命令 az network vnet create 建立 VNet。

    az network vnet create \
        --name $VNET_NAME \
        --resource-group $RG_NAME \
        --location $LOCATION \
        --address-prefixes 172.19.0.0/16
    
  2. 用這個 az network vnet subnet create 指令建立一個節點子網路。

    az network vnet subnet create \
        --resource-group $RG_NAME \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 172.19.0.0/24
    

建立一個管理身份並指派 VNet 權限

  1. 使用 az identity create 命令建立受控識別。

    az identity create \
        --resource-group $RG_NAME \
        --name $IDENTITY_NAME \
        --location $LOCATION
    
  2. 使用指令 az identity show 取得受管理身分的主 ID,並將其儲存在環境變數中。

    IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group $RG_NAME --name $IDENTITY_NAME --query principalId -o tsv)
    
  3. 使用 指令 az role assignment create 將網路貢獻者角色指派給受管理身份。 此 --assignee-principal-type 參數可防止建立受管理身份後因複製延遲而導致的失敗。

    Important

    VNet 的網路貢獻者角色授予廣泛的權限。 在生產環境中使用此方法前,請先檢視自訂 子網路設定的 RBAC 設定 ,並考慮指派有範圍的子網路權限。

    az role assignment create \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME" \
        --role "Network Contributor" \
        --assignee-object-id $IDENTITY_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    

啟用 NAP 並連接到叢集

使用你在前面章節建立的管理身份、VNet 和節點子網路。 叢集必須使用 Standard Load Balancer,詳見限制條款。

  1. 使用命令 az aks create 在自訂 VNet 中建立已啟用 NAP 的 AKS 叢集。 下表說明了該命令中使用的 NAP 與網路參數:

    參數 值 Description
    --node-provisioning-mode Auto 啟用叢集上的 NAP。
    --network-plugin azure 使用 Azure CNI 進行叢集網路。
    --network-plugin-mode overlay 使用 Azure CNI Overlay 進行 Pod 網路。
    --network-dataplane cilium 使用Cilium資料平面。

    欲了解更多資訊,請參閱 Azure Kubernetes Service (AKS) 中節點自動配置(NAP)網路配置概覽。

    az aks create \
        --name $CLUSTER_NAME \
        --resource-group $RG_NAME \
        --location $LOCATION \
        --assign-identity "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$IDENTITY_NAME" \
        --network-dataplane cilium \
        --network-plugin azure \
        --network-plugin-mode overlay \
        --vnet-subnet-id "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME" \
        --node-provisioning-mode Auto \
        --generate-ssh-keys
    

    叢集建立完成後,指令會回傳關於叢集的 JSON 格式資訊。

  2. 使用 kubectl 命令,設定 az aks get-credentials 連線到 Kubernetes 叢集。 此命令會下載認證,並設定 Kubernetes CLI 來使用這些認證。

    az aks get-credentials \
        --resource-group $RG_NAME \
        --name $CLUSTER_NAME
    
  3. 使用 kubectl get 命令確認叢集的連線。 此命令會傳回叢集節點的清單。

    kubectl get nodes
    

後續步驟

如需 AKS 中節點自動布建的詳細資訊,請參閱下列文章: