Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dostosowanie konfiguracji węzła umożliwia dostosowanie ustawień systemu operacyjnego lub parametrów kubelet w celu dopasowania ich do potrzeb 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 i narzędzia kubelet. Aby skonfigurować ustawienia poza tym podzestawem, możesz użyć demona ustawionego w celu dostosowania potrzebnych konfiguracji bez utraty obsługi usługi AKS dla węzłów.
Tworzenie niestandardowych plików konfiguracji dla pul węzłów AKS
Zmiany konfiguracji systemu operacyjnego i narzędzia kubelet wymagają utworzenia nowego pliku konfiguracji z parametrami i żądanymi ustawieniami. Jeśli wartość parametru nie jest określona, wartość jest ustawiona na wartość domyślną.
Uwaga
W poniższych przykładach przedstawiono typowe ustawienia konfiguracji. Możesz zmodyfikować ustawienia, aby spełniały wymagania dotyczące obciążenia. Aby uzyskać pełną listę obsługiwanych niestandardowych parametrów konfiguracji, zobacz sekcję Obsługiwane parametry konfiguracji niestandardowej .
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
}
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. Wszystkie ustawienia nieskonfigurowane w pliku JSON zachowują wartości domyślne.
-
CustomLinuxOsConfignie jest obsługiwany dla typu systemu operacyjnego Windows.
Utwórz nowy klaster za pomocą polecenia az aks create, używając niestandardowych plików konfiguracji i określając pliki konfiguracji 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
Dodawanie puli węzłów przy użyciu niestandardowych plików konfiguracji
Uwaga
Podczas dodawania nowej puli węzłów do istniejącego klastra usługi AKS, korzystając z niestandardowych plików konfiguracyjnych, 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. Wszystkie ustawienia nieskonfigurowane w pliku JSON zachowują wartości domyślne.
-
CustomKubeletConfigJest obsługiwany w przypadku pul węzłów systemów Linux i Windows.
Utwórz nową pulę węzłów systemu Linux przy użyciu 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.
Obsługiwane parametry konfiguracji niestandardowej
Niestandardowa konfiguracja kubelet w systemie Linux
| Parametr | Dozwolone wartości/interwał | Domyślny | opis |
|---|---|---|---|
cpuManagerPolicy |
brak, statyczny | Brak | Zasady statyczne umożliwiają kontenerom w gwarantowanych zasobnikach z żądaniami całkowitymi CPU dostęp do wyłącznych procesorów CPU na węźle. |
cpuCfsQuota |
wartość true, false | prawda | Włącz/wyłącz egzekwowanie limitów kwoty CPU CFS dla kontenerów z określonymi limitami CPU. |
cpuCfsQuotaPeriod |
Interwał w milisekundach (ms) | 100ms |
Ustawia wartość okresu limitu przydziału procesora CPU CFS. |
imageGcHighThreshold |
0–100 | 85 | Procent użycia dysku, po którym odzyskiwanie pamięci obrazu jest zawsze uruchamiane. Minimalne użycie dysku, które wyzwala odśmiecanie pamięci. Aby wyłączyć odzyskiwanie pamięci obrazu, ustaw wartość 100. |
imageGcLowThreshold |
0–100, nie wyższe niż imageGcHighThreshold |
80 | Procent użycia dysku, przed którym odzyskiwanie pamięci obrazu nigdy nie jest uruchamiane. Minimalne użycie dysku, które może wyzwalać odzyskiwanie pamięci. |
topologyManagerPolicy |
none, best-effort, restricted, pojedynczy węzeł NUMA (single-numa-node) | Brak | Optymalizuj wyrównanie węzła NUMA. Aby uzyskać więcej informacji, zobacz Control Topology Management Policies on a node (Zasady zarządzania topologią sterowania w węźle). |
allowedUnsafeSysctls |
kernel.shm*, , kernel.msg*, kernel.sem, , fs.mqueue.*net.* |
Brak | Dozwolona lista niebezpiecznych systemów lub niebezpiecznych wzorców sysctl. |
containerLogMaxSizeMB |
Rozmiar w megabajtach (MB) | 50 | Maksymalny rozmiar (na przykład 10 MB) pliku dziennika kontenera przed jego obróceniu. |
containerLogMaxFiles |
≥ 2 | 5 | Maksymalna liczba plików dziennika kontenera, które mogą być obecne dla kontenera. |
podMaxPids |
-1 do limitu PID jądra | -1 (∞) | Maksymalna liczba identyfikatorów procesów, które można uruchomić w zasobniku. |
seccompDefault |
Unconfined, RuntimeDefault |
Unconfined |
Ustawia domyślny profil seccomp dla wszystkich obciążeń.
RuntimeDefault używa domyślnego profilu seccomp kontenera, ograniczając niektóre wywołania systemowe w celu zwiększenia bezpieczeństwa. Ograniczone wywołania systemowe kończą się niepowodzeniem.
Unconfined nie nakłada żadnych ograniczeń na wywołania systemowe, zezwalając na wszystkie wywołania systemowe i zmniejszając bezpieczeństwo. Aby uzyskać więcej informacji, zobacz profil seccomp domyślny dla containerd. Ten parametr jest w wersji zapoznawczej.
Zarejestruj flagę funkcji "KubeletDefaultSeccompProfilePreview" przy użyciu polecenia az feature register z --namespace "Microsoft.ContainerService". |
Konfiguracja niestandardowa Windows Kubelet
| Parametr | Dozwolone wartości/interwał | Domyślny | opis |
|---|---|---|---|
imageGcHighThreshold |
0–100 | 85 | Procent użycia dysku, po którym odzyskiwanie pamięci obrazu jest zawsze uruchamiane. Minimalne użycie dysku, które wyzwala zbieranie śmieci. Aby wyłączyć odzyskiwanie pamięci obrazu, ustaw wartość 100. |
imageGcLowThreshold |
0–100, nie wyższe niż imageGcHighThreshold |
80 | Procent użycia dysku, przed którym odzyskiwanie pamięci obrazu nigdy nie jest uruchamiane. Minimalne użycie dysku, które może wyzwalać odzyskiwanie pamięci. |
containerLogMaxSizeMB |
Rozmiar w megabajtach (MB) | 10 | Maksymalny rozmiar (na przykład 10 MB) pliku dziennika kontenera przed jego obróceniu. |
containerLogMaxFiles |
≥ 2 | 5 | Maksymalna liczba plików dziennika kontenera, które mogą być obecne dla kontenera. |
Niestandardowe ustawienia konfiguracji systemu operacyjnego Linux
Ważne
Aby uprościć wyszukiwanie i czytelność, ustawienia systemu operacyjnego są wyświetlane w tym artykule według ich nazwy, ale należy je dodać do pliku JSON konfiguracji lub interfejsu API AKS, używając konwencji zapisu camelCase.
Jeśli na przykład zmodyfikujesz vm.max_map_count setting, należy przekształcić go na format vmMaxMapCount w pliku konfiguracyjnym JSON.
Limity obsługi plików systemu Linux
W przypadku obsługi dużych ilości ruchu ruch ten często pochodzi z dużej liczby plików lokalnych. Możesz dostosować następujące ustawienia jądra i wbudowane limity, aby pozwolić na obsługę większej liczby zadań, kosztem zużycia większej ilości pamięci systemowej.
W poniższej tabeli wymieniono limity obsługi plików, które można dostosować dla puli węzłów:
| Ustawienie | Dozwolone wartości/interwał | Domyślna wersja ubuntu 22.04 | Domyślna wersja ubuntu 24.04 | Domyślna wersja Azure Linux 3.0 | opis |
|---|---|---|---|---|---|
fs.file-max |
8192 - 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | 9223372036854775807 | Maksymalna liczba dojść do plików przydzielanych przez jądro systemu Linux. Ta wartość jest ustawiona na maksymalną możliwą wartość (2^63-1), aby zapobiec wyczerpaniu deskryptora plików i zapewnić nieograniczone dojścia do plików dla konteneryzowanych obciążeń. |
fs.inotify.max_user_watches |
781250 - 2097152 | 1048576 | 1048576 | 1048576 | Maksymalna liczba zegarków plików dozwolonych przez system. Każdy zegarek jest około 90 bajtów w 32-bitowym jądrze, a około 160 bajtów w 64-bitowym jądrze. |
fs.aio-max-nr |
65536 - 6553500 | 65536 | 65536 | 65536 | Wartość aio-nr pokazuje bieżącą liczbę asynchronicznych żądań we/wy dla całego systemu. aio-max-nr umożliwia zmianę maksymalnej wartości aio-nr może wzrosnąć. |
fs.nr_open |
8192 - 20000500 | 1048576 | 1048576 | 1073741816 | Maksymalna liczba dojść do plików, które może przydzielić proces. |
Uwaga
Parametr fs.file-max jest ustawiony na 9223372036854775807 (maksymalna wartość liczby całkowitej ze znakiem 64-bitowej) w systemach Ubuntu i Azure Linux na podstawie wartości domyślnych pochodzących z upstream. Ta konfiguracja:
- Zapobiega atakom typu "odmowa usługi " na podstawie wyczerpania deskryptora plików całego systemu.
- Zapewnia, że obciążenia kontenerów nigdy nie są ograniczane przez limity uchwytów plików dla całego systemu.
-
Utrzymuje bezpieczeństwo za pośrednictwem limitów poszczególnych procesów (
fs.nr_openiulimit), które nadal mają zastosowanie do poszczególnych procesów. - Optymalizuje platformy kontenerów , na których wiele kontenerów może być uruchamianych jednocześnie, z których każdy potencjalnie otwiera wiele plików i połączenia sieciowego.
Dostrajanie gniazd systemu Linux i sieci
W przypadku węzłów agenta, które mają obsługiwać dużą liczbę współbieżnych sesji, można użyć następujących opcji TCP i sieci i dostosować je dla puli węzłów.
| Ustawienie | Dozwolone wartości/interwał | Domyślna wersja ubuntu 22.04 | Domyślna wersja ubuntu 24.04 | Domyślna wersja Azure Linux 3.0 | opis |
|---|---|---|---|---|---|
net.core.somaxconn |
4096 - 3240000 | 16384 | 16384 | 16384 | Maksymalna liczba żądań połączeń, które można kolejkować dla dowolnego gniazda nasłuchiwania. Górny limit wartości parametru listy prac przekazany do funkcji listen(2). Jeśli argument listy prac jest większy niż somaxconn, jest dyskretnie obcięty do tego limitu. |
net.core.netdev_max_backlog |
1000 - 3240000 | 1000 | 1000 | 1000 | Maksymalna liczba pakietów, w kolejce po stronie danych WEJŚCIOWYch, gdy interfejs odbiera pakiety szybciej niż jądro może je przetworzyć. |
net.core.rmem_max |
212992 - 134217728 | 1048576 | 1048576 | 212992 | Maksymalny rozmiar buforu gniazda odbioru w bajtach. |
net.core.wmem_max |
212992 - 134217728 | 212992 | 212992 | 212992 | Maksymalny rozmiar buforu gniazda wysyłania w bajtach. |
net.core.optmem_max |
20480 - 4194304 | 20480 | 131072 | 20480 | Maksymalny rozmiar buforu pomocniczego (bufor pamięci opcji) dozwolony na gniazdo. Pamięć opcji gniazda jest używana w kilku przypadkach do przechowywania dodatkowych struktur związanych z użyciem gniazda. |
net.ipv4.tcp_max_syn_backlog |
128 - 3240000 | 16384 | 16384 | 16384 | Maksymalna liczba żądań połączeń w kolejce, które nie otrzymały potwierdzenia od klienta łączącego. Jeśli ta liczba zostanie przekroczona, jądro zacznie odrzucać żądania. |
net.ipv4.tcp_max_tw_buckets |
8000 - 1440000 | 262144 | 262144 | 131072 | Maksymalna liczba timewait gniazd przechowywanych jednocześnie przez system. Jeśli ta liczba zostanie przekroczona, gniazdo oczekiwania czasowego zostanie natychmiast zniszczone i zostanie wyświetlone ostrzeżenie. |
net.ipv4.tcp_fin_timeout |
5 - 120 | 60 | 60 | 60 | Czas, przez jaki połączenie oddzielone (nie przywoływane przez dowolną aplikację) pozostaje w stanie FIN_WAIT_2, zanim zostanie przerwane na końcu lokalnym. |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | 7200 | 7200 | Jak często protokół TCP wysyła komunikaty po keepalivekeepalive włączeniu. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | 9 | 9 | Ile keepalive sond tcp wysyła, dopóki nie zdecyduje, że połączenie zostanie przerwane. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | 75 | 75 | Jak często są wysyłane sondy. Pomnożony przez tcp_keepalive_probes to czas, aby zabić połączenie, które nie odpowiada, po uruchomieniu sond. |
net.ipv4.tcp_tw_reuse |
2 | 2 | 2 | Zezwalaj na ponowne użycie TIME-WAIT gniazd dla nowych połączeń, gdy jest bezpieczny z punktu widzenia protokołu. |
|
net.ipv4.ip_local_port_range |
Pierwszy: 1024 - 60999 i Ostatni: 32768 - 65535] | Pierwsze: 32768 i ostatnie: 60999 | Pierwsze: 32768 i ostatnie: 60999 | Pierwsze: 32768 i ostatnie: 60999 | Zakres portów lokalnych używany przez ruch TCP i UDP do wybierania portu lokalnego. Składa się z dwóch liczb: pierwsza liczba to pierwszy port lokalny dozwolony dla ruchu TCP i UDP w węźle agenta, drugi jest ostatnim numerem portu lokalnego. |
net.ipv4.neigh.default.gc_thresh1 |
128 - 80000 | 4096 | 4096 | 4096 | Minimalna liczba wpisów, które mogą znajdować się w pamięci podręcznej ARP. Zbieranie śmieci nie jest uruchamiane, jeśli liczba wpisów jest mniejsza niż ta wartość. |
net.ipv4.neigh.default.gc_thresh2 |
512 - 90000 | 8192 | 8192 | 8192 | Maksymalna liczba wpisów, które mogą znajdować się w pamięci podręcznej ARP. To ustawienie jest prawdopodobnie najważniejsze, ponieważ odzyskiwanie pamięci ARP wyzwala około 5 sekund po osiągnięciu tego miękkiego maksimum. |
net.ipv4.neigh.default.gc_thresh3 |
1024 - 100000 | 16384 | 16384 | 16384 | Maksymalna liczba wpisów w pamięci podręcznej ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 524288 | 524288 | 262144 |
nf_conntrack to moduł, który śledzi wpisy połączenia dla translatora adresów sieciowych w systemie Linux. Moduł nf_conntrack używa tabeli skrótów do rejestrowania ustanowionego rekordu połączenia protokołu TCP.
nf_conntrack_max to maksymalna liczba węzłów w tabeli skrótów, czyli maksymalna liczba połączeń obsługiwanych przez nf_conntrack moduł lub rozmiar tabeli śledzenia połączeń. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 262144 | 262144 | 262144 |
nf_conntrack to moduł, który śledzi wpisy połączenia dla translatora adresów sieciowych w systemie Linux. Moduł nf_conntrack używa tabeli skrótów do rejestrowania ustanowionego rekordu połączenia protokołu TCP.
nf_conntrack_buckets jest rozmiarem tabeli skrótów. |
Limity pracowników w systemie Linux
Podobnie jak limity deskryptorów plików, liczba procesów roboczych lub wątków, które można utworzyć, jest ograniczona zarówno przez ustawienie jądra, jak i limity użytkowników. Limit użytkownika w usłudze AKS jest nieograniczony. W poniższej tabeli wymieniono ustawienie jądra, które można dostosować dla puli węzłów:
| Ustawienie | Domyślna wersja ubuntu 22.04 | Domyślna wersja ubuntu 24.04 | Domyślna wersja platformy Azure dla systemu Linux 3.0 | opis |
|---|---|---|---|---|
kernel.threads-max |
1030425 | 1030462 | 256596 | Procesy mogą uruchamiać wątki robocze. Maksymalna liczba wszystkich wątków, które można utworzyć, jest ustawiana przy użyciu ustawienia kernel.threads-maxjądra . |
Pamięć wirtualna systemu Linux
W poniższej tabeli wymieniono ustawienia jądra, które można dostosować dla puli węzłów, aby dostroić działanie podsystemu pamięci wirtualnej (VM) jądra systemu Linux i writeout brudnych danych na dysku:
| Ustawienie | Dozwolone wartości/interwał | Domyślna wersja ubuntu 22.04 | Domyślna wersja ubuntu 24.04 | Domyślne ustawienie Azure Linux 3.0 | opis |
|---|---|---|---|---|---|
vm.max_map_count |
65530 | 1048576 | 1048576 | Ten plik zawiera maksymalną liczbę obszarów mapy pamięci, które może mieć proces. Obszary mapy pamięci są używane jako efekt uboczny wywoływania funkcji malloc, bezpośrednio przez mmap, mprotecti madvise, a także podczas ładowania udostępnionych bibliotek. |
|
vm.vfs_cache_pressure |
1 - 100 | 100 | 100 | 100 | Ta wartość procentowa kontroluje tendencję jądra do odzyskania pamięci, która jest używana do buforowania katalogów i obiektów inode. |
vm.swappiness |
0 - 100 | 60 | 60 | 60 | Ta kontrolka służy do definiowania, jak agresywnie jądro zamienia strony pamięci. Wyższe wartości zwiększają agresywność, niższe wartości zmniejszają ilość zamiany. Wartość 0 powoduje, że jądro nie inicjuje zamiany, dopóki ilość wolnych stron i stron opartych na plikach jest mniejsza niż wysoki limit wody w strefie. |
swapFileSizeMB |
1 MB — rozmiar dysku tymczasowego (/dev/sdb) | Brak | Brak | Brak | SwapFileSizeMB określa rozmiar w MB pliku wymiany, który ma być utworzony na węzłach agenta z tej puli węzłów. |
transparentHugePageEnabled |
always, , madvisenever |
always |
always |
madvise |
Przezroczyste ogromne strony to funkcja jądra systemu Linux przeznaczona do poprawy wydajności poprzez bardziej efektywne wykorzystanie sprzętu do mapowania pamięci procesora. Po włączeniu jądro próbuje przydzielić hugepages zawsze, gdy jest to możliwe, a każdy proces systemu Linux otrzymuje 2-MB strony, jeśli obszar mmap jest naturalnie wyrównany do 2 MB. W niektórych przypadkach, gdy hugepages włączono w całym systemie, aplikacje mogą przydzielać więcej zasobów pamięci. Aplikacja może mmap używać dużego regionu, ale jedynie użyć 1 bajtu. W takim przypadku strona o rozmiarze 2 MB może zostać przydzielona zamiast strony o rozmiarze 4k bez uzasadnienia. W tym scenariuszu można wyłączyć hugepages cały system lub mieć je tylko w MADV_HUGEPAGE madvise regionach. |
transparentHugePageDefrag |
always, , defer, defer+madvise, , madvisenever |
madvise |
madvise |
madvise |
Ta wartość określa, czy jądro powinno zwiększyć wykorzystanie kompaktowania pamięci w celu zwiększenia hugepages dostępności. |
Treści powiązane
- Dowiedz się , jak skonfigurować klaster usługi AKS.
- Dowiedz się, jak uaktualnić obrazy węzłów w klastrze.
- Zobacz Uaktualnianie klastra usługi Azure Kubernetes Service (AKS), aby dowiedzieć się, jak uaktualnić klaster do najnowszej wersji rozwiązania Kubernetes.
- Zobacz listę często zadawanych pytań dotyczących usługi AKS , aby znaleźć odpowiedzi na niektóre typowe pytania dotyczące usługi AKS.