Udostępnij za pośrednictwem


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 polecenia az aks create wynosi trzy i tworzy nowy klaster z jedną pulą węzłów systemowych systemu Linux i trzema węzłami systemu 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.3.1 lub nowszej zainstalowanej i skonfigurowanej. Aby znaleźć wersję, uruchom az --version polecenie . Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI.

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ą jednostki SKU maszyny wirtualnej co najmniej 4 procesorów wirtualnych 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

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

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"
}

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

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

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

Uruchom poprzednie polecenie, aby sprawdzić, czy tryb uległ zmianie.

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

Czyszczenie zasobów

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

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

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

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.