Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menyesuaikan konfigurasi node memungkinkan Anda menyesuaikan pengaturan sistem operasi (OS) atau parameter kubelet agar sesuai dengan kebutuhan beban kerja Anda. Saat membuat kluster AKS atau menambahkan kumpulan simpul ke kluster, Anda dapat mengkustomisasikan subset pengaturan OS dan kubelet yang umum digunakan. Untuk mengonfigurasi pengaturan di luar subset ini, Anda dapat menggunakan set daemon untuk menyesuaikan konfigurasi yang Anda butuhkan tanpa kehilangan dukungan AKS untuk simpul Anda.
Membuat file konfigurasi simpul kustom untuk kumpulan simpul AKS
Perubahan konfigurasi OS dan kubelet mengharuskan Anda membuat file konfigurasi baru dengan parameter dan pengaturan yang Anda inginkan. Jika nilai untuk parameter tidak ditentukan, maka nilai diatur ke default.
Catatan
Contoh berikut menunjukkan pengaturan konfigurasi umum. Anda dapat mengubah pengaturan untuk memenuhi persyaratan beban kerja Anda. Untuk daftar lengkap parameter konfigurasi kustom yang didukung, lihat bagian Parameter konfigurasi kustom yang didukung .
Konfigurasi Kubelet
Buat file linuxkubeletconfig.json dengan konten berikut:
{
"cpuManagerPolicy": "static",
"cpuCfsQuota": true,
"cpuCfsQuotaPeriod": "200ms",
"imageGcHighThreshold": 90,
"imageGcLowThreshold": 70,
"topologyManagerPolicy": "best-effort",
"allowedUnsafeSysctls": [
"kernel.msg*",
"net.*"
],
"failSwapOn": false
}
Konfigurasi OS
Buat file linuxosconfig.json dengan konten berikut:
{
"transparentHugePageEnabled": "madvise",
"transparentHugePageDefrag": "defer+madvise",
"swapFileSizeMB": 1500,
"sysctls": {
"netCoreSomaxconn": 163849,
"netIpv4TcpTwReuse": true,
"netIpv4IpLocalPortRange": "32000 60000"
}
}
Membuat kluster AKS menggunakan file konfigurasi kustom
Catatan
Ingatlah informasi berikut saat menggunakan file konfigurasi kustom saat membuat kluster AKS baru:
- Jika Anda menentukan konfigurasi saat membuat kluster, konfigurasi hanya berlaku untuk simpul di kumpulan simpul awal. Pengaturan apa pun yang tidak dikonfigurasi dalam file JSON mempertahankan nilai defaultnya.
-
CustomLinuxOsConfigtidak didukung untuk jenis OS Windows.
Buat kluster baru dengan menggunakan file konfigurasi kustom melalui perintah az aks create serta menentukan file konfigurasi Anda untuk parameter --kubelet-config dan --linux-os-config. Contoh perintah berikut membuat kluster baru dengan kustom ./linuxkubeletconfig.json dan ./linuxosconfig.json file:
az aks create --name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
Menambahkan kumpulan simpul menggunakan file konfigurasi kustom
Catatan
Ingatlah informasi berikut saat menggunakan file konfigurasi kustom saat menambahkan kumpulan simpul baru ke kluster AKS yang ada:
- Saat menambahkan kumpulan simpul Linux ke kluster yang ada, Anda dapat menentukan konfigurasi kubelet, konfigurasi OS, atau keduanya. Saat menambahkan kumpulan simpul Windows ke kluster yang ada, Anda hanya dapat menentukan konfigurasi kubelet. Jika Anda menentukan konfigurasi saat menambahkan kumpulan simpul, konfigurasi hanya berlaku untuk simpul di kumpulan simpul baru. Pengaturan apa pun yang tidak dikonfigurasi dalam file JSON mempertahankan nilai defaultnya.
-
CustomKubeletConfigdidukung untuk kumpulan simpul Linux dan Windows.
Buat kumpulan simpul Linux baru dengan menggunakan perintah az aks nodepool add dan menentukan file konfigurasi Anda untuk parameter --kubelet-config dan --linux-os-config. Contoh perintah berikut membuat kumpulan simpul Linux baru dengan file kustom ./linuxkubeletconfig.json :
az aks nodepool add --name <node-pool-name> --cluster-name <cluster-name> --resource-group <resource-group-name> --kubelet-config ./linuxkubeletconfig.json
Konfirmasikan setelan sudah diterapkan
Setelah menerapkan konfigurasi simpul kustom, Anda dapat mengonfirmasi pengaturan diterapkan ke simpul dengan menyambungkan ke host dan memverifikasi sysctl atau perubahan konfigurasi dilakukan pada sistem file.
Parameter konfigurasi kustom yang didukung
Konfigurasi kustom kubelet Linux
| Parameter | Nilai/interval yang diperbolehkan | Default | Deskripsi |
|---|---|---|---|
cpuManagerPolicy |
tidak ada, statis | tidak ada | Kebijakan statis memungkinkan kontainer dalam pod yang dijamin dengan permintaan CPU bilangan bulat untuk mengakses CPU eksklusif pada node. |
cpuCfsQuota |
benar, salah | benar | 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 | tidak ada | 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 sysctls tidak aman atau pola sysctl tidak aman yang diizinkan. |
containerLogMaxSizeMB |
Ukuran dalam megabyte (MB) | 50 | Ukuran maksimum (misalnya, 10 MB) dari file log kontainer sebelum diputar. |
containerLogMaxFiles |
≥ 2 | 5 | Jumlah maksimum {i>file |
podMaxPids |
-1 ke batas PID kernel | -1 (∞) | Jumlah maksimum ID proses yang dapat berjalan dalam sebuah 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 pratinjau.
Daftarkan fitur flag "KubeletDefaultSeccompProfilePreview" menggunakan perintah az feature register dengan --namespace "Microsoft.ContainerService". |
Konfigurasi kustom kubelet Windows
| Parameter | Nilai/interval yang diperbolehkan | Default | Deskripsi |
|---|---|---|---|
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 | 5 | Jumlah maksimum {i>file |
Pengaturan konfigurasi OS kustom Linux
Penting
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 memodifikasi vm.max_map_count setting, 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 | Deskripsi |
|---|---|---|---|---|---|
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 file watch 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 io 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. |
Catatan
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_opendanulimit) 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 | Ubuntu 22.04 Default | Ubuntu 24.04 bawaan | Azure Linux 3.0 Bawaan | Deskripsi |
|---|---|---|---|---|---|
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 itu diam-diam terpotong 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 penyangga soket terima maksimum dalam byte. |
net.core.wmem_max |
212992 - 134217728 | 212992 | 212992 | 212992 | Ukuran penyangga soket kirim maksimum dalam 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 soket timewait maksimal 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 keepalive banyak probe yang dikirim TCP, sampai memutuskan bahwa sambungan rusak. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 75 | 75 | 75 | Seberapa sering probe dikirim. Dikalikan dengan tcp_keepalive_probes itu membuat waktu untuk memutus sambungan yang tidak merespons, setelah probe dimulai. |
net.ipv4.tcp_tw_reuse |
2 | 2 | 2 | Perbolehkan untuk menggunakan kembali TIME-WAIT soket untuk sambungan baru ketika aman dari sudut 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 | Jajaran port lokal yang digunakan oleh lalu lintas TCP dan UDP untuk memilih port lokal. Terdiri dari dua nomor: Nomor pertama adalah port lokal pertama yang diizinkan untuk lalu lintas TCP dan UDP pada simpul agen, yang kedua adalah 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 keras 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, VM dengan RAM 8 GB memiliki default sekitar 524.288 koneksi. Nilai aktual bervariasi berdasarkan ukuran VM 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 VM dan memori yang tersedia. |
Batas pekerja Linux
Seperti batas deskriptor file, jumlah pekerja atau utas yang dapat dibuat proses dibatasi oleh pengaturan kernel dan batas pengguna. Batas pengguna pada AKS tidak terbatas. Tabel berikut ini mencantumkan pengaturan kernel yang bisa Anda kustomisasi per kumpulan simpul:
| Pengaturan | Ubuntu 22.04 default | Ubuntu 24.04 bawaan | Azure Linux 3.0 Bawaan | Deskripsi |
|---|---|---|---|---|
kernel.threads-max |
Dihitung secara dinamis | Dihitung secara dinamis | Dihitung secara dinamis | Proses dapat memutar 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 VM 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 | Ubuntu 22.04 bawaan | Ubuntu 24.04 bawaan | Azure Linux 3.0 Bawaan | Deskripsi |
|---|---|---|---|---|---|
vm.max_map_count |
65530 | 1048576 | 1048576 | File ini berisi jumlah maksimum area peta memori yang dapat dimiliki proses. Area peta memori digunakan sebagai efek samping dari panggilan malloc, langsung oleh mmap, mprotect, dan madvise, dan juga saat 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, , madvisenever |
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. |
Konten terkait
- Pelajari cara mengonfigurasi klaster AKS Anda.
- Pelajari cara meningkatkan citra simpul di kluster Anda.
- Lihat Meningkatkan kluster Azure Kubernetes Service (AKS) untuk mempelajari cara meningkatkan kluster ke versi terbaru Kubernetes.
- Lihat daftar Pertanyaan umum tentang AKS untuk menemukan jawaban atas beberapa pertanyaan umum AKS.