在 Azure Kubernetes Service (AKS) 中管理系統節點集區 (部分機器翻譯)
在 Azure Kubernetes Service (AKS)中,相同組態的節點會群組在一起成 節點集區。 節點集區包含執行應用程式的基礎 VM。 系統節點集區和用戶節點集區是 AKS 叢集的兩種不同的節點集區模式。 系統節點集區是裝載重要系統 Pod 的主要用途,例如 CoreDNS
和 metrics-server
。 用戶節點集區是裝載應用程式Pod的主要用途。 不過,如果您想要在 AKS 叢集中只有一個集區,則可以在系統節點集區上排程應用程式 Pod。 每個 AKS 叢集都必須包含至少一個具有兩個節點的系統節點集區。
重要
如果您在生產環境中為 AKS 叢集執行單一系統節點集區,建議您針對節點集區使用至少三個節點。
本文說明如何在 AKS 中管理系統節點集區。 如需如何使用多個節點集區的詳細資訊,請參閱 使用多個節點集區。
開始之前
您需要安裝及設定 Azure CLI 2.3.1 版或更新版本。 執行 az --version
以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
限制
當您建立和管理支援系統節點集區的 AKS 叢集時,適用下列限制。
- 請參閱 AKS 中的配額、VM 大小限制和區域可用性。
- API 版本 2020-03-01 或更新版本必須用來設定節點集區模式。 在 2020-03-01 之前的 API 版本上建立的叢集只包含使用者節點集區,但可以依照 更新集區模式步驟移轉至包含系統節點集區。
- 節點集區的名稱只能包含小寫英數位元,且開頭必須是小寫字母。 針對 Linux 節點集區,長度必須介於 1 到 12 個字元之間。 針對 Windows 節點集區,長度必須介於一到六個字元之間。
- 節點集區的模式是必要屬性,而且在使用ARM範本或直接API呼叫時必須明確設定。
系統和用戶節點集區
針對系統節點集區,AKS 會自動將標籤 指派給 kubernetes.azure.com/mode:系統 至其節點。 這會導致 AKS 偏好在包含此卷標的節點集區上排程系統 Pod。 此標籤不會防止您在系統節點集區上排程應用程式 Pod。 不過,我們建議您隔離重要的系統 Pod 與應用程式 Pod,以防止設定錯誤或流氓應用程式 Pod 意外刪除系統 Pod。
您可以藉由建立專用的系統節點集區來強制執行此行為。 CriticalAddonsOnly=true:NoSchedule
使用污點可防止應用程式Pod在系統節點集區上排程。
系統節點集區有下列限制:
- 系統節點集區必須支援至少 30 個 Pod,如 Pod 的最小值和最大值公式所述。
- 系統集區 osType 必須是 Linux。
- 用戶節點集區 osType 可能是 Linux 或 Windows。
- 系統集區必須至少包含兩個節點,而且用戶節點集區可能包含零個或多個節點。
- 系統節點集區需要至少 4 個 vCPU 和 4GB 記憶體的 VM SKU。
- 系統節點集區不支援 B 系列 VM 。
- 建議至少使用 8 個 vCPU 的三個節點或至少 16 個 vCPU 的兩個節點(例如,Standard_DS4_v2),特別是針對大型叢集(多個 CoreDNS Pod 複本、3-4+ 附加元件等等)。
- 現成節點集區需要用戶節點集區。
- 新增另一個系統節點集區或變更哪個節點集區是系統節點集 區,不會 自動移動系統 Pod。 即使您將它變更為使用者節點集區,系統 Pod 仍可在相同的節點集區上繼續執行。 如果您刪除或相應減少執行先前為系統節點集區之系統 Pod 的節點集區,系統會使用慣用排程重新部署這些系統 Pod 到新的系統節點集區。
您可以使用節點集區執行下列作業:
- 建立專用的系統節點集區(偏好將系統 Pod 排程至 的
mode:system
節點集區) - 將系統節點集區變更為用戶節點集區,前提是您有另一個系統節點集區可在AKS叢集中的位置。
- 將用戶節點集區變更為系統節點集區。
- 刪除用戶節點集區。
- 您可以刪除系統節點集區,前提是您有另一個系統節點集區可在 AKS 叢集中的位置。
- AKS 叢集可能有多個系統節點集區,而且至少需要一個系統節點集區。
- 如果您想要變更現有節點集區上的各種不可變設定,您可以建立新的節點集區來取代它們。 其中一個範例是新增具有新 maxPods 設定的新節點集區,並刪除舊的節點集區。
- 使用 節點親和性 來 要求 或 偏好 根據節點標籤來排程哪些節點。 您可以設定為 、至,以及
values
或的 YAML,使用 套用kubectl apply -f yourYAML.yaml
此定義。key
kubernetes.azure.com
operator
In
system
user
使用系統節點集區建立新的 AKS 叢集
當您建立新的 AKS 叢集時,初始節點集區預設為 類型的 system
模式。 當您使用 az aks nodepool add
建立新的節點集區時,除非您明確指定mode參數,否則這些節點集區是使用者節點集區。
下列範例會在 eastus 區域中建立名為 myResourceGroup的資源群組。
az group create --name myResourceGroup --location eastus
使用 az aks create 命令來建立 AKS 叢集。 下列範例會建立名為 myAKSCluster 的叢集,其中一個專用系統集區包含兩個節點。 針對生產工作負載,請確定您使用系統節點集區與至少三個節點。 此作業可能需要幾分鐘的時間才能完成。
# Create a new AKS cluster with a single system pool
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
將專用系統節點集區新增至現有的 AKS 叢集
您可以將一或多個系統節點集區新增至現有的 AKS 叢集。 建議將應用程式Pod排程在用戶節點集區上,並將系統節點集區專用於重要的系統Pod。 這可防止 Rogue 應用程式 Pod 意外刪除系統 Pod。 使用 CriticalAddonsOnly=true:NoSchedule
系統節點集區的污點 強制執行此行為。
下列命令會新增模式類型系統的專用節點集區,預設計數為三個節點。
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name systempool \
--node-count 3 \
--node-taints CriticalAddonsOnly=true:NoSchedule \
--mode System
顯示節點集區的詳細數據
您可以使用下列命令來檢查節點集區的詳細資料。
az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name systempool
系統類型的模式是針對系統節點集區所定義,而用戶節點集區類型為User的模式。 針對系統集區,請確認 taint 已設定為 CriticalAddonsOnly=true:NoSchedule
,這會防止此節點集區上排程應用程式 Pod。
{
"agentPoolType": "VirtualMachineScaleSets",
"availabilityZones": null,
"count": 3,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "System",
"name": "systempool",
"nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
"nodeLabels": {},
"nodeTaints": [
"CriticalAddonsOnly=true:NoSchedule"
],
"orchestratorVersion": "1.16.10",
"osDiskSizeGb": 128,
"osType": "Linux",
"provisioningState": "Succeeded",
"proximityPlacementGroupId": null,
"resourceGroup": "myResourceGroup",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "Microsoft.ContainerService/managedClusters/agentPools",
"upgradeSettings": {
"maxSurge": null
},
"vmSize": "Standard_DS2_v2",
"vnetSubnetId": null
}
更新現有的叢集系統和用戶節點集區
注意
API 版本 2020-03-01 或更新版本必須用來設定系統節點集區模式。 在 2020-03-01 之前的 API 版本上建立的叢集只包含使用者節點集區。 若要在較舊的叢集上接收系統節點集區功能和優點,請使用最新 Azure CLI 版本上的下列命令來更新現有節點集區的模式。
您可以變更系統和使用者節點集區的模式。 只有當 AKS 叢集上已有另一個系統節點集區時,您才能將系統節點集區變更為使用者集區。
此命令會將系統節點集區變更為用戶節點集區。
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode user
此命令會將用戶節點集區變更為系統節點集區。
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode system
刪除系統節點集區
注意
若要在 API 版本 2020-03-02 之前,在 AKS 叢集上使用系統節點集區,請新增系統節點集區,然後刪除原始的默認節點集區。
您必須在 AKS 叢集上至少有兩個系統節點集區,才能刪除其中一個。
az aks nodepool delete --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool
清除資源
若要刪除叢集,請使用 az group delete 命令來刪除 AKS 資源群組:
az group delete --name myResourceGroup --yes --no-wait
下一步
在本文中,您已瞭解如何在 AKS 叢集中建立和管理系統節點集區。 如需如何啟動和停止 AKS 節點集區的資訊,請參閱 啟動和停止 AKS 節點集區。