Dostosuj konfigurację węzła dla puli węzłów usługi Azure Kubernetes Service (AKS)

Dostosowując konfigurację węzła, można dostosować ustawienia systemu operacyjnego lub parametry narzędzia kubelet, aby odpowiadały potrzebom obciążeń. Podczas tworzenia klastra usługi AKS lub dodawania puli węzłów do klastra można dostosować podzbiór często używanych ustawień systemu operacyjnego oraz kubeleta. Aby skonfigurować ustawienia wykraczające poza ten zakres, użyj zestawu DaemonSet, aby dostosować wymagane konfiguracje bez utraty obsługi AKS dla swoich węzłów.

Prerequisites

W miarę jak usługa rozszerza obsługę o nowe ustawienia i parametry składnika kubelet, może być wymagana rejestracja flagi funkcji w wersji zapoznawczej. Jeśli wymagana jest flaga wersji zapoznawczej, dokumentacja parametrów konfiguracji niestandardowego węzła wyraźnie to zaznacza.

Wymagania w wersji zapoznawczej dotyczące ustawień kubelet kubeReserved i hardEvictionThreshold

Ważne

Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:

Zainstaluj rozszerzenie Azure CLI aks-preview

  1. Aby zainstalować rozszerzenie aks-preview, uruchom następujące polecenie:

    az extension add --name aks-preview
    
  2. Uruchom następujące polecenie, aby zaktualizować rozszerzenie do najnowszej wersji:

    az extension update --name aks-preview
    

Zarejestruj flagę funkcji CustomNodeConfigPreview w ramach subskrypcji platformy Azure przed użyciem ustawień kubelet w wersji zapoznawczej kubeReserved i hardEvictionThreshold.

Zarejestruj flagę funkcji CustomNodeConfigPreview

  1. Zarejestruj flagę funkcji CustomNodeConfigPreview za pomocą polecenia az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    

    Wyświetlenie stanu Zarejestrowane trwa kilka minut.

  2. Sprawdź stan rejestracji przy użyciu az feature show polecenia .

    az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"
    
  3. Gdy jako stan jest wyświetlane Registered, odśwież rejestrację dostawcy zasobów Microsoft.ContainerService za pomocą polecenia az provider register.

    az provider register --namespace "Microsoft.ContainerService"
    

Tworzenie niestandardowych plików konfiguracji dla pul węzłów AKS

Aby zmienić konfigurację systemu operacyjnego i narzędzia kubelet, utwórz nowy plik konfiguracji z żądanymi parametrami i ustawieniami. Jeśli nie określisz wartości parametru, zostanie użyta wartość domyślna.

Uwaga

W poniższych przykładach przedstawiono typowe ustawienia konfiguracji. Zmodyfikuj ustawienia, aby spełniały wymagania dotyczące obciążenia. Aby uzyskać pełną listę obsługiwanych niestandardowych parametrów konfiguracji, zobacz Niestandardowe parametry konfiguracji węzła dla usługi AKS.

Konfiguracja rozwiązania Kubelet

linuxkubeletconfig.json Utwórz plik z następującą zawartością:

{
 "cpuManagerPolicy": "static",
 "cpuCfsQuota": true,
 "cpuCfsQuotaPeriod": "200ms",
 "imageGcHighThreshold": 90,
 "imageGcLowThreshold": 70,
 "topologyManagerPolicy": "best-effort",
 "allowedUnsafeSysctls": [
  "kernel.msg*",
  "net.*"
],
 "failSwapOn": false
}

Aby użyć ustawień kubelet dla funkcji Podgląd dostosowywania węzłów w pulach węzłów systemu Linux, dodaj kubeReserved i hardEvictionThreshold do pliku konfiguracji kubelet. Poniższy przykład rezerwuje CPU i pamięć dla demonów systemowych Kubernetes oraz konfiguruje progi twardej eksmisji kubeleta:

{
  "cpuManagerPolicy": "static",
  "kubeReserved": {
    "cpuMillicores": 200,
    "memoryMB": 1024
  },
  "hardEvictionThreshold": {
    "memoryAvailable": "20%",
    "nodeFsAvailable": "10%",
    "nodeFsInodesFree": "5%"
  }
}

Używaj kubeReserved i hardEvictionThreshold tylko w pulach węzłów z systemem Linux. Oba ustawienia wymagają flagi funkcji CustomNodeConfigPreview.

Konfiguracja systemu operacyjnego

linuxosconfig.json Utwórz plik z następującą zawartością:

{
 "transparentHugePageEnabled": "madvise",
 "transparentHugePageDefrag": "defer+madvise",
 "swapFileSizeMB": 1500,
 "sysctls": {
  "netCoreSomaxconn": 163849,
  "netIpv4TcpTwReuse": true,
  "netIpv4IpLocalPortRange": "32000 60000"
 }
}

Tworzenie klastra usługi AKS przy użyciu niestandardowych plików konfiguracji

Uwaga

Podczas korzystania z niestandardowych plików konfiguracyjnych przy tworzeniu nowego klastra usługi AKS należy pamiętać o następujących informacjach:

  • Jeśli określisz konfigurację podczas tworzenia klastra, konfiguracja ma zastosowanie tylko do węzłów w początkowej puli węzłów. Klaster zachowuje wartości domyślne dla wszystkich ustawień, które nie zostały skonfigurowane w pliku JSON.
  • CustomLinuxOsConfig nie jest obsługiwany dla typu systemu operacyjnego Windows.
  • Ustawienia kubelet kubeReserved i hardEvictionThreshold w wersji zapoznawczej są obsługiwane tylko dla pul węzłów z systemem Linux i wymagają flagi funkcji CustomNodeConfigPreview. Przed utworzeniem klastra lub puli węzłów wykonaj kroki rejestracji w sekcji Wymagania kubeReserved dotyczące wersji zapoznawczej i hardEvictionThreshold ustawienia kubeletu .

Utwórz nowy klaster przy użyciu niestandardowych plików konfiguracji, uruchamiając polecenie az aks create i podając pliki konfiguracyjne dla parametrów --kubelet-config i --linux-os-config. Następujące przykładowe polecenie tworzy nowy klaster z plikami niestandardowymi ./linuxkubeletconfig.json i ./linuxosconfig.json :

az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json

Dodaj pulę węzłów za pomocą niestandardowych plików konfiguracji

Uwaga

Podczas używania niestandardowych plików konfiguracji do dodawania nowej puli węzłów do istniejącego klastra usługi AKS należy pamiętać o następujących informacjach:

  • Po dodaniu puli węzłów systemu Linux do istniejącego klastra można określić konfigurację narzędzia kubelet, konfigurację systemu operacyjnego lub obie te elementy. Po dodaniu puli węzłów systemu Windows do istniejącego klastra można określić tylko konfigurację narzędzia kubelet. Jeśli określisz konfigurację podczas dodawania puli węzłów, konfiguracja ma zastosowanie tylko do węzłów w nowej puli węzłów. Pula węzłów zachowuje wartości domyślne dla wszystkich ustawień, które nie zostały skonfigurowane w pliku JSON.
  • CustomKubeletConfig jest obsługiwany dla pul węzłów Linux i Windows.
  • Ustawienia kubelet kubeReserved i hardEvictionThreshold w wersji zapoznawczej są obsługiwane tylko dla pul węzłów z systemem Linux i wymagają flagi funkcji CustomNodeConfigPreview. Przed utworzeniem klastra lub puli węzłów wykonaj kroki rejestracji opisane w Wymaganiach wersji zapoznawczej dotyczących kubeReserved i hardEvictionThreshold ustawień kubelet.

Utwórz nową pulę węzłów systemu Linux za pomocą polecenia az aks nodepool add i określ pliki konfiguracji dla parametrów --kubelet-config i --linux-os-config. Następująca przykładowa komenda tworzy nową pulę węzłów systemu Linux z niestandardowym plikiem konfiguracyjnym ./linuxkubeletconfig.json.

az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json

Potwierdź, że zastosowano ustawienia

Po zastosowaniu niestandardowej konfiguracji węzła można potwierdzić, że ustawienia zostały zastosowane do węzłów, łącząc się z hostem i sprawdzając, czy w systemie plików sysctl wprowadzono zmiany konfiguracji.

Przejrzyj obsługiwane niestandardowe parametry konfiguracji

Pełną listę obsługiwanych parametrów konfiguracji kubelet i systemu operacyjnego Linux, dozwolonych wartości, wartości domyślnych oraz opisów można znaleźć w artykule Niestandardowe parametry konfiguracji węzła w usłudze AKS.

Zagadnienia dotyczące konfiguracji węzłów niestandardowych

Podczas dostosowywania konfiguracji węzła należy pamiętać o następujących kwestiach:

  • Aktualizacje obrazu węzła ponownie stosują niestandardowe konfiguracje węzła.
  • Operacje skalowania w poziomie zachowują niestandardowe konfiguracje węzłów.
  • Usługa AKS nie przeprowadza wstępnej walidacji wszystkich niestandardowych parametrów konfiguracji węzłów ani ich wartości. Upewnij się, że parametry i wartości konfiguracji węzła niestandardowego, które określasz, są obsługiwane i prawidłowe, aby uniknąć potencjalnych problemów z węzłami klastra.
  • Ustawienia kubeReserved i hardEvictionThreshold w wersji zapoznawczej są dostępne tylko w pulach węzłów systemu Linux.
  • Jeśli skonfigurujesz kubeReserved, wartości muszą być dodatnie i nie mogą przekraczać dostępnych zasobów procesora ani pamięci w docelowej puli węzłów.
  • Jeśli skonfigurujesz hardEvictionThreshold, używaj tylko obsługiwanych jednostek: Ki, Mi, Gi lub % dla memoryAvailable i nodeFsAvailable, a surowej liczby lub % dla nodeFsInodesFree.
  • Wartości domyślne niestandardowych parametrów konfiguracji węzła często zmieniają się przy użyciu nowych wersji systemu operacyjnego. Podczas stosowania niestandardowych konfiguracji węzłów przejrzyj wartości domyślne dla konfigurowanych parametrów, aby upewnić się, że ustawienia niestandardowe są odpowiednie dla wersji systemu operacyjnego węzłów klastra.
  • Ogranicz liczbę osób, które mają uprawnienia do modyfikowania konfiguracji węzła niestandardowego, aby zapobiec niezamierzonym konsekwencjom stabilności i wydajności klastra. Rozważ użycie Autoryzacji Microsoft Entra ID dla interfejsu API Kubernetes, aby ograniczyć dostęp do ustawień konfiguracji klastra.
  • Oddzielne pule węzłów z konfiguracjami niestandardowymi od tych bez konfiguracji niestandardowych, aby zapobiec niezamierzonym konsekwencjom obciążeń, które mogą być wrażliwe na niektóre zmiany konfiguracji. Jeśli na przykład masz krytyczne obciążenie, które wymaga określonych ustawień kubeletu, rozważ izolowanie tego obciążenia do dedykowanej puli węzłów z wymaganą niestandardową konfiguracją kubeletu.