Přizpůsobení konfigurace uzlu pro fondy uzlů Azure Kubernetes Service (AKS)
Přizpůsobení konfigurace uzlu umožňuje upravit nastavení operačního systému (OS) nebo parametry kubeletu tak, aby odpovídaly potřebám vašich úloh. Když vytvoříte cluster AKS nebo do clusteru přidáte fond uzlů, můžete přizpůsobit podmnožinu běžně používaných nastavení operačního systému a kubeletu. Pokud chcete nakonfigurovat nastavení nad rámec této podmnožiny, můžete pomocí démona nastavit přizpůsobení potřebných konfigurací bez ztráty podpory AKS pro uzly.
Vytvoření clusteru AKS s vlastní konfigurací uzlu
Vytvoření konfiguračních souborů
Změny konfigurace operačního systému a kubeletu vyžadují, abyste vytvořili nový konfigurační soubor s parametry a požadovanými nastaveními. Pokud není zadána hodnota parametru, nastaví se tato hodnota na výchozí hodnotu.
Konfigurace Kubeletu
Vytvořte linuxkubeletconfig.json
soubor s následujícím obsahem:
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
Konfigurace operačního systému
Vytvořte linuxosconfig.json
soubor s následujícím obsahem:
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
Vytvoření nového clusteru pomocí vlastních konfiguračních souborů
Při vytváření nového clusteru můžete pomocí přizpůsobených konfiguračních souborů vytvořených v předchozích krocích určit konfiguraci kubeletu, konfiguraci operačního systému nebo obojí.
Poznámka:
Pokud při vytváření clusteru zadáte konfiguraci, budou mít tuto konfiguraci použity pouze uzly v počátečním fondu uzlů. Všechna nastavení nenakonfigurovaná v souboru JSON zachovají výchozí hodnotu. CustomLinuxOsConfig
nepodporuje se pro typ operačního systému: Windows.
Vytvořte nový cluster pomocí vlastních konfiguračních souborů pomocí az aks create
příkazu a zadáním konfiguračních souborů. Následující ukázkový příkaz vytvoří nový cluster s vlastními ./linuxkubeletconfig.json
soubory a ./linuxosconfig.json
soubory:
az aks create --name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
Přidání fondu uzlů pomocí vlastních konfiguračních souborů
Při přidávání fondu uzlů do clusteru můžete pomocí přizpůsobeného konfiguračního souboru vytvořeného v předchozím kroku určit konfiguraci kubeletu. CustomKubeletConfig
podporuje fondy uzlů Linuxu a Windows.
Poznámka:
Když do existujícího clusteru přidáte fond uzlů Linuxu, můžete zadat konfiguraci kubeletu, konfiguraci operačního systému nebo obojí. Když do existujícího clusteru přidáte fond uzlů Windows, můžete zadat pouze konfiguraci kubeletu. Pokud při přidávání fondu uzlů zadáte konfiguraci, budou mít tuto konfiguraci použity pouze uzly v novém fondu uzlů. Všechna nastavení nenakonfigurovaná v souboru JSON zachovají výchozí hodnotu.
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json
Další konfigurace
K úpravě dalších nastavení operačního systému je možné použít následující nastavení:
Zpráva dne
--message-of-the-day
Předejte příznak s umístěním souboru, který nahradí zprávu dne v uzlech Linuxu při vytváření clusteru nebo vytvoření fondu uzlů.
az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Vytvoření fondu uzlů
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Řešení potíží s vlastními konfiguracemi uzlů
Potvrzení použití nastavení
Po použití vlastní konfigurace uzlu můžete ověřit, že se nastavení použila na uzly připojením k hostiteli a ověřením sysctl
nebo provedením změn konfigurace v systému souborů.
Podporované parametry vlastní konfigurace uzlu
Vlastní konfigurace Kubeletu
Vlastní konfigurace Kubeletu je podporovaná pro fondy uzlů Linuxu a Windows. Podporované parametry se liší a jsou popsané níže.
Vlastní konfigurace Linux Kubeletu
Parametr | Povolené hodnoty/interval | Výchozí | Popis |
---|---|---|---|
cpuManagerPolicy |
žádná, statická | Žádná | Statické zásady umožňují kontejnerům v garantovaných podech s celočíselnou žádostí o procesor přístup k výhradním procesorům na uzlu. |
cpuCfsQuota |
true, false | true | Povolte nebo zakažte vynucení kvóty CFS procesoru pro kontejnery, které určují limity procesoru. |
cpuCfsQuotaPeriod |
Interval v milisekundách (ms) | 100ms |
Nastaví hodnotu období kvóty CFS procesoru. |
imageGcHighThreshold |
0–100 | 85 | Procento využití disku, po kterém se vždy spustí uvolňování paměti image. Minimální využití disku, které aktivuje uvolňování paměti. Pokud chcete zakázat uvolňování paměti image, nastavte hodnotu 100. |
imageGcLowThreshold |
0–100, ne vyšší než imageGcHighThreshold |
80 | Procento využití disku, před kterým se nikdy nespustí uvolňování paměti image. Minimální využití disku, které může aktivovat uvolňování paměti. |
topologyManagerPolicy |
none, best-effort, restricted, single-numa-node | Žádná | Optimalizujte zarovnání uzlů NUMA. Další informace najdete tady. |
allowedUnsafeSysctls |
kernel.shm* , kernel.msg* , kernel.sem , , fs.mqueue.* net.* |
Nic | Povolený seznam nebezpečných vzorů sysctl nebo nebezpečných vzorů sysctl. |
containerLogMaxSizeMB |
Velikost v megabajtech (MB) | 50 | Maximální velikost souboru protokolu kontejneru (například 10 MB) před otočením. |
containerLogMaxFiles |
≥ 2 | 5 | Maximální počet souborů protokolu kontejneru, které mohou být přítomné pro kontejner. |
podMaxPids |
-1 až limit PID jádra | -1 (∞) | Maximální počet ID procesů, které lze spustit v podu |
seccompDefault |
Unconfined , RuntimeDefault |
Unconfined |
Nastaví výchozí profil seccomp pro všechny úlohy. RuntimeDefault používá výchozí profil seccomp kontejneru, který omezuje určitá systémová volání pro zvýšení zabezpečení. Omezené volání syscalls selžou. Unconfined neuvolní žádné omezení pro volání syscall a všechna systémová volání jsou povolena, což snižuje zabezpečení. Další podrobnosti najdete ve výchozím profilu seccomp kontejneru. Tento parametr je ve verzi Preview. Pomocí příkazu s parametrem --namespace Microsoft.ContainerService zaregistrujte příznak az feature register funkce KubeletDefaultSeccompProfilePreview. |
Vlastní konfigurace Windows Kubeletu
Parametr | Povolené hodnoty/interval | Výchozí | Popis |
---|---|---|---|
imageGcHighThreshold |
0–100 | 85 | Procento využití disku, po kterém se vždy spustí uvolňování paměti image. Minimální využití disku, které aktivuje uvolňování paměti. Pokud chcete zakázat uvolňování paměti image, nastavte hodnotu 100. |
imageGcLowThreshold |
0–100, ne vyšší než imageGcHighThreshold |
80 | Procento využití disku, před kterým se nikdy nespustí uvolňování paměti image. Minimální využití disku, které může aktivovat uvolňování paměti. |
containerLogMaxSizeMB |
Velikost v megabajtech (MB) | 10 | Maximální velikost souboru protokolu kontejneru (například 10 MB) před otočením. |
containerLogMaxFiles |
≥ 2 | 5 | Maximální počet souborů protokolu kontejneru, které mohou být přítomné pro kontejner. |
Vlastní nastavení konfigurace operačního systému Linux
Důležité
Pro zjednodušení vyhledávání a čitelnosti se nastavení operačního systému zobrazí v tomto článku podle jejich názvu, ale měly by se přidat do konfiguračního souboru JSON nebo rozhraní API AKS pomocí konvence velká písmena camelCase.
Pokud například upravíte nastavení vm.max_map_count, měli byste v konfiguračním souboru JSON přeformátovat hodnotu vmMaxMapCount.
Omezení popisovačů souborů
Při poskytování velkého množství provozu provoz obvykle pochází z velkého počtu místních souborů. Můžete upravit níže uvedená nastavení jádra a předdefinovaná omezení, abyste mohli zpracovat více za cenu některých systémových pamětí.
Nastavení | Povolené hodnoty/interval | Výchozí | Popis |
---|---|---|---|
fs.file-max |
8192 - 12000500 | 709620 | Maximální počet popisovačů souborů, které jádro Linuxu přidělí, zvýšením této hodnoty můžete zvýšit maximální povolený počet otevřených souborů. |
fs.inotify.max_user_watches |
781250 - 2097152 | 1048576 | Maximální počet hodinek souborů povolených systémem. Každé hodinky jsou přibližně 90 bajtů v 32bitovém jádru a přibližně 160 bajtů v 64bitovém jádru. |
fs.aio-max-nr |
65536 - 6553500 | 65536 | Aio-nr zobrazuje aktuální počet asynchronních vstupně-výstupních požadavků v celém systému. aio-max-nr umožňuje změnit maximální hodnotu aio-nr může růst na. |
fs.nr_open |
8192 - 20000500 | 1048576 | Maximální počet popisovačů souborů, které proces může přidělit. |
Soket a ladění sítě
U uzlů agentů, u kterých se očekává zpracování velmi velkého počtu souběžných relací, můžete použít podmnožinu možností protokolu TCP a sítě níže, které můžete upravit pro každý fond uzlů.
Nastavení | Povolené hodnoty/interval | Výchozí | Popis |
---|---|---|---|
net.core.somaxconn |
4096 - 3240000 | 16384 | Maximální počet požadavků na připojení, které lze zařadit do fronty pro libovolný daný naslouchající soket. Horní limit hodnoty parametru backlogu předaného funkci listen(2). Pokud je argument backlogu větší než somaxconn argument , je bezobslužně zkrácen na tento limit. |
net.core.netdev_max_backlog |
1000 - 3240000 | 1000 | Maximální počet paketů zařazených do fronty na straně INPUT, když rozhraní přijímá pakety rychleji, než je jádro dokáže zpracovat. |
net.core.rmem_max |
212992 - 134217728 | 212992 | Maximální velikost vyrovnávací paměti soketu příjmu v bajtech. |
net.core.wmem_max |
212992 - 134217728 | 212992 | Maximální velikost vyrovnávací paměti soketu pro odesílání v bajtech. |
net.core.optmem_max |
20480 - 4194304 | 20480 | Maximální velikost pomocné vyrovnávací paměti (vyrovnávací paměť možností) povolená pro každý soket. Paměť možností soketu se používá v několika případech k ukládání dalších struktur týkajících se použití soketu. |
net.ipv4.tcp_max_syn_backlog |
128 - 3240000 | 16384 | Maximální počet žádostí o připojení zařazených do fronty, které stále nepřišly potvrzení od připojujícího klienta. Pokud je toto číslo překročeno, jádro začne zahazovat požadavky. |
net.ipv4.tcp_max_tw_buckets |
8000 - 1440000 | 32768 | Maximální počet timewait soketů uložených systémem současně. Pokud je toto číslo překročeno, soket s časovým čekáním se okamžitě zničí a zobrazí se upozornění. |
net.ipv4.tcp_fin_timeout |
5 - 120 | 60 | Doba, po kterou osamocené připojení (na které už odkazuje žádná aplikace), zůstane v FIN_WAIT_2 stavu, než dojde k jeho přerušení na místním konci. |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | Jak často tcp odesílá keepalive zprávy, když keepalive je povoleno. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | Kolik keepalive sond TCP odesílá, dokud se nerozhodne, že připojení není přerušeno. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | Jak často se sondy odesílají. Vynásobením tcp_keepalive_probes je čas ukončení připojení, které nereaguje, po spuštění sond. |
net.ipv4.tcp_tw_reuse |
0 nebo 1 | 0 | Povolte opakované použití TIME-WAIT soketů pro nová připojení, pokud je bezpečné z hlediska protokolu. |
net.ipv4.ip_local_port_range |
První: 1024 - 60999 a poslední: 32768 - 65535] | První: 32768 a poslední: 60999 | Místní rozsah portů používaný přenosy TCP a UDP k výběru místního portu. Skládá se ze dvou čísel: Prvním číslem je první místní port povolený pro provoz TCP a UDP na uzlu agenta, druhý je poslední číslo místního portu. |
net.ipv4.neigh.default.gc_thresh1 |
128 - 80000 | 4096 | Minimální počet položek, které mohou být v mezipaměti protokolu ARP. Uvolňování paměti se neaktivuje, pokud je počet položek pod tímto nastavením. |
net.ipv4.neigh.default.gc_thresh2 |
512 - 90000 | 8192 | Maximální maximální počet položek, které můžou být v mezipaměti protokolu ARP. Toto nastavení je pravděpodobně nejdůležitější, protože uvolňování paměti protokolu ARP se aktivuje přibližně 5 sekund po dosažení tohoto měkkého maxima. |
net.ipv4.neigh.default.gc_thresh3 |
1024 - 100000 | 16384 | Maximální počet položek v mezipaměti protokolu ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 131072 | nf_conntrack je modul, který sleduje položky připojení pro překlad adres (NAT) v Linuxu. Modul nf_conntrack používá k zaznamenání vytvořeného záznamu připojení protokolu TCP tabulku hash. nf_conntrack_max je maximální počet uzlů v tabulce hash, tj. maximální počet připojení podporovaný modulem nf_conntrack nebo velikost tabulky sledování připojení. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 65536 | nf_conntrack je modul, který sleduje položky připojení pro překlad adres (NAT) v Linuxu. Modul nf_conntrack používá k zaznamenání vytvořeného záznamu připojení protokolu TCP tabulku hash. nf_conntrack_buckets je velikost hashovací tabulky. |
Omezení pracovních procesů
Stejně jako omezení popisovače souborů je počet pracovních procesů nebo vláken, které může proces vytvořit, omezen nastavením jádra i uživatelskými limity. Omezení uživatele v AKS je neomezené.
Nastavení | Povolené hodnoty/interval | Výchozí | Popis |
---|---|---|---|
kernel.threads-max |
20 - 513785 | 55601 | Procesy můžou aktivovat pracovní vlákna. Maximální počet všech vláken, které lze vytvořit, je nastaven s nastavením kernel.threads-max jádra . |
Virtuální paměť
Následující nastavení můžete použít k ladění provozu subsystému virtuální paměti (VM) jádra Linuxu a writeout
zašpiněných dat na disk.
Nastavení | Povolené hodnoty/interval | Výchozí | Popis |
---|---|---|---|
vm.max_map_count |
65530 - 262144 | 65530 | Tento soubor obsahuje maximální počet oblastí mapy paměti, které může proces mít. Oblasti mapy paměti se používají jako vedlejší účinek volání malloc , přímo mmap mprotect pomocí , a , a madvise také při načítání sdílených knihoven. |
vm.vfs_cache_pressure |
1 - 100 | 100 | Tato procentuální hodnota řídí hodnotu jádra k uvolnění paměti, která se používá k ukládání objektů adresáře do mezipaměti a objektů inode. |
vm.swappiness |
0 - 100 | 60 | Tento ovládací prvek slouží k definování toho, jak agresivní jádro prohodí stránky paměti. Vyšší hodnoty zvýší agresivitu, nižší hodnoty sníží množství prohození. Hodnota 0 dává jádru pokyn, aby nespouštět prohození, dokud velikost volných stránek a stránek s podporou souborů není menší než horní mez v zóně. |
swapFileSizeMB |
1 MB – velikost dočasného disku (/dev/sdb) | Nic | SwapFileSizeMB určuje velikost v MB prohození souboru se vytvoří na uzlech agenta z tohoto fondu uzlů. |
transparentHugePageEnabled |
always , , madvise never |
always |
Transparent Hugepages je funkce jádra Linuxu určená ke zlepšení výkonu tím, že zefektivňuje využití hardwaru mapování paměti procesoru. Pokud je povoleno, pokusí se jádro přidělit hugepages , kdykoli je to možné, a jakýkoli proces Linuxu obdrží 2 MB stránky, pokud mmap je oblast přirozeně zarovnaná. V některých případech, kdy hugepages jsou povolené systémy, můžou aplikace nakonec přidělit více paměťových prostředků. Aplikace může mmap mít velkou oblast, ale z tohoto důvodu se dotkne jenom 1 bajtu, v takovém případě může být místo stránky 4k přidělena stránka o velikosti 2 MB. Tento scénář je důvod, proč je možné zakázat hugepages systém v celém systému nebo je mít jenom uvnitř MADV_HUGEPAGE madvise oblastí. |
transparentHugePageDefrag |
always , defer , defer+madvise , , madvise never |
madvise |
Tato hodnota určuje, jestli má jádro agresivně využívat komprimace paměti, aby bylo k dispozici více hugepages . |
Další kroky
- Zjistěte , jak nakonfigurovat cluster AKS.
- Zjistěte, jak upgradovat image uzlů ve vašem clusteru.
- Informace o upgradu clusteru Azure Kubernetes Service (AKS) najdete v tématu Upgrade clusteru na nejnovější verzi Kubernetes.
- Podívejte se na seznam nejčastějších dotazů k AKS , kde najdete odpovědi na některé běžné otázky k AKS.
Azure Kubernetes Service