Управление пулами узлов для кластера (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 и 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