Zarządzanie pulami węzłów systemowych w Azure Kubernetes Service (AKS)

W Azure Kubernetes Service (AKS) węzły tej samej konfiguracji są grupowane razem w pule węzłów node. Pule węzłów zawierają bazowe maszyny wirtualne, które uruchamiają aplikacje. Pule węzłów systemowych i pule węzłów użytkownika to dwa różne rodzaje pul węzłów w klastrach AKS. W tym artykule wyjaśniono, jak zarządzać pulami węzłów systemowych w usłudze AKS. Aby uzyskać informacje o sposobie korzystania z wielu pul węzłów, zobacz tworzenie pul węzłów.

  • Pule węzłów systemowych: podstawowym celem jest hostowanie krytycznych zasobników systemu, takich jak CoreDNS i metrics-server. Pule węzłów systemowych nie powinny być używane do uruchamiania aplikacji. Pule węzłów systemowych używają systemu Ubuntu Linux lub Azure Linux.
  • Pule węzłów użytkownika: Podstawowym celem jest hostowanie podów aplikacyjnych i separacja aplikacji od puli węzłów systemowych. Ta izolacja zapobiega aplikacji spowodowaniu niestabilności puli węzłów systemowych klastra. Pule węzłów użytkownika mogą używać systemu Ubuntu Linux, Azure Linux lub Windows.

Produkcyjny klaster AKS z jedną pulą węzłów systemu musi zawierać co najmniej dwa węzły. Zaleceniem dla produkcyjnego klastra usługi AKS z jedną pulą węzłów systemowych jest posiadanie co najmniej trzech węzłów w celu zwiększenia odporności na uszkodzenia i stref dostępności. Na przykład domyślna liczba węzłów dla polecenia az aks create wynosi trzy, a polecenie to tworzy nowy klaster z jedną pulą węzłów systemowych Linux i trzema węzłami Linux.

Możliwe, ale niezalecane, jest planowanie zasobników aplikacji w puli węzłów systemowych, jeśli w klastrze AKS znajduje się tylko jedna pula węzłów. Lepszym rozwiązaniem jest utworzenie puli węzłów użytkownika dla aplikacji.

Zanim rozpoczniesz

Potrzebujesz Azure CLI w wersji 2.31 lub nowszej zainstalowanej i skonfigurowanej. Aby znaleźć wersję, uruchom az --version polecenie . Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI.

Potrzebujesz Azure PowerShell w wersji 7.5.0 lub nowszej zainstalowanej i skonfigurowanej. Aby znaleźć wersję, uruchom Get-InstalledModule -Name Az polecenie . Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure PowerShell.

Przed rozpoczęciem upewnij się, że masz następujące wymagania wstępne:

  • Aktywna subskrypcja platformy Azure.
  • Narzędzie Terraform zainstalowane lokalnie.
  • Azure CLI zainstalowane i zalogowane.
  • Uprawnienia do tworzenia zasobów usługi AKS i zarządzania nimi.

Ustaw subskrypcję:

az account set --subscription <subscription-id>

Ograniczenia

Podczas tworzenia klastrów usługi AKS obsługujących pule węzłów systemowych i zarządzania nimi mają zastosowanie następujące ograniczenia.

  • Zobacz Limity przydziału, ograniczenia rozmiaru maszyny wirtualnej i dostępność regionów w usłudze AKS.
  • Aby ustawić tryb puli węzłów, należy użyć wersji interfejsu 2020-03-01 API lub nowszej. Klastry utworzone w wersjach interfejsu API starszych niż 2020-03-01 zawierają tylko pule węzłów użytkowników, ale można je migrować tak, aby zawierały pule węzłów systemowych, wykonując kroki aktualizacji trybu puli.
  • Nazwa puli węzłów może zawierać tylko małe litery alfanumeryczne i musi zaczynać się od małej litery. W przypadku pul węzłów systemu Linux długość musi wynosić od 1 do 12 znaków. W przypadku pul węzłów Windows długość musi wynosić od jednego do sześciu znaków.
  • Tryb działania puli węzłów jest wymaganą właściwością i musi być wyraźnie określany przy użyciu szablonów ARM lub bezpośrednich wywołań API.

Grupy węzłów systemu i użytkownika

W przypadku puli węzłów systemowych usługa AKS automatycznie przypisuje etykietę kubernetes.azure.com/mode: system do swoich węzłów. Dzięki temu usługa AKS preferuje rozmieszczenie zasobników systemowych w pulach węzłów, które zawierają tę etykietę. Ta etykieta nie uniemożliwia harmonogramowania zasobników aplikacji w pulach węzłów systemowych. Zalecamy jednak odizolowanie zasobników systemowych klasy krytycznej od zasobników aplikacji, aby zapobiec przypadkowemu usunięciu zasobników systemowych przez nieprawidłowo skonfigurowane lub niepoprawnie działające zasobniki aplikacji.

To zachowanie można wymusić, tworząc dedykowaną pulę węzłów systemowych. Użyj taintu, aby uniemożliwić przydzielanie zasobników aplikacji do pul węzłów systemowych.

Pule węzłów systemowych mają następujące ograniczenia:

  • Pule węzłów systemowych muszą obsługiwać co najmniej 30 zasobników zgodnie z opisem w formule minimalnej i maksymalnej wartości dla zasobników.
  • Zasoby osType systemu muszą działać na systemie Linux.
  • Pule węzłów użytkownika osType mogą być Linuxowe lub Windowsowe.
  • Pule systemu muszą zawierać co najmniej dwa węzły, ale zalecenie to trzy węzły. Grupy węzłów użytkownika mogą zawierać zero lub więcej węzłów.
  • Pule węzłów systemowych wymagają VM SKU o co najmniej 4 vCPU i 4 GB pamięci.
  • Maszyny wirtualne serii B nie są obsługiwane w przypadku pul węzłów systemowych.
  • Zalecane jest, aby używać co najmniej trzech węzłów po 8 vCPU lub dwóch węzłów z co najmniej 16 vCPU (na przykład Standard_DS4_v2), szczególnie w przypadku dużych klastrów komputerowych (wiele replik podów CoreDNS, 3-4+ dodatków itp.).
  • Pule węzłów typu spot wymagają pul węzłów użytkownika.
  • Dodanie kolejnej puli węzłów systemowych lub zmiana, która pula węzłów jest pulą systemową, nie powoduje automatycznego przenoszenia zasobników systemowych. Zasobniki systemowe mogą nadal działać w tej samej puli węzłów, nawet jeśli zmienisz ją na pulę węzłów użytkownika. Jeśli usuniesz lub zmniejszysz skalę puli węzłów z uruchomionymi zasobnikami systemowymi, które wcześniej należały do systemowej puli węzłów, te zasobniki systemowe zostaną ponownie wdrożone, preferencyjnie zaplanowane w nowej systemowej puli węzłów.

Za pomocą pul węzłów można wykonać następujące operacje:

  • Utwórz dedykowaną pulę węzłów systemowych (preferuj umieszczanie zasobników systemowych w pulach węzłów mode:system)
  • Zmień pulę węzłów systemowych na pulę węzłów użytkownika, pod warunkiem że w klastrze AKS istnieje inna pula węzłów systemowych, które mogą przejąć jej rolę.
  • Zmień pulę węzłów użytkownika na pulę węzłów systemowych.
  • Usuń pule węzłów użytkownika.
  • Pule węzłów systemowych można usunąć, pod warunkiem że w klastrze usługi AKS zostanie utworzona inna pula węzłów systemowych.
  • Klaster AKS może mieć wiele pul węzłów systemowych, ale wymaga co najmniej jednej takiej puli.
  • Jeśli chcesz zmienić różne niezmienne ustawienia w istniejących pulach węzłów, możesz utworzyć nowe pule węzłów, aby je zamienić. Przykładem jest dodanie nowej puli węzłów z nowym maxPods ustawieniem i usunięcie starej puli węzłów.
  • Użyj node affinity, aby wymagać lub preferować, które węzły mogą być zaplanowane na podstawie etykiet węzłów. Możesz ustawić key na kubernetes.azure.com, operator na In, i values na user lub system w pliku YAML, stosując tę definicję za pomocą kubectl apply -f yourYAML.yaml.

Utwórz nowy klaster AKS z pulą węzłów systemowych

Podczas tworzenia nowego klastra usługi AKS początkowa pula węzłów jest domyślnie ustawiona na tryb typu System. Podczas tworzenia nowych pul węzłów za pomocą az aks nodepool add, te pule węzłów są pulami węzłów użytkownika, chyba że wyraźnie określisz parametr trybu.

Utwórz zmienne dla grupy zasobów, nazwy klastra i lokalizacji dla poleceń używanych w tym artykule. W tym artykule określono wartości lub można użyć własnych wartości.

export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myAKSCluster"
export LOCATION="eastus"
export NEW_SYSTEM_NP="systempool"
export NEW_NODE_POOL="mynodepool"

Poniższy przykład tworzy grupę zasobów o nazwie myResourceGroup w regionie eastus .

az group create --name $RESOURCE_GROUP --location $LOCATION

Użyj polecenia az aks create, aby utworzyć klaster AKS. Poniższy przykład tworzy klaster o nazwie myAKSCluster z jedną dedykowaną pulą systemu zawierającą dwa węzły. W przypadku obciążeń produkcyjnych upewnij się, że używasz pul węzłów systemowych z co najmniej trzema węzłami. Wykonanie tej operacji trwa kilka minut.

az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --node-count 2 --generate-ssh-keys

Podczas tworzenia nowego klastra usługi AKS początkowa pula węzłów jest domyślnie ustawiona na tryb typu system. Podczas tworzenia nowych pul węzłów za pomocą New-AzAksNodePool, te pule węzłów są pulami węzłów użytkownika. Tryb puli węzłów można aktualizować w dowolnym momencie.

Utwórz zmienne dla grupy zasobów, nazwy klastra i lokalizacji dla poleceń używanych w tym artykule. W tym artykule określono wartości lub można użyć własnych wartości.

$ResourceGroup="myResourceGroup"
$ClusterName="myAKSCluster"
$Location="eastus"
$NewSystemNP="systempool"
$NewNodePool="mynodepool"

Poniższy przykład tworzy grupę zasobów o nazwie myResourceGroup w regionie eastus .

New-AzResourceGroup -ResourceGroupName $ResourceGroup -Location $Location

Użyj cmdletu New-AzAksCluster, aby utworzyć klaster AKS. Poniższy przykład tworzy klaster o nazwie myAKSCluster z jedną dedykowaną pulą systemu zawierającą dwa węzły. W przypadku obciążeń produkcyjnych upewnij się, że używasz pul węzłów systemowych z co najmniej trzema węzłami. Wykonanie operacji trwa kilka minut.

New-AzAksCluster -ResourceGroupName $ResourceGroup -Name $ClusterName -NodeCount 2 -GenerateSshKey

Użyj następującej konfiguracji Terraform, aby utworzyć klaster AKS z pulą węzłów systemowych.

Tworzenie pliku konfiguracji narzędzia Terraform

Utwórz plik o nazwie main.tfi dodaj następującą konfigurację udostępnioną:

terraform {
 required_version = ">= 1.0"
 required_providers {
   azurerm = {
     source  = "hashicorp/azurerm"
     version = "~> 4.0"
   }
 }
}
provider "azurerm" {
 features {}
}

Tworzenie grupy zasobów

Dodaj następującą konfigurację grupy zasobów:

resource "azurerm_resource_group" "rg" {
 name     = "aks-system-pool-rg"
 location = "East US"
}

Grupa zasobów służy do organizowania zasobów Azure i zarządzania nimi.

Tworzenie nowego klastra AKS

Dodaj następującą konfigurację, aby utworzyć klaster usługi AKS. Początkowa pula węzłów jest tworzona jako pula węzłów systemowych i jest wymagana do wykonania operacji klastra.

resource "azurerm_kubernetes_cluster" "aks" {
 name                = "aks-system-pool-cluster"
 location            = azurerm_resource_group.rg.location
 resource_group_name = azurerm_resource_group.rg.name
 dns_prefix          = "akssystempool"
 default_node_pool {
   name                = "systemnp"
   vm_size             = "Standard_D4s_v5"
   node_count          = 2
   min_count           = 2
   max_count           = 3
   max_pods            = 30
   enable_auto_scaling = true
 }
 identity {
   type = "SystemAssigned"
 }
 network_profile {
   network_plugin    = "azure"
   load_balancer_sku = "standard"
 }
}

Dodaj dedykowaną pulę węzłów systemowych do istniejącego klastra usługi AKS

Do istniejących klastrów usługi AKS można dodać co najmniej jedną pulę węzłów systemowych. Zaleca się zaplanowanie zasobników aplikacji w pulach węzłów użytkownika i dedykować pule węzłów systemowych tylko do krytycznych zasobników systemu. To rozdzielenie zapobiega przypadkowemu usuwaniu przez nieautoryzowane zasobniki aplikacji systemowych zasobników. Wymuś to zachowanie za pomocą CriticalAddonsOnly=true:NoScheduletaint dla pul węzłów systemowych.

Następujące polecenie dodaje dedykowaną pulę węzłów w trybie typu System z trzema węzłami. Polecenie az aks nodepool add domyślnie dodaje trzy węzły, ale możesz używać parametru --node-count, aby określić liczbę węzłów, które chcesz dodać.

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_SYSTEM_NP \
  --node-count 3 \
  --node-taints CriticalAddonsOnly=true:NoSchedule \
  --mode System

Do istniejących klastrów usługi AKS można dodać co najmniej jedną pulę węzłów systemowych. Zaleca się zaplanowanie zasobników aplikacji w pulach węzłów użytkownika i dedykować pule węzłów systemowych tylko do krytycznych zasobników systemu. Dodanie większej liczby pul węzłów systemowych zapobiega przypadkowemu usunięciu zasobników systemowych przez zasobniki aplikacji. Wymuś zachowanie z CriticalAddonsOnly=true:NoScheduletaint dla pul węzłów systemowych.

Następujące polecenie dodaje dedykowaną pulę węzłów w trybie typu System z trzema węzłami.

$systempoolparams = @{
  ResourceGroupName = $ResourceGroup
  ClusterName = $ClusterName
  Name = $NewSystemNP
  Count = 3
  Mode = 'System'
  NodeTaint = 'CriticalAddonsOnly=true:NoSchedule'
}

New-AzAksNodePool @systempoolparams

Dodaj drugą pulę węzłów skonfigurowaną jako pulę węzłów systemowych w celu odizolowania krytycznych obciążeń systemowych.

resource "azurerm_kubernetes_cluster_node_pool" "system_pool" {
 name                  = "systempool"
 kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
 vm_size               = "Standard_D4s_v5"
 node_count            = 3
 mode                  = "System"
 max_pods              = 30
 node_taints = [
   "CriticalAddonsOnly=true:NoSchedule"
 ]
}

Ta konfiguracja stosuje CriticalAddonsOnly=true:NoSchedule defekt, aby obciążenia aplikacji nie zostały zaplanowane w dedykowanej puli węzłów systemu.

Dodawanie puli węzłów użytkownika

Aby oddzielić obciążenia aplikacji od składników systemowych, dodaj pulę węzłów użytkownika.

resource "azurerm_kubernetes_cluster_node_pool" "user_pool" {
 name                  = "userpool"
 kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
 vm_size               = "Standard_D4s_v5"
 node_count            = 2
 mode                  = "User"
 max_pods              = 30
 enable_auto_scaling = true
 min_count           = 2
 max_count           = 4
}

Pule węzłów użytkownika zapewniają dedykowane środowisko dla zasobników aplikacji.

Ostatnie sprawdzenie przed wdrożeniem

Twoje main.tf powinno zawierać:

  • Konfiguracja Terraform i konfigurowanie dostawcy
  • Grupa zasobów
  • Klaster AKS z domyślną pulą węzłów systemu
  • Dedykowana pula węzłów systemowych
  • Opcjonalna pula węzłów użytkownika, jeśli jest wymagana

Ukończona konfiguracja wygląda podobnie do poniższego przykładu:

terraform {
 required_version = ">= 1.0"
 required_providers {
   azurerm = {
     source  = "hashicorp/azurerm"
     version = "~> 4.0"
   }
 }
}
provider "azurerm" {
 features {}
}
resource "azurerm_resource_group" "rg" {
 name     = "aks-system-pool-rg"
 location = "East US"
}
resource "azurerm_kubernetes_cluster" "aks" {
 name                = "aks-system-pool-cluster"
 location            = azurerm_resource_group.rg.location
 resource_group_name = azurerm_resource_group.rg.name
 dns_prefix          = "akssystempool"
 default_node_pool {
   name                = "systemnp"
   vm_size             = "Standard_D4s_v5"
   node_count          = 2
   min_count           = 2
   max_count           = 3
   max_pods            = 30
   enable_auto_scaling = true
 }
 identity {
   type = "SystemAssigned"
 }
 network_profile {
   network_plugin    = "azure"
   load_balancer_sku = "standard"
 }
}
resource "azurerm_kubernetes_cluster_node_pool" "system_pool" {
 name                  = "systempool"
 kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
 vm_size               = "Standard_D4s_v5"
 node_count            = 3
 mode                  = "System"
 max_pods              = 30
 node_taints = [
   "CriticalAddonsOnly=true:NoSchedule"
 ]
}
resource "azurerm_kubernetes_cluster_node_pool" "user_pool" {
 name                  = "userpool"
 kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
 vm_size               = "Standard_D4s_v5"
 node_count            = 2
 mode                  = "User"
 max_pods              = 30
 enable_auto_scaling = true
 min_count           = 2
 max_count           = 4
}

Weryfikacja konfiguracji

Uruchom następujące polecenia, aby sformatować, zainicjować i zweryfikować konfigurację:

terraform fmt
terraform init
terraform validate

Przeglądanie planu wykonania

Uruchom następujące polecenie, aby przejrzeć plan wykonania przed wdrożeniem:

terraform plan

Stosowanie konfiguracji

Uruchom następujące polecenie, aby utworzyć klaster AKS i pule węzłów.

terraform apply

Weryfikowanie wdrożenia

Sprawdź konfigurację dedykowanej puli węzłów systemowych:

az aks nodepool show \
 --resource-group aks-system-pool-rg \
 --cluster-name aks-system-pool-cluster \
 --name systempool

Przejrzyj dane wyjściowe i upewnij się, że pula węzłów jest skonfigurowana z mode ustawionym na System. Połącz się z klastrem i wyświetl listę węzłów:

az aks get-credentials \
 --resource-group aks-system-pool-rg \
 --name aks-system-pool-cluster

kubectl get nodes

Pokaż szczegóły Twojej puli węzłów

Szczegóły puli węzłów można sprawdzić za pomocą następującego polecenia.

az aks nodepool show \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_SYSTEM_NP \
  --query "{Count:count, Mode:mode, NodePool:name, NodeTaint:nodeTaints, ResourceGroup:resourceGroup}"

Tryb typu System jest definiowany dla pul węzłów systemowych, a tryb typu Użytkownik jest definiowany dla pul węzłów użytkownika. W przypadku puli systemu sprawdź, czy atrybut nodeTaints jest ustawiony na CriticalAddonsOnly=true:NoSchedule, co uniemożliwia przydzielenie zasobników aplikacji w tej puli węzłów.

{
  "Count": 3,
  "Mode": "System",
  "NodePool": "systempool",
  "NodeTaint": [
    "CriticalAddonsOnly=true:NoSchedule"
  ],
  "ResourceGroup": "myResourceGroup"
}

Szczegóły puli węzłów można sprawdzić za pomocą następującego polecenia.

Get-AzAksNodePool -ResourceGroupName $ResourceGroup -ClusterName $ClusterName -Name $NewSystemNP |
  Select-Object -Property Count, Mode, Name, NodeTaints

Tryb typu System jest definiowany dla pul węzłów systemowych, a tryb typu Użytkownik jest definiowany dla pul węzłów użytkownika. W przypadku puli systemu sprawdź, czy <> jest ustawiony na , co uniemożliwia planowanie podów aplikacji w tej puli węzłów.

Count Mode   Name       NodeTaints
----- ----   ----       ----------
    3 System systempool {CriticalAddonsOnly=true:NoSchedule}

Ten krok został uwzględniony w kroku Weryfikowanie wdrożenia w poprzedniej sekcji.

Tryb typu System jest definiowany dla pul węzłów systemowych, a tryb typu Użytkownik jest definiowany dla pul węzłów użytkownika. W przypadku puli systemu sprawdź, czy atrybut nodeTaints jest ustawiony na CriticalAddonsOnly=true:NoSchedule, co uniemożliwia przydzielenie zasobników aplikacji w tej puli węzłów.

Aktualizowanie istniejących pul węzłów systemu klastra i użytkowników

Uwaga

Aby ustawić tryb puli węzłów systemu, należy użyć wersji interfejsu API 2020-03-01 lub wyższej. Klastry utworzone na starszych wersjach interfejsu API niż 2020-03-01 zawierają wyłącznie pule węzłów użytkownika. Aby otrzymywać funkcje puli węzłów systemowych i korzyści ze starszych klastrów, zaktualizuj tryb istniejących pul węzłów przy użyciu następujących poleceń w najnowszej wersji Azure CLI.

Tryby można zmieniać zarówno dla pul węzłów systemowych, jak i pul węzłów użytkownika. Pulę węzłów systemowych można zmienić na pulę węzłów użytkownika tylko wtedy, gdy w klastrze usługi AKS istnieje już inna pula węzłów systemu.

Uruchom to polecenie, aby utworzyć nową pulę węzłów trybu systemu.

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --node-count 3 \
  --mode System

Możesz zweryfikować tryb za pomocą następującego polecenia.

az aks nodepool show \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --query mode --output tsv
System

Uruchom to polecenie, aby zmienić pulę węzłów systemowych na pulę węzłów użytkownika.

az aks nodepool update \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --mode User

Możesz sprawdzić, czy tryb został zmieniony za pomocą następującego polecenia.

az aks nodepool show \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --query mode --output tsv
User

Uwaga

Aby ustawić tryb puli węzłów systemu, należy użyć wersji interfejsu API 2020-03-01 lub wyższej. Klastry utworzone na starszych wersjach interfejsu API niż 2020-03-01 zawierają wyłącznie pule węzłów użytkownika. Aby otrzymywać funkcje puli węzłów systemowych i korzyści ze starszych klastrów, zaktualizuj tryb istniejących pul węzłów przy użyciu następujących poleceń w najnowszej wersji Azure PowerShell.

Tryby można zmieniać zarówno dla pul węzłów systemowych, jak i pul węzłów użytkownika. Pulę węzłów systemowych można zmienić na pulę węzłów użytkownika tylko wtedy, gdy w klastrze usługi AKS istnieje już inna pula węzłów systemu.

Uruchom to polecenie, aby utworzyć nową pulę węzłów trybu systemu.

$newpoolparams = @{
  ResourceGroupName = $ResourceGroup
  ClusterName = $ClusterName
  Name = $NewNodePool
  Count = 3
  Mode = 'System'
}

New-AzAksNodePool @newpoolparams

Możesz zweryfikować tryb za pomocą następującego polecenia.

Get-AzAksNodePool -ResourceGroupName $ResourceGroup -ClusterName $ClusterName -Name $NewNodePool |
  Select-Object -Property Mode
Mode
----
System

Uruchom to polecenie, aby zmienić pulę węzłów systemowych na pulę węzłów użytkownika.

$updateuserpoolparams = @{
  ResourceGroupName = $ResourceGroup
  ClusterName = $ClusterName
  Name = $NewNodePool
  Mode = 'User'
}

Update-AzAksNodePool @updateuserpoolparams

Możesz zweryfikować tryb za pomocą następującego polecenia.

Get-AzAksNodePool -ResourceGroupName $ResourceGroup -ClusterName $ClusterName -Name $NewNodePool |
  Select-Object -Property Mode
Mode
----
User

Aby zmienić tryb istniejącej puli węzłów, zaktualizuj mode wartość w konfiguracji programu Terraform i ponownie zastosuj wdrożenie.

Na przykład następująca konfiguracja zmienia user_pool pulę węzłów na pulę węzłów systemowych:

resource "azurerm_kubernetes_cluster_node_pool" "user_pool" {
 name                  = "userpool"
 kubernetes_cluster_id = azurerm_kubernetes_cluster.aks.id
 vm_size               = "Standard_D4s_v5"
 node_count            = 2
 mode                  = "System"
 max_pods              = 30
 enable_auto_scaling = true
 min_count           = 2
 max_count           = 4
}

Po zaktualizowaniu konfiguracji uruchom polecenie:

terraform plan
terraform apply

Aby zmienić dedykowaną pulę węzłów systemowych na pulę węzłów użytkownika, zaktualizuj mode wartość parametru system_pool do User i ponownie zastosuj konfigurację.

Usuń pulę węzłów systemowych

Uwaga

Aby użyć pul węzłów systemowych w klastrach AKS przed określoną wersją interfejsu API 2020-03-01, dodaj nową pulę węzłów systemowych, a następnie usuń oryginalną, domyślną pulę węzłów.

Aby można było usunąć jeden z nich, musisz mieć co najmniej dwie pule węzłów systemowych w klastrze usługi AKS.

az aks nodepool delete \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL

Po usunięciu puli węzłów systemowych należy zachować oryginalną pulę węzłów systemowych utworzoną razem z klastrem oraz dodatkową pulę węzłów systemowych, którą utworzono w sekcji dodaj dedykowaną pulę węzłów systemowych do istniejącego klastra usługi AKS.

az aks nodepool list \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --query "[].{Name:name, Mode:mode}" --output table

Uwaga

Aby użyć pul węzłów systemowych w klastrach AKS przed określoną wersją interfejsu API 2020-03-01, dodaj nową pulę węzłów systemowych, a następnie usuń oryginalną, domyślną pulę węzłów.

Aby można było usunąć jeden z nich, musisz mieć co najmniej dwie pule węzłów systemowych w klastrze usługi AKS.

Następujące polecenie wyświetla monit w celu potwierdzenia, czy chcesz usunąć pulę węzłów. Wpisz Y, aby potwierdzić.

Remove-AzAksNodePool $ResourceGroup -ClusterName $ClusterName -Name $NewNodePool

Po usunięciu puli węzłów systemowych należy zachować oryginalną pulę węzłów systemowych utworzoną razem z klastrem oraz dodatkową pulę węzłów systemowych, którą utworzono w sekcji dodaj dedykowaną pulę węzłów systemowych do istniejącego klastra usługi AKS.

Get-AzAksNodePool -ResourceGroupName $ResourceGroup -ClusterName $ClusterName

Klaster musi zawsze zawierać co najmniej jedną pulę węzłów systemowych. Jeśli klaster ma więcej niż jedną pulę węzłów systemowych, możesz go usunąć, usuwając blok zasobów z konfiguracji programu Terraform i stosując zmianę.

Na przykład usuń system_pool blok zasobów, a następnie uruchom polecenie:

terraform plan
terraform apply

Czyszczenie zasobów

Po usunięciu grupy zasobów klastra usługi AKS zostaną usunięte wszystkie zasoby klastra i powiązana grupa zasobów węzła (MC_).

Aby usunąć klaster, użyj polecenia az group delete, aby usunąć grupę zasobów AKS.

az group delete --name $RESOURCE_GROUP --yes --no-wait

Aby usunąć klaster, użyj polecenia Remove-AzResourceGroup , aby usunąć grupę zasobów usługi AKS:

Remove-AzResourceGroup -Name $ResourceGroup -Force

Po zakończeniu usuń zasoby:

terraform destroy

Następne kroki

W tym artykule dowiedziałeś się, jak tworzyć pule węzłów systemowych i zarządzać nimi w klastrze usługi AKS. Aby uzyskać informacje na temat uruchamiania i zatrzymywania pul węzłów usługi AKS, zobacz Uruchamianie i zatrzymywanie pul węzłów usługi AKS.