Zarządzanie pulami węzłów systemu w usłudze Azure Kubernetes Service (AKS)

W usłudze Azure Kubernetes Service (AKS) węzły tej samej konfiguracji są grupowane razem w pule węzłów. 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 tryby puli węzłów dla klastrów usługi AKS. Pule węzłów systemowych służą głównemu celowi hostowania krytycznych zasobników systemu, takich jak CoreDNS i metrics-server. Pule węzłów użytkownika służą głównemu celowi hostowania zasobników aplikacji. Jednak zasobniki aplikacji można zaplanować w pulach węzłów systemowych, jeśli chcesz mieć tylko jedną pulę w klastrze usługi AKS. Każdy klaster usługi AKS musi zawierać co najmniej jedną pulę węzłów systemowych z co najmniej dwoma węzłami.

Ważne

Jeśli uruchamiasz jedną pulę węzłów systemowych dla klastra usługi AKS w środowisku produkcyjnym, zalecamy użycie co najmniej trzech węzłów dla puli węzłów.

W tym artykule wyjaśniono, jak zarządzać pulami węzłów systemowych w usłudze AKS. Aby uzyskać informacje na temat korzystania z wielu pul węzłów, zobacz Używanie wielu pul węzłów.

Zanim rozpoczniesz

Potrzebny jest interfejs wiersza polecenia platformy Azure w wersji 2.3.1 lub nowszej zainstalowany i skonfigurowany. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

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ć interfejsu API w wersji 2020-03-01 lub nowszej. Klastry utworzone w wersjach interfejsu API starszych niż 2020-03-01 zawierają tylko pule węzłów użytkownika, ale można je migrować do pul węzłów systemowych, wykonując kroki trybu puli aktualizacji.
  • Nazwa puli węzłów może zawierać tylko małe litery alfanumeryczne i musi zaczynać się małą literą. W przypadku pul węzłów systemu Linux długość musi wynosić od 1 do 12 znaków. W przypadku pul węzłów systemu Windows długość musi wynosić od jednego do sześciu znaków.
  • Tryb puli węzłów jest wymaganą właściwością i musi być jawnie ustawiony podczas korzystania z szablonów usługi ARM lub bezpośrednich wywołań interfejsu API.

Pule 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 planowanie zasobników systemowych w pulach węzłów, które zawierają tę etykietę. Ta etykieta nie uniemożliwia planowania zasobników aplikacji w pulach węzłów systemowych. Zalecamy jednak odizolowanie krytycznych zasobników systemu od zasobników aplikacji, aby zapobiec przypadkowemu usunięciu zasobników systemowych nieprawidłowo skonfigurowanych lub nieuczciwych zasobników aplikacji.

To zachowanie można wymusić, tworząc dedykowaną pulę węzłów systemowych. CriticalAddonsOnly=true:NoSchedule Użyj właściwości taint, aby zapobiec zaplanowaniu zasobników aplikacji w pulach 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.
  • System pule osType muszą mieć wartość Linux.
  • Pule węzłów użytkownika osType mogą być systemami Linux lub Windows.
  • Pule systemu muszą zawierać co najmniej dwa węzły, a pule 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 co najmniej trzy węzły 8 procesorów wirtualnych lub dwóch węzłów co najmniej 16 procesorów wirtualnych (na przykład Standard_DS4_v2), szczególnie w przypadku dużych klastrów (wiele replik zasobników CoreDNS, 3-4+ dodatków itp.).
  • Pule węzłów typu spot wymagają pul węzłów użytkownika.
  • Dodanie innej puli węzłów systemowych lub zmiana puli węzłów systemu jest pulą węzłów systemowych, nie powoduje automatycznego przenoszenia zasobników systemowych. Zasobniki systemowe mogą nadal działać w tej samej puli węzłów, nawet jeśli zmienisz je na pulę węzłów użytkownika. Jeśli usuniesz lub przeskalujesz w dół pulę węzłów z uruchomionymi wcześniej zasobnikami systemu, te zasobniki systemowe zostaną ponownie wdrożone z preferowanym planowaniem w nowej puli węzłów systemowych.

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

  • Utwórz dedykowaną pulę węzłów systemowych (preferuj planowanie zasobników systemowych do pul węzłów mode:systemprogramu )
  • Zmień pulę węzłów systemowych na pulę węzłów użytkownika, pod warunkiem że w klastrze usługi AKS będzie miała miejsce inna pula węzłów systemu.
  • 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 systemu.
  • Klaster usługi AKS może mieć wiele pul węzłów systemowych i wymaga co najmniej jednej puli węzłów systemowych.
  • 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ć. Jednym z przykładów jest dodanie nowej puli węzłów z nowym ustawieniem maxPods i usunięcie starej puli węzłów.
  • Koligacja węzła umożliwia wymaganielub preferowanie, które węzły można zaplanować na podstawie etykiet węzłów. Tę definicję można ustawić na , na , i systemvaluesuser lub na plik YAML, stosując tę definicję przy użyciu polecenia .kubectl apply -f yourYAML.yamlInoperatorkubernetes.azure.comkey

Tworzenie nowego klastra usługi 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 addprogramu te pule węzłów są pulami węzłów użytkownika, chyba że jawnie określisz parametr trybu.

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

az group create --name myResourceGroup --location eastus

Utwórz klaster AKS za pomocą polecenia az aks create. 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 może potrwać kilka minut.

# Create a new AKS cluster with a single system pool
az aks create -g myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys

Dodawanie dedykowanej puli 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. Zapobiega to przypadkowemu usuwaniu zasobników systemowych przez nieautoryzujące zasobniki aplikacji. Wymuś to zachowanie za pomocą defektu CriticalAddonsOnly=true:NoSchedule dla pul węzłów systemowych.

Następujące polecenie dodaje dedykowaną pulę węzłów systemu typu trybu z domyślną liczbą trzech węzłów.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name systempool \
    --node-count 3 \
    --node-taints CriticalAddonsOnly=true:NoSchedule \
    --mode System

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

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

az aks nodepool show -g myResourceGroup --cluster-name myAKSCluster -n systempool

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 systemowej sprawdź, czy taint jest ustawiona na CriticalAddonsOnly=true:NoSchedulewartość , co uniemożliwi zasobnikom aplikacji planowanie w tej puli węzłów.

{
  "agentPoolType": "VirtualMachineScaleSets",
  "availabilityZones": null,
  "count": 3,
  "enableAutoScaling": null,
  "enableNodePublicIp": false,
  "id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
  "maxCount": null,
  "maxPods": 110,
  "minCount": null,
  "mode": "System",
  "name": "systempool",
  "nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
  "nodeLabels": {},
  "nodeTaints": [
    "CriticalAddonsOnly=true:NoSchedule"
  ],
  "orchestratorVersion": "1.16.10",
  "osDiskSizeGb": 128,
  "osType": "Linux",
  "provisioningState": "Succeeded",
  "proximityPlacementGroupId": null,
  "resourceGroup": "myResourceGroup",
  "scaleSetEvictionPolicy": null,
  "scaleSetPriority": null,
  "spotMaxPrice": null,
  "tags": null,
  "type": "Microsoft.ContainerService/managedClusters/agentPools",
  "upgradeSettings": {
    "maxSurge": null
  },
  "vmSize": "Standard_DS2_v2",
  "vnetSubnetId": null
}

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

Uwaga

Aby ustawić tryb puli węzłów systemowych, należy użyć interfejsu API w wersji 2020-03-01 lub nowszej. Klastry utworzone w wersjach interfejsu API starszych niż 2020-03-01 zawierają tylko 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 interfejsu wiersza polecenia platformy Azure.

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

To polecenie zmienia pulę węzłów systemowych na pulę węzłów użytkownika.

az aks nodepool update -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode user

To polecenie zmienia pulę węzłów użytkownika na pulę węzłów systemowych.

az aks nodepool update -g myResourceGroup --cluster-name myAKSCluster -n mynodepool --mode system

Usuwanie puli węzłów systemowych

Uwaga

Aby użyć pul węzłów systemowych w klastrach usługi AKS przed wersją interfejsu API 2020-03-02, 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 -g myResourceGroup --cluster-name myAKSCluster -n mynodepool

Czyszczenie zasobów

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

az group delete --name myResourceGroup --yes --no-wait

Następne kroki

W tym artykule przedstawiono sposób tworzenia pul węzłów systemowych i zarządzania 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.