Управление пулами узлов для кластера (AKS в Azure Stack HCI 23H2)
Область применения: Azure Stack HCI, версия 23H2
Примечание
Сведения об управлении пулами узлов в AKS в Azure Stack HCI 22H2 см. в статье Управление пулами узлов.
В AKS, включенном Azure Arc, узлы одной конфигурации группируются в пулы узлов. Эти узлы содержат базовые виртуальные машины, на которых выполняются ваши приложения. В этой статье показано, как создавать пулы узлов для кластера в AKS Arc и управлять ими.
Создание кластера Kubernetes
Чтобы приступить к работе, создайте кластер Kubernetes с одним пулом узлов:
az aksarc create -n <cluster name> -g <resource group> --custom-location <custom location Id> --vnet-ids <vnet id> --generate-ssh-keys --load-balancer-count <load balancer count>
Добавление пула узлов
Вы можете добавить пул узлов в существующий кластер с помощью az aksarc nodepool add
команды . Убедитесь, что имя пула узлов отличается от имени существующего пула узлов:
az aksarc nodepool add --name <node pool name> -g <resource group> --cluster-name <cluster name> --os-sku <Linux or Windows> --node-count <count> --node-vm-size <vm size>
Получение сведений о конфигурации для пула узлов
Чтобы просмотреть конфигурацию пулов узлов, используйте az aksarc nodepool show
команду :
az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>
Выходные данные примера:
{
"availabilityZones": null,
"count": 1,
"extendedLocation": null,
"id":
"/subscriptions/<subscription>/resourceGroups/edgeci-registration-rr1s46r1710<resource
group>/providers/Microsoft.Kubernetes/connectedClusters/<cluster
name>/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default/agentPools/<nodepoolname>",
"location": "westeurope",
"name": "nodepoolname",
"nodeImageVersion": null,
"osSku": "CBLMariner",
"osType": "Linux",
"provisioningState": "Succeeded",
"resourceGroup": "resourcegroup",
"status": {
"errorMessage": null,
"operationStatus": null,
"readyReplicas": [
{
"count": 1,
"vmSize": "Standard\_A4\_v2"
}
]
},
"systemData": {
…
},
"tags": null,
"type":
"microsoft.hybridcontainerservice/provisionedclusterinstances/agentpools",
"vmSize": "Standard\_A4\_v2"
}
Указание максимального количества модулей pod, развернутых в пуле узлов
Можно настроить максимальное количество модулей pod, развертываемых на узле во время создания кластера или при создании пулов узлов. Если не указать maxPods
при создании пулов узлов, пул узлов развертывается со значением по умолчанию не более 110 модулей pod:
az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes
Масштабирование пула узлов
Вы можете масштабировать количество узлов в пуле узлов.
Чтобы масштабировать количество узлов в пуле узлов, используйте az aksarc nodepool scale
команду . В следующем примере число узлов масштабируется до 2 в пуле узлов с именем nodepool1
:
az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes
Удаление пула узлов
Если необходимо удалить пул узлов, используйте az aksarc nodepool delete
команду :
az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes
Указание отметки или метки для пула узлов
При создании пула узлов в него можно добавлять отметки или метки. При добавлении отметки или метки все узлы в этом пуле узлов также получают этот фрагмент или метку.
Важно!
К узлам для всего пула узлов следует добавлять отметки или метки с помощью az aksarc nodepool
. Мы не рекомендуем использовать для kubectl
применения меток или меток к отдельным узлам в пуле узлов.
Настройка оттенков пула узлов
Создайте пул узлов с запятой с помощью
az aksarc nodepool add
команды . Укажите имяtaintnp
и используйте--node-taints
параметр , чтобы указатьsku=gpu:NoSchedule
для маркера:az aksarc nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name taintnp \ --node-count 1 \ --node-taints sku=gpu:NoSchedule \ --no-wait
Проверьте состояние пула узлов с помощью
az aksarc nodepool list
команды :az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
В следующем примере выходных
taintnp
данных показано, что пул узлов создает узлы с указаннымnodeTaints
:[ { ... "count": 1, ... "name": "taintnp", ... "provisioningState": "Succeeded", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
Сведения об отметках отображаются в Kubernetes для обработки правил планирования для узлов. Планировщик Kubernetes может использовать ограничения и допустимости для ограничения рабочих нагрузок, которые могут выполняться на узлах.
- Отметка применяется к узлу, указывая, что на него могут назначаться только определенные модули pod.
- Затем к модулу pod применяется толерация , которая позволяет им "допускать" запятнание узла.
Настройка допусков пула узлов
На предыдущем шаге вы применили отметку sku=gpu:NoSchedule
при создании пула узлов. В следующем примере манифеста YAML используется толер, позволяющий планировщику Kubernetes запускать pod NGINX на узле в этом пуле узлов:
Создайте файл с именем nginx-toleration.yaml и скопируйте или вставьте следующий пример YAML:
apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 1 memory: 2G tolerations: - key: "sku" operator: "Equal" value: "gpu" effect: "NoSchedule"
Запланируйте модуль с помощью команды
kubectl apply
.kubectl apply -f nginx-toleration.yaml
Планирование объекта Pod и извлечение образа NGINX займет несколько секунд.
Проверьте состояние с помощью
kubectl describe pod
команды :kubectl describe pod mypod
В следующем сжатом примере выходных
sku=gpu:NoSchedule
данных показано, что применяется толерация. В разделе События планировщик назначил модуль podmoc-lbeof1gn6x3
узлу:[...] Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s sku=gpu:NoSchedule Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 54s default-scheduler Successfully assigned default/mypod to moc-lbeof1gn6x3 Normal Pulling 53s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" Normal Pulled 48s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting) Normal Created 48s kubelet Created container Normal Started 48s kubelet Started container
На узлах в
taintnp
можно запланировать только объекты pod, к которым применяется эта толерантность. Все остальные модули pod запланированы в пуле узлов nodepool1 . Если вы создаете больше пулов узлов, можно использовать ограничения и допустимости, чтобы ограничить количество модулей pod, которые можно запланировать на этих ресурсах узла.
Настройка меток пула узлов
Дополнительные сведения см. в статье Использование меток в кластере AKS с поддержкой Azure Arc. ::: zone-end
Дальнейшие действия
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по