本文將教你如何在自訂虛擬網路(VNet)中建立啟用節點自動配置(NAP)的Azure Kubernetes Service (AKS)叢集。 你建立一個 VNet 和子網,然後授予該 VNet 的管理身份存取權。
先決條件
- Azure 訂用帳戶。 如果您沒有帳戶,您可以建立 免費帳戶。
- Azure CLI 版本
2.76.0或更新版本。 若要尋找版本,請執行az --version。 如需安裝或升級 Azure CLI 的詳細資訊,請參閱安裝 Azure CLI。 - 一個 Bash 環境,例如 Azure Cloud Shell。 如果你在本地執行指令,請用該
az login指令登入。 - Kubernetes 命令列客戶端,
kubectl.kubectl已經安裝在 Azure Cloud Shell 裡。 要在本地安裝,請使用指令az aks install-cli。 -
Microsoft.Authorization/roleAssignments/write權限,例如角色基礎 存取控制 管理員角色,以指派網路貢獻者角色。 - 熟悉 AKS 中節點自動配置(NAP)概述及 Azure Kubernetes Service (AKS) 中節點自動配置(NAP)網路配置概述中所述概念。
局限性
- 在自訂虛擬網路 (VNet) 中建立 NAP 叢集時,您必須使用 標準負載平衡器。 不支援基本負載平衡器。
- 若要檢閱 NAP 的其他限制和不支援的功能,請參閱 AKS 中的節點自動佈建 (NAP) 概觀 一文。
設定環境變數並建立資源群組
請設定本文中使用的環境變數。 用你自己的值替換佔位符值。
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>"請使用指令
az account set選擇您的 Azure 訂閱。az account set --subscription $SUBSCRIPTION_ID使用
az group create命令建立資源群組。az group create \ --name $RG_NAME \ --location $LOCATION
建立虛擬網路和子網
使用命令
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用這個
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 權限
使用
az identity create命令建立受控識別。az identity create \ --resource-group $RG_NAME \ --name $IDENTITY_NAME \ --location $LOCATION使用指令
az identity show取得受管理身分的主 ID,並將其儲存在環境變數中。IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group $RG_NAME --name $IDENTITY_NAME --query principalId -o tsv)使用 指令
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,詳見限制條款。
使用命令
az aks create在自訂 VNet 中建立已啟用 NAP 的 AKS 叢集。 下表說明了該命令中使用的 NAP 與網路參數:參數 值 Description --node-provisioning-modeAuto啟用叢集上的 NAP。 --network-pluginazure使用 Azure CNI 進行叢集網路。 --network-plugin-modeoverlay使用 Azure CNI Overlay 進行 Pod 網路。 --network-dataplanecilium使用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 格式資訊。
使用
kubectl命令,設定az aks get-credentials連線到 Kubernetes 叢集。 此命令會下載認證,並設定 Kubernetes CLI 來使用這些認證。az aks get-credentials \ --resource-group $RG_NAME \ --name $CLUSTER_NAME使用
kubectl get命令確認叢集的連線。 此命令會傳回叢集節點的清單。kubectl get nodes
後續步驟
如需 AKS 中節點自動布建的詳細資訊,請參閱下列文章: