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


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

Следующие шаги