Масштабирование количества узлов вручную в кластере Служба Azure Kubernetes (AKS)

Изменение потребностей приложений в ресурсах может повлиять на производительность кластера из-за нехватки ресурсов ЦП, памяти, области PID или места на диске. Чтобы справиться с этими изменениями, можно вручную масштабировать кластер AKS, запустив другое количество узлов. При уменьшении масштаба узлы будут тщательно заблокированы и остановлены, чтобы свести к минимуму время простоя работающих приложений. При увеличении масштаба AKS ждет, пока кластер Kubernetes присвоит узлам метку Ready, прежде чем планировать для них pod.

В этой статье описывается, как вручную увеличить или уменьшить количество узлов в кластере AKS.

Подготовка к работе

  • Просмотрите квоты и ограничения службы AKS, чтобы проверить, может ли кластер масштабироваться до требуемого количества узлов.

  • Имя пула узлов может содержать только буквы в нижнем регистре и должно начинаться с буквы в нижнем регистре.

    • Для пулов узлов Linux длина должна составлять от 1 до 11 символов.
    • Для пулов узлов Windows длина должна составлять от 1 до 6 символов.

Масштабирование узлов кластера

Важно!

Удаление узлов из пула узлов с помощью команды kubectl не поддерживается. Это может создать проблемы с масштабированием кластера AKS.

  1. Получите имя пула узлов с помощью az aks show команды. В следующем примере возвращается имя пула узлов для кластера myAKSCluster в группе ресурсов myResourceGroup.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query agentPoolProfiles
    

    В следующем примере выходных данных name равно nodepool1.

    [
      {
        "count": 1,
        "maxPods": 110,
        "name": "nodepool1",
        "osDiskSizeGb": 30,
        "osType": "Linux",
        "vmSize": "Standard_DS2_v2"
      }
    ]
    
  2. Масштабирование узлов кластера с помощью az aks scale команды. В следующем примере кластер myAKSCluster масштабируется до одного узла. Укажите собственное значение --nodepool-name из предыдущей команды, например nodepool1:

    az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
    

    В следующем примере выходных данных показано, что кластер успешно масштабируется до одного узла, как показано в разделе agentPoolProfiles :

    {
      "aadProfile": null,
      "addonProfiles": null,
      "agentPoolProfiles": [
        {
          "count": 1,
          "maxPods": 110,
          "name": "nodepool1",
          "osDiskSizeGb": 30,
          "osType": "Linux",
          "vmSize": "Standard_DS2_v2",
          "vnetSubnetId": null
        }
      ],
      [...]
    }
    

Масштабирование пулов узлов User до 0

В отличие от пулов узлов System, которым всегда требуются работающие узлы, пулы узлов User можно масштабировать до 0. Подробнее о различиях между пулами узлов систем и пользователей см. в разделе Пулы узлов систем и пользователей.

  • Чтобы масштабировать пул пользователей до 0, можно использовать az aks nodepool scale в альтернативной команде выше az aks scale и задать 0 в качестве количества узлов.

    az aks nodepool scale --name <your node pool name> --cluster-name myAKSCluster --resource-group myResourceGroup  --node-count 0 
    
  • Вы также можете автомасштабировать User пулы узлов до нуля, задав --min-count параметр автомасштабирования0кластера.

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

В этой статье вы вручную выполнили масштабирование кластера AKS, чтобы увеличить или уменьшить количество узлов. Вы также можете использовать автомасштабирование кластера для автоматического масштабирования кластера.