Поделиться через


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

Дальнейшие действия