Управление пулами узлов для кластера (AKS в Azure Stack HCI 22H2)
Область применения: AKS в Azure Stack HCI 22H2, AKS в Windows Server
Примечание
Сведения об управлении пулами узлов в AKS в Azure Stack HCI 23H2 см. в статье Управление пулами узлов.
В AKS, включенном Azure Arc, узлы одной конфигурации группируются в пулы узлов. Эти узлы содержат базовые виртуальные машины, на которых выполняются ваши приложения. В этой статье показано, как создавать пулы узлов для кластера в AKS Arc и управлять ими.
Примечание
Эта функция обеспечивает более широкий контроль над созданием нескольких пулов узлов и управлением ими. В результате для операций создания, обновления и удаления требуются отдельные команды. Ранее операции с кластером через New-AksHciCluster или Set-AksHciCluster были единственным вариантом для создания или масштабирования кластера с одним пулом узлов Windows и одним пулом узлов Linux. Эта функция предоставляет отдельный набор операций для пулов узлов, требующих использования команд пула узлов New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool и Remove-AksHciNodePool для выполнения операций в отдельном пуле узлов.
Подготовка к работе
Рекомендуется установить версию 1.1.6. Если у вас уже установлен модуль PowerShell, выполните следующую команду, чтобы найти версию:
Get-Command -Module AksHci
Если вам нужно обновить PowerShell, следуйте инструкциям в разделе Обновление узла AKS.
Создание кластера AKS
Чтобы приступить к работе, создайте кластер AKS с одним пулом узлов. В следующем примере используется команда New-AksHciCluster для создания нового кластера Kubernetes с одним пулом узлов Linux с именем linuxnodepool, который имеет 1 узел. Если у вас уже есть кластер, развернутый с более старой версией AKS, и вы хотите продолжить использовать старое развертывание, этот шаг можно пропустить. Вы по-прежнему можете использовать новый набор команд пула узлов, чтобы добавить пул узлов в существующий кластер.
New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux
Примечание
Старый набор параметров для New-AksHciCluster
по-прежнему поддерживается.
Добавление пула узлов
Кластер с именем mycluster
*', созданный на предыдущем шаге, имеет один пул узлов. Второй пул узлов можно добавить в существующий кластер с помощью команды New-AksHciNodePool . В следующем примере создается пул узлов Windows с именем windowsnodepool с одним узлом. Убедитесь, что имя пула узлов отличается от имени любого существующего пула узлов.
New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022
Получение сведений о конфигурации пула узлов
Чтобы просмотреть сведения о конфигурации пулов узлов, используйте команду Get-AksHciNodePool .
Get-AksHciNodePool -clusterName mycluster
Выходные данные примера:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Чтобы просмотреть сведения о конфигурации одного конкретного пула -name
узлов, используйте параметр в командлете Get-AksHciNodePool.
Get-AksHciNodePool -clusterName mycluster -name linuxnodepool
Выходные данные примера:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool
Выходные данные примера:
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Примечание
Если вы используете новые наборы параметров в New-AksHciCluster
для развертывания кластера, а затем выполните команду Get-AksHciCluster
для получения сведений о кластере, поля WindowsNodeCount
и LinuxNodeCount
в выходных данных будут возвращать 0
. Чтобы получить точное количество узлов в каждом пуле узлов, используйте команду Get-AksHciNodePool
с указанным именем кластера.
Масштабирование пула узлов
Вы можете масштабировать количество узлов в пуле узлов.
Чтобы масштабировать количество узлов в пуле узлов, используйте команду Set-AksHciNodePool . В следующем примере число узлов масштабируется до 3 в пуле узлов с именем linuxnodepool
в кластере mycluster
.
Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3
Масштабирование узлов уровня управления
Управление узлами уровня управления не изменилось. Способ их создания, масштабирования и удаления остается неизменным. Вы по-прежнему будете развертывать узлы уровня управления с помощью команды New-AksHciCluster с параметрами controlPlaneNodeCount
и controlPlaneVmSize
значениями по умолчанию 1 и Standard_A4_V2 соответственно, если вы не указали никаких значений.
Может потребоваться масштабировать узлы уровня управления по мере изменения требований к рабочей нагрузке приложений. Чтобы масштабировать узлы уровня управления, используйте команду Set-AksHciCluster . В следующем примере выполняется масштабирование узлов уровня управления до 3 в mycluster
кластере, который был создан на предыдущих шагах.
Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3
Удаление пула узлов
Если необходимо удалить пул узлов, используйте команду Remove-AksHciNodePool . В следующем примере пул узлов с именем windowsnodepool
удаляется mycluster
из кластера.
Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool
Указание отметки для пула узлов
При создании пула узлов в этот пул узлов можно добавить отметки. При добавлении отметки все узлы в этом пуле узлов также получают этот отметку. Дополнительные сведения о отметках и допусках см. в разделе Kubernetes Taints and Tolerations.
Настройка идентификаторов пула узлов
Чтобы создать пул узлов с отметкой, используйте командлет New-AksHciNodePool. Укажите имя taintnp
и используйте -taints
параметр , чтобы указать sku=gpu:noSchedule
для отметки.
New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule
Примечание
Отметку можно задать для пулов узлов только во время его создания.
Выполните следующую команду, чтобы убедиться, что пул узлов успешно развернут с указанным значением.
Get-AksHciNodePool -clusterName mycluster -name taintnp
Выходные данные
Status : {Phase, Details}
ClusterName : mycluster
NodePoolName : taintnp
Version : v1.20.7-kvapkg.1
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Taints : {sku=gpu:NoSchedule}
На предыдущем шаге вы применили отметку sku=gpu:NoSchedule при создании пула узлов. В следующем примере манифеста YAML используется разрешение, позволяющее планировщику Kubernetes запускать модуль NGINX на узле в этом пуле узлов.
Создайте файл с именем nginx-toleration.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"
Затем запланируйте pod с помощью следующей команды.
kubectl apply -f nginx-toleration.yaml
Чтобы убедиться, что модуль pod был развернут, выполните следующую команду:
kubectl describe pod mypod
[...]
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 32s default-scheduler Successfully assigned default/mypod to moc-lk4iodl7h2y
Normal Pulling 30s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
Normal Pulled 26s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 4.529046457s
Normal Created 26s kubelet Created container mypod