Parameter konfigurasi simpul kustom untuk Azure Kubernetes Service (AKS)

Artikel ini mencantumkan parameter konfigurasi simpul kustom yang didukung untuk kumpulan simpul Azure Kubernetes Service (AKS). Untuk mempelajari cara membuat dan menerapkan file konfigurasi, lihat Menyesuaikan konfigurasi simpul untuk kumpulan simpul AKS.

Parameter konfigurasi kustom Kubelet

Important

Saat mengaktifkan sysctls yang tidak aman, Anda bertanggung jawab atas stabilitas node dan perilaku beban kerja. Sysctls yang tidak aman berpotensi menyebabkan ketidakstabilan node atau kerentanan keamanan jika salah dikonfigurasi. Pastikan Anda memahami implikasi mengaktifkan sysctl tertentu yang tidak aman dan memantau kesehatan kluster Anda dengan cermat setelah membuat perubahan.

Konfigurasi kustom kubelet Linux

Parameter Nilai/interval yang diperbolehkan Default Description
cpuManagerPolicy tidak ada, statis none Kebijakan statis memungkinkan kontainer dalam pod yang dijamin dengan permintaan CPU bilangan bulat untuk mengakses CPU eksklusif pada node.
cpuCfsQuota benar, salah true Aktifkan/nonaktifkan pemberlakuan kuota CPU CFS untuk kontainer yang menentukan batas CPU.
cpuCfsQuotaPeriod Interval dalam milidetik (ms) 100ms Menetapkan nilai periode kuota CPU CFS.
imageGcHighThreshold 0-100 85 Persentase penggunaan disk setelah pengumpulan sampah gambar selalu dijalankan. Penggunaan disk minimum yang akan memicu pengumpulan sampah. Untuk menonaktifkan pengumpulan sampah gambar, atur ke 100.
imageGcLowThreshold 0-100, tidak lebih tinggi dari imageGcHighThreshold 80 Persentase penggunaan disk sebelum pengumpulan sampah gambar tidak pernah dijalankan. Penggunaan disk minimum yang dapat memicu pengumpulan sampah.
topologyManagerPolicy tidak ada, upaya terbaik, dibatasi, simpul NUMA tunggal none Optimalkan perataan simpul NUMA. Untuk informasi selengkapnya, lihat Mengontrol Kebijakan Manajemen Topologi pada simpul.
allowedUnsafeSysctls kernel.shm*, , kernel.msg*kernel.sem, , fs.mqueue.*,net.* Tidak Daftar sysctl yang tidak aman atau pola sysctl yang tidak aman yang diizinkan.
containerLogMaxSizeMB Ukuran dalam megabyte (MB) 50 Ukuran maksimum (misalnya, 10 MB) dari file log kontainer sebelum diputar.
containerLogMaxFiles 2 atau lebih besar 5 Jumlah maksimum file log kontainer yang akan dipertahankan untuk kontainer.
podMaxPids -1 ke batas PID kernel -1 (tak terbatas) Jumlah maksimum ID proses yang dapat berjalan dalam pod.
seccompDefault Unconfined, RuntimeDefault Unconfined Mengatur profil seccomp default untuk semua beban kerja. RuntimeDefault menggunakan profil seccomp default containerd, membatasi panggilan sistem tertentu untuk meningkatkan keamanan. Syscalls terbatas gagal. Unconfined tidak menetapkan batasan pada panggilan sistem, memungkinkan semua jenis panggilan dan mengurangi keamanan. Untuk informasi selengkapnya, lihat profil seccomp default containerd. Parameter ini dalam tahap pratinjau. Daftarkan fitur flag "KubeletDefaultSeccompProfilePreview" menggunakan perintah az feature register dengan --namespace "Microsoft.ContainerService".
kubeReserved.cpuMillicores 1 ke kapasitas CPU pool node dalam millicore Tidak Menyediakan CPU untuk daemon sistem Kubernetes pada node pool Linux. Parameter ini masih dalam pratinjau dan memerlukan CustomNodeConfigPreview flag fitur.
kubeReserved.memoryMB 1 ke kapasitas memori kumpulan simpul di MiB Tidak Mencadangkan memori untuk daemon sistem Kubernetes pada kumpulan simpul Linux. Parameter ini masih dalam pratinjau dan memerlukan CustomNodeConfigPreview flag fitur.
hardEvictionThreshold.memoryAvailable <number>Ki, <number>Mi, <number>Gi, atau <number>% di mana persentase tidak lebih dari 100 Tidak Mengatur ambang pengeluaran keras kubelet untuk memori yang tersedia pada kumpulan simpul Linux. Parameter ini masih dalam pratinjau dan memerlukan CustomNodeConfigPreview flag fitur.
hardEvictionThreshold.nodeFsAvailable <number>Ki, <number>Mi, <number>Gi, atau <number>% di mana persentase tidak lebih dari 100 Tidak Menetapkan ambang pengusiran paksa kubelet untuk ruang sistem file node yang tersedia pada kumpulan node Linux. Parameter ini masih dalam pratinjau dan memerlukan CustomNodeConfigPreview flag fitur.
hardEvictionThreshold.nodeFsInodesFree <number> atau <number>% di mana persentase tidak lebih dari 100 Tidak Menetapkan ambang batas pengusiran keras kubelet untuk inode sistem file node yang tersedia pada kumpulan node Linux. Parameter ini masih dalam pratinjau dan memerlukan CustomNodeConfigPreview flag fitur.

Konfigurasi kustom kubelet Windows

Parameter Nilai/interval yang diperbolehkan Default Description
imageGcHighThreshold 0-100 85 Persentase penggunaan disk setelah pengumpulan sampah gambar selalu dijalankan. Penggunaan disk minimum yang akan memicu pengumpulan sampah. Untuk menonaktifkan pengumpulan sampah gambar, atur ke 100.
imageGcLowThreshold 0-100, tidak lebih tinggi dari imageGcHighThreshold 80 Persentase penggunaan disk sebelum pengumpulan sampah gambar tidak pernah dijalankan. Penggunaan disk minimum yang dapat memicu pengumpulan sampah.
containerLogMaxSizeMB Ukuran dalam megabyte (MB) 10 Ukuran maksimum (misalnya, 10 MB) dari file log kontainer sebelum diputar.
containerLogMaxFiles 2 atau lebih besar 5 Jumlah maksimum file log kontainer yang akan dipertahankan untuk kontainer.

Parameter konfigurasi OS kustom Linux

Important

Untuk menyederhanakan pencarian dan keterbacaan, pengaturan OS ditampilkan dalam artikel ini berdasarkan namanya, tetapi harus ditambahkan ke dalam file konfigurasi JSON atau API AKS menggunakan konvensi kapitalisasi camelCase.

Misalnya, jika Anda mengubah vm.max_map_count pengaturan, Anda harus memformat ulang ke vmMaxMapCount dalam file JSON konfigurasi.

Batas penanganan file Linux

Saat melayani lalu lintas dalam jumlah tinggi, lalu lintas tersebut biasanya berasal dari sejumlah besar file lokal. Anda dapat menyesuaikan pengaturan kernel berikut dan batas bawaan untuk memungkinkan Anda menangani lebih banyak, dengan biaya beberapa memori sistem.

Tabel berikut ini mencantumkan batas handel file yang bisa Anda kustomisasi per kumpulan simpul:

Pengaturan Nilai/interval yang diperbolehkan Default Ubuntu 22.04 Ubuntu 24.04 bawaan Azure Linux 3.0 Bawaan Description
fs.file-max 8192 - 9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 Jumlah maksimum handle berkas yang dialokasikan kernel Linux. Nilai ini diatur ke nilai maksimum yang mungkin (2^63-1) untuk mencegah kehabisan deskriptor file dan memastikan handle file di seluruh sistem yang tidak terbatas untuk beban kerja kontainer.
fs.inotify.max_user_watches 781250 - 2097152 1048576 1048576 1048576 Jumlah maksimum pemantauan berkas yang diizinkan oleh sistem. Setiap watch kira-kira 90 byte pada kernel 32-bit, dan sekitar 160 byte pada kernel 64-bit.
fs.aio-max-nr 65536 - 6553500 65536 65536 65536 Aio-nr menunjukkan jumlah permintaan I/O asinkron di seluruh sistem saat ini. aio-max-nr memungkinkan Anda untuk mengubah nilai maksimum aio-nr yang dapat dicapai.
fs.nr_open 8192 - 20000500 1048576 1048576 1073741816 Jumlah maksimum penanganan file yang dapat dialokasikan oleh proses.

Note

Parameter fs.file-max diatur ke 9223372036854775807 (nilai maksimum untuk bilangan bulat 64-bit yang ditandatangani) di seluruh Ubuntu dan Azure Linux berdasarkan default upstream. Konfigurasi ini:

  • Mencegah serangan penolakan layanan berdasarkan kelelahan deskriptor file di seluruh sistem.
  • Memastikan beban kerja kontainer tidak pernah terhambat oleh batasan handle file di seluruh sistem.
  • Menjaga keamanan melalui batas per proses (fs.nr_open dan ulimit) yang masih berlaku untuk proses individual.
  • Mengoptimalkan platform kontainer di mana banyak kontainer mungkin berjalan secara bersamaan, masing-masing berpotensi membuka banyak file dan koneksi jaringan.

Soket Linux dan penyetelan jaringan

Untuk simpul agen, yang diharapkan untuk menangani sejumlah besar sesi bersamaan, Anda dapat menggunakan opsi TCP dan jaringan berikut dan menyesuaikannya per kumpulan simpul:

Pengaturan Nilai/interval yang diperbolehkan Default Ubuntu 22.04 Ubuntu 24.04 bawaan Azure Linux 3.0 Bawaan Description
net.core.somaxconn 4096- 3240000 16384 16384 16384 Jumlah maksimum permintaan sambungan yang dapat diantrekan untuk soket mendengarkan tertentu. Batas atas untuk nilai parameter backlog diteruskan ke fungsi listen(2). Jika argumen backlog lebih besar dari somaxconn, maka argumen tersebut dibatasi secara diam-diam ke batas ini.
net.core.netdev_max_backlog 1000- 3240000 1000 1000 1000 Jumlah paket maksimum, yang diantrekan di sisi INPUT, ketika antarmuka menerima paket lebih cepat daripada yang dapat diproses kernel.
net.core.rmem_max 212992 - 134217728 1048576 1048576 212992 Ukuran buffer soket penerimaan maksimum dalam byte.
net.core.wmem_max 212992 - 134217728 212992 212992 212992 Ukuran penyangga soket pengiriman maksimum dalam satuan byte.
net.core.optmem_max 20480 - 4194304 20480 131072 20480 Ukuran penyangga tambahan maksimum (penyangga memori opsi) yang diperbolehkan per soket. Memori opsi soket digunakan dalam beberapa kasus untuk menyimpan struktur tambahan yang berkaitan dengan penggunaan soket.
net.ipv4.tcp_max_syn_backlog 128 - 3240000 16384 16384 16384 Jumlah maksimum permintaan koneksi dalam antrean yang belum mendapatkan konfirmasi dari klien yang terhubung. Jika jumlah ini terlampaui, kernel mulai menghilangkan permintaan.
net.ipv4.tcp_max_tw_buckets 8000 - 1440000 262144 262144 131072 Jumlah TIME-WAIT maksimum soket yang dipegang oleh sistem secara bersamaan. Jika jumlah ini terlampaui, soket waktu tunggu segera dihancurkan dan peringatan dicetak.
net.ipv4.tcp_fin_timeout 5 - 120 60 60 60 Lamanya waktu koneksi yatim piatu (tidak lagi direferensikan oleh aplikasi apa pun) tetap dalam status FIN_WAIT_2 sebelum dibatalkan di ujung lokal.
net.ipv4.tcp_keepalive_time 30 - 432000 7200 7200 7200 Seberapa sering TCP keepalive mengirim pesan ketika keepalive diaktifkan.
net.ipv4.tcp_keepalive_probes 1 - 15 9 9 9 Berapa jumlah probe yang dikirimkan TCP sampai TCP memutuskan bahwa sambungan rusak.
net.ipv4.tcp_keepalive_intvl 10 - 90 75 75 75 Seberapa sering probe dikirimkan. Dikalikan dengan tcp_keepalive_probes ini menentukan waktu untuk memutus hubungan yang tidak merespons, setelah probe dimulai.
net.ipv4.tcp_tw_reuse 2 2 2 Memungkinkan penggunaan TIME-WAIT kembali soket untuk koneksi baru saat aman dari titik pandang protokol.
net.ipv4.ip_local_port_range Pertama: 1024 - 60999 dan Terakhir: 32768 - 65535] Pertama: 32768 dan Terakhir: 60999 Pertama: 32768 dan Terakhir: 60999 Pertama: 32768 dan Terakhir: 60999 Rentang port lokal yang digunakan oleh lalu lintas TCP dan UDP untuk memilih port lokal. Rentang ini terdiri dari dua angka: port lokal pertama yang diizinkan untuk lalu lintas TCP dan UDP pada simpul agen, dan nomor port lokal terakhir.
net.ipv4.neigh.default.gc_thresh1 128 - 80000 4096 4096 4096 Jumlah minimum entri yang dapat berada di cache ARP. Pengumpulan sampah tidak dipicu jika jumlah entri berada di bawah pengaturan ini.
net.ipv4.neigh.default.gc_thresh2 512 - 90000 8192 8192 8192 Jumlah maksimum fleksibel entri yang dapat berada di cache ARP. Pengaturan ini bisa dibilang yang paling penting, karena pengumpulan sampah ARP dipicu sekitar 5 detik setelah mencapai batas maksimum yang lunak ini.
net.ipv4.neigh.default.gc_thresh3 1024 - 100000 16384 16384 16384 Jumlah entri maksimum tetap dalam cache ARP.
net.netfilter.nf_conntrack_max 131072 - 2097152 Dihitung secara dinamis Dihitung secara dinamis Dihitung secara dinamis nf_conntrack adalah modul yang melacak entri koneksi untuk NAT dalam Linux. Modul nf_conntrack ini menggunakan tabel hash untuk merekam catatan koneksi yang dibuat dari protokol TCP. nf_conntrack_max adalah jumlah maksimum simpul dalam tabel hash, yaitu jumlah maksimum koneksi yang didukung oleh nf_conntrack modul atau ukuran tabel pelacakan koneksi. Nilai default dihitung secara dinamis berdasarkan memori sistem menggunakan rumus: RAM_in_bytes / 16384 (atau RAM_in_MB * 64). Misalnya, komputer virtual dengan RAM 8 GB memiliki default sekitar 524.288 koneksi. Nilai aktual bervariasi berdasarkan ukuran komputer virtual dan memori yang tersedia.
net.netfilter.nf_conntrack_buckets 65536 - 524288 Dihitung secara dinamis Dihitung secara dinamis Dihitung secara dinamis nf_conntrack adalah modul yang melacak entri koneksi untuk NAT dalam Linux. Modul nf_conntrack ini menggunakan tabel hash untuk merekam catatan koneksi yang dibuat dari protokol TCP. nf_conntrack_buckets adalah ukuran tabel hash. Nilai default dihitung secara dinamis berdasarkan memori sistem menggunakan rumus: RAM_in_bytes / 16384, dengan minimal 1.024 wadah dan maksimum 262.144 wadah. Default nf_conntrack_max biasanya diatur ke nf_conntrack_buckets * 4. Nilai aktual bervariasi berdasarkan ukuran komputer virtual dan memori yang tersedia.

Batas pekerja Linux

Seperti batas deskriptor file, jumlah pekerja atau utas yang dapat dibuat proses dibatasi oleh baik pengaturan kernel maupun batas pengguna. Batas pengguna pada AKS tidak terbatas. Tabel berikut ini mencantumkan pengaturan kernel yang bisa Anda kustomisasi per kumpulan simpul:

Pengaturan Default Ubuntu 22.04 Ubuntu 24.04 bawaan Azure Linux 3.0 Bawaan Description
kernel.threads-max Dihitung secara dinamis Dihitung secara dinamis Dihitung secara dinamis Proses dapat memulai utas pekerja. Jumlah maksimum semua thread yang dapat dibuat diatur dengan pengaturan kernelkernel.threads-max. Nilai default dihitung secara dinamis berdasarkan memori sistem menggunakan rumus: total_ram_pages / 4 (di mana setiap halaman biasanya 4 KB). Nilai aktual bervariasi berdasarkan ukuran komputer virtual dan memori yang tersedia.

Memori virtual Linux

Tabel berikut mencantumkan pengaturan kernel yang dapat Anda sesuaikan per kumpulan simpul untuk menyetel pengoperasian subsistem memori virtual (VM) kernel Linux dan writeout data kotor ke disk:

Pengaturan Nilai/interval yang diperbolehkan Default Ubuntu 22.04 Ubuntu 24.04 bawaan Azure Linux 3.0 Bawaan Description
vm.max_map_count 65530 1048576 1048576 File ini berisi jumlah maksimum area peta memori yang dapat dimiliki proses. Area pemetaan memori digunakan sebagai akibat dari pemanggilan malloc, langsung oleh mmap, mprotect, dan madvise, serta ketika memuat pustaka bersama.
vm.vfs_cache_pressure 1 - 100 100 100 100 Nilai persentase ini mengontrol kecenderungan kernel untuk memperoleh kembali memori, yang digunakan untuk caching objek direktori dan inode.
vm.swappiness 0 - 100 60 60 60 Kontrol ini digunakan untuk menentukan seberapa agresif kernel menukar halaman memori. Nilai yang lebih tinggi meningkatkan agresivitas, nilai yang lebih rendah mengurangi jumlah pertukaran. Nilai 0 menginstruksikan kernel untuk tidak memulai pertukaran sampai jumlah halaman bebas dan didukung file kurang dari tanda air tinggi di zona.
swapFileSizeMB 1 MB - Ukuran disk sementara (/dev/sdb) Tidak Tidak Tidak SwapFileSizeMB menentukan ukuran dalam MB dari file swap yang akan dibuat pada node agen di kumpulan node ini.
transparentHugePageEnabled always, madvise, never always always madvise Transparent Hugepages adalah fitur kernel Linux yang dimaksudkan untuk meningkatkan performa dengan memanfaatkan perangkat keras pemetaan memori prosesor Anda dengan lebih efisien. Ketika diaktifkan, kernel berusaha untuk mengalokasikan hugepages kapan pun memungkinkan dan setiap proses Linux akan menerima halaman 2-MB jika wilayah mmap sejajar secara alami dengan 2 MB. Dalam kasus tertentu ketika hugepages diaktifkan di seluruh sistem, aplikasi mungkin akhirnya mengalokasikan lebih banyak sumber daya memori. Aplikasi mungkin mmap wilayah besar tetapi hanya menyentuh 1 byte, dalam hal ini halaman 2-MB mungkin dialokasikan alih-alih halaman 4k tanpa alasan yang baik. Skenario ini adalah alasan dimungkinkannya menonaktifkan hugepages seluruh sistem atau hanya memilikinya di MADV_HUGEPAGE madvise dalam wilayah.
transparentHugePageDefrag always, , deferdefer+madvise, , madvise,never madvise madvise madvise Nilai ini mengontrol apakah kernel harus menggunakan pemadatan memori secara agresif untuk membuat lebih banyak hugepages tersedia.