Kustomisasi konfigurasi node untuk kumpulan node Azure Kubernetes Service (AKS)
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 kluster AKS dengan konfigurasi simpul yang disesuaikan
Membuat file konfigurasi
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 akan diatur ke default.
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 baru menggunakan file konfigurasi kustom
Saat membuat kluster baru, Anda dapat menggunakan file konfigurasi yang disesuaikan yang dibuat pada langkah sebelumnya untuk menentukan konfigurasi kubelet, konfigurasi OS, atau keduanya.
Catatan
Jika Anda menentukan konfigurasi saat membuat kluster, hanya simpul di kumpulan simpul awal yang akan menerapkan konfigurasi tersebut. Pengaturan apa pun yang tidak dikonfigurasi dalam file JSON akan mempertahankan nilai default. CustomLinuxOsConfig
tidak didukung untuk jenis OS: Windows.
Buat kluster baru menggunakan file konfigurasi kustom menggunakan az aks create
perintah dan tentukan file konfigurasi Anda. Contoh perintah berikut membuat kluster baru dengan kustom ./linuxkubeletconfig.json
dan ./linuxosconfig.json
file:
az aks create --name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json --linux-os-config ./linuxosconfig.json
Menambahkan kumpulan simpul menggunakan file konfigurasi kustom
Saat menambahkan kumpulan simpul ke kluster, Anda dapat menggunakan file konfigurasi yang disesuaikan yang dibuat pada langkah sebelumnya untuk menentukan konfigurasi kubelet. CustomKubeletConfig
didukung untuk kumpulan simpul Linux dan Windows.
Catatan
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, hanya simpul di kumpulan simpul awal yang akan menerapkan konfigurasi tersebut. Pengaturan apa pun yang tidak dikonfigurasi dalam file JSON akan mempertahankan nilai default.
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --kubelet-config ./linuxkubeletconfig.json
Konfigurasi lain
Pengaturan berikut dapat digunakan untuk mengubah pengaturan sistem operasi lainnya:
Pesan Hari Ini
Lewati bendera --message-of-the-day
dengan lokasi file untuk menggantikan Pesan Hari Ini di node Linux saat pembuatan kluster atau pembuatan kumpulan node.
az aks create --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Pembuatan kumpulan node
az aks nodepool add --name mynodepool1 --cluster-name myAKSCluster --resource-group myResourceGroup --message-of-the-day ./newMOTD.txt
Konfirmasi pengaturan yang telah diterapkan
Setelah menerapkan konfigurasi simpul kustom, Anda dapat mengonfirmasi pengaturan telah diterapkan ke simpul dengan menyambungkan ke host dan memverifikasi atau perubahan sysctl
konfigurasi telah dilakukan pada sistem file.
Parameter yang didukung konfigurasi node kustom
Konfigurasi kustom Kubelet
Konfigurasi kustom Kubelet didukung untuk kumpulan simpul Linux dan Windows. Parameter yang didukung berbeda dan didokumenkan di bawah ini.
Konfigurasi kustom Linux Kubelet
Parameter | Nilai/interval yang diperbolehkan | Default | Deskripsi |
---|---|---|---|
cpuManagerPolicy |
tidak ada, statis | tidak ada | Kebijakan statis memungkinkan kontainer dalam Pod Terjamin dengan CPU bilangan bulat meminta akses ke CPU eksklusif pada simpul. |
cpuCfsQuota |
true, false | benar | Aktifkan/Nonaktifkan penegakan 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 penyelarasan simpul NUMA, lihat selengkapnya di sini. |
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 {i>file |
containerLogMaxFiles |
≥ 2 | 5 | Jumlah maksimum {i>file |
podMaxPids |
-1 ke batas PID kernel | -1 (∞) | Jumlah maksimum ID proses yang dapat berjalan dalam Pod |
Konfigurasi kustom Windows Kubelet
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 {i>file |
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 file JSON konfigurasi atau API AKS menggunakan konvensi kapitalisasi camelCase.
Misalnya, jika Anda mengubah 'pengaturan vm.max_map_count', Anda harus memformat ulang ke 'vmMaxMapCount' dalam file JSON konfigurasi.
Batas penanganan file
Saat melayani banyak lalu lintas, lalu lintas biasanya berasal dari sejumlah besar file lokal. Anda dapat menyesuaikan pengaturan kernel di bawah ini dan batas bawaan untuk memungkinkan Anda menangani lebih banyak, dengan biaya beberapa memori sistem.
Pengaturan | Nilai/interval yang diperbolehkan | Default | Deskripsi |
---|---|---|---|
fs.file-max |
8192 - 12000500 | 709620 | Jumlah maksimum file-handle yang akan dialokasik kernel Linux, dengan meningkatkan nilai ini Anda dapat meningkatkan jumlah maksimum file terbuka yang diizinkan. |
fs.inotify.max_user_watches |
781250 - 2097152 | 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 | 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 | Jumlah maksimum penanganan file yang dapat dialokasikan oleh proses. |
Soket dan penyetelan jaringan
Untuk simpul agen, yang diharapkan untuk menangani sejumlah besar sesi bersamaan, Anda dapat menggunakan subset TCP dan opsi jaringan di bawah ini yang dapat Anda ubah per kumpulan simpul.
Pengaturan | Nilai/interval yang diperbolehkan | Default | Deskripsi |
---|---|---|---|
net.core.somaxconn |
4096- 3240000 | 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 | 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 | 212992 | Ukuran penyangga soket terima maksimum dalam byte. |
net.core.wmem_max |
212992 - 134217728 | 212992 | Ukuran penyangga soket kirim maksimum dalam byte. |
net.core.optmem_max |
20480 - 4194304 | 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 | Jumlah maksimum permintaan sambungan antrean yang masih belum menerima pengakuan dari klien penghubung. Jika angka ini terlampaui, kernel akan mulai menghilangkan permintaan. |
net.ipv4.tcp_max_tw_buckets |
8000 - 1440000 | 32768 | 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 | Lamanya waktu sambungan tanpa induk (tidak lagi direferensikan oleh aplikasi apa pun) akan tetap dalam status FIN_WAIT_2 sebelum dibatalkan di ujung lokal. |
net.ipv4.tcp_keepalive_time |
30 - 432000 | 7200 | Seberapa sering TCP keepalive mengirim pesan ketika keepalive diaktifkan. |
net.ipv4.tcp_keepalive_probes |
1 - 15 | 9 | Berapa keepalive banyak probe yang dikirim TCP, sampai memutuskan bahwa sambungan rusak. |
net.ipv4.tcp_keepalive_intvl |
10 - 90 | 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 |
0 atau 1 | 0 | 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 | 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 | Jumlah minimum entri yang mungkin ada di cache ARP. Pengumpulan sampah tidak akan dipicu jika jumlah entri di bawah pengaturan ini. |
net.ipv4.neigh.default.gc_thresh2 |
512 - 90000 | 8192 | Jumlah entri maksimum lunak yang mungkin ada di cache ARP. Pengaturan ini bisa dibilang yang paling penting, karena pengumpulan sampah ARP akan dipicu sekitar 5 detik setelah mencapai maksimum lunak ini. |
net.ipv4.neigh.default.gc_thresh3 |
1024 - 100000 | 16384 | Jumlah entri maksimum keras dalam cache ARP. |
net.netfilter.nf_conntrack_max |
131072 - 2097152 | 131072 | 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. |
net.netfilter.nf_conntrack_buckets |
65536 - 524288 | 65536 | 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. |
Batas pekerja
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.
Pengaturan | Nilai/interval yang diperbolehkan | Default | Deskripsi |
---|---|---|---|
kernel.threads-max |
20 - 513785 | 55601 | Proses dapat memutar utas pekerja. Jumlah maksimum semua thread yang dapat dibuat diatur dengan pengaturan kernelkernel.threads-max . |
Memori virtual
Pengaturan di bawah ini dapat digunakan untuk menyetel pengoperasian subsistem memori virtual (VM) dari kernel Linux dan writeout
data kotor ke disk.
Pengaturan | Nilai/interval yang diperbolehkan | Default | Deskripsi |
---|---|---|---|
vm.max_map_count |
65530 - 262144 | 65530 | Berkas ini memuat jumlah maksimum area peta memori yang mungkin 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 | Nilai persentase ini mengontrol kecenderungan kernel untuk memperoleh kembali memori, yang digunakan untuk caching objek direktori dan inode. |
vm.swappiness |
0 - 100 | 60 | Kontrol ini digunakan untuk menentukan seberapa agresif kernel akan bertukar halaman memori. Nilai yang lebih tinggi akan 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 | SwapFileSizeMB menentukan ukuran dalam MB dari file pertukaran akan dibuat pada simpul agen dari kumpulan simpul ini. |
transparentHugePageEnabled |
always , , madvise never |
always |
Transparent Hugepages adalah fitur kernel Linux yang dimaksudkan untuk meningkatkan performa dengan membuat penggunaan perangkat keras pemetaan memori prosesor Anda yang lebih efisien. Ketika diaktifkan, kernel mencoba mengalokasikan kapan pun hugepages memungkinkan dan proses Linux apa pun akan menerima halaman 2-MB jika mmap wilayah tersebut 2 MB diselaraskan secara alami. Dalam kasus tertentu hugepages ketika diaktifkan di seluruh sistem, aplikasi mungkin akhirnya mengalokasikan lebih banyak sumber daya memori. Aplikasi mungkin berupa wilayah mmap yang besar tetapi hanya menyentuh 1 byte itu, dalam hal ini halaman 2-MB mungkin dialokasikan alih-alih halaman 4k tanpa alasan yang tepat. Skenario ini adalah alasan dimungkinkannya menonaktifkan hugepages seluruh sistem atau hanya memilikinya di MADV_HUGEPAGE madvise dalam wilayah. |
transparentHugePageDefrag |
always , , defer defer+madvise , , madvise ,never |
madvise |
Nilai ini mengontrol apakah kernel harus menggunakan pemadatan memori secara agresif untuk membuat lebih banyak hugepages tersedia. |
Langkah berikutnya
- 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.
Azure Kubernetes Service