培训
模块
优化 Azure Kubernetes 服务 (AKS) 上的计算成本 - Training
了解可在 Azure 上采用哪些策略来通过使用 Azure Kubernetes 服务 (AKS) 优化云原生应用程序开发过程。
认证
Microsoft Certified: Azure Administrator Associate - Certifications
演示在 Microsoft Azure 中配置、管理、保护和管理关键专业功能的关键技能。
你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Kubernetes 服务 (AKS) 中,采用相同配置的节点分组成节点池。 节点池包含运行应用程序的底层 VM。 系统节点池和用户节点池是 AKS 群集的两种不同的节点池模式。 系统节点池主要用于托管关键系统 Pod(例如 CoreDNS
和 metrics-server
)。 用户节点池主要用于托管应用程序 Pod。 但是,如果希望在 AKS 群集中只有一个池,可以在系统节点池上计划应用程序 Pod。 每个 AKS 群集必须至少包含一个系统节点池,该池至少包含两个节点。
重要
如果在生产环境中为 AKS 群集运行单个系统节点池,则建议至少将三个节点用作节点池。
本文介绍如何在 AKS 中管理系统节点池。 若要了解如何使用多个节点池,请参阅使用多个节点池。
需要安装并配置 Azure CLI 2.3.1 或更高版本。 运行 az --version
即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI。
创建和管理支持系统节点池的 AKS 群集时存在以下限制。
对于系统节点池,AKS 会自动为其节点分配“kubernetes.azure.com/mode: system”标签。 这使 AKS 倾向于在包含此标签的节点池上计划系统 Pod。 此标签不会阻止你在系统节点池上计划应用程序 Pod。 但是,我们建议将关键系统 Pod 与应用程序 Pod 隔离,以防配置错误或未授权的应用程序 Pod 意外删除系统 Pod。
可以通过创建专用系统节点池来强制执行此行为。 使用 CriticalAddonsOnly=true:NoSchedule
污点可防止在系统节点池上计划应用程序 Pod。
系统节点池存在以下限制:
对于节点池,可以执行以下操作:
mode:system
的节点池)key
设置为 kubernetes.azure.com
,将 operator
设置为 In
,并将 user
或 system
的 values
设置为你的 YAML,并使用 kubectl apply -f yourYAML.yaml
应用此定义。创建新的 AKS 群集时,初始节点池默认为 system
类型模式的系统。 使用 az aks nodepool add
创建新节点池时,除非显式指定模式参数,否则这些节点池为用户节点池。
以下示例在“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 群集。 建议在用户节点池上计划应用程序 Pod,并将系统节点池专用于关键系统 Pod。 这样可防止非授权应用程序 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
将为系统节点池定义“系统”类型的模式,并为用户节点池定义“用户”类型的模式。 对于系统池,请验证污点是否设置为 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
}
备注
必须使用 2020-03-01 或更高版本的 API 版本设置系统节点池模式。 而在 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 节点池。
培训
模块
优化 Azure Kubernetes 服务 (AKS) 上的计算成本 - Training
了解可在 Azure 上采用哪些策略来通过使用 Azure Kubernetes 服务 (AKS) 优化云原生应用程序开发过程。
认证
Microsoft Certified: Azure Administrator Associate - Certifications
演示在 Microsoft Azure 中配置、管理、保护和管理关键专业功能的关键技能。