Jika konfigurasi kubelet default tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan parameter kubelet di tingkat kelompok node untuk mengatur perilaku node. Misalnya, Anda dapat menyetel ulang alokasi sumber daya untuk mengelola penggunaan sumber daya, menetapkan ambang batas eviksi tekanan node khusus guna mengurangi kekurangan sumber daya, atau mengubah kebijakan topology manager untuk meningkatkan kinerja sistem.
Batasan
-
Hanya kluster ACK yang menjalankan Kubernetes 1.20 atau versi lebih baru yang mendukung parameter kubelet kustom. Untuk melakukan upgrade kluster, lihat Upgrade kluster secara manual.
-
Hanya kluster ACK Lingjun yang menjalankan Kubernetes 1.22 atau versi lebih baru yang mendukung parameter kubelet kustom. Untuk melakukan upgrade kluster, lihat Upgrade kluster.
Jika versi kluster Anda tidak memenuhi kondisi ini, perilaku yang tidak terduga mungkin terjadi.
Catatan penggunaan
-
Parameter kubelet kustom diterapkan ke node secara batch. Perubahan berlaku langsung pada node yang sudah ada di kelompok node dan diterapkan secara otomatis ke node baru. Penerapan konfigurasi akan merestart proses kubelet, yang dapat memengaruhi node dan beban kerja yang sedang berjalan. Kami menyarankan Anda melakukan operasi ini selama jam sepi.
-
Jika
evictionHard,kubeReserved, atausystemReservedtidak dikonfigurasi, sistem menggunakan nilai default untuk alokasi sumber daya. Untuk informasi lebih lanjut tentang cara menghitung nilai default tersebut, lihat Kebijakan alokasi sumber daya node. -
Perubahan pada konfigurasi alokasi sumber daya dapat mengurangi sumber daya yang dapat dialokasikan oleh node. Pada node dengan penggunaan sumber daya tinggi, hal ini dapat memicu eviksi node.
-
Kami sangat menyarankan agar Anda tidak menggunakan command line untuk menentukan parameter kubelet yang tidak didukung di Konsol. Penggunaan command line membawa risiko stabilitas yang signifikan. Anda bertanggung jawab atas kebenaran dan kompatibilitas konten file user data. Parameter yang salah atau sudah usang dapat menyebabkan node tidak tersedia.
-
Saat kubelet dimulai, kubelet menggabungkan konfigurasi dari berbagai sumber berdasarkan prioritasnya. Jika item konfigurasi yang sama diatur dengan beberapa cara, pengaturan dengan prioritas lebih tinggi akan menimpa pengaturan dengan prioritas lebih rendah.
Sesuaikan parameter kubelet di Konsol
Penerapan parameter kubelet kustom akan merestart proses kubelet, yang dapat memengaruhi layanan Anda. Kami menyarankan Anda melakukan operasi ini selama jam sepi.
Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Pada halaman Node Pools, temukan kelompok node target dan pilih
> Kubelet Configuration di kolom Actions. -
Baca catatan pada halaman tersebut. Klik Custom Parameters, pilih parameter yang ingin dikonfigurasi, tentukan node yang akan diupgrade, dan atur kebijakan pembaruan batch. Lalu, selesaikan operasi sesuai petunjuk.
Kebijakan pembaruan batch dijelaskan sebagai berikut:
-
Maximum Parallel Nodes per Batch: Jumlah node yang diperbarui secara bersamaan dalam setiap batch. Anda dapat memantau dan mengelola proses pembaruan di daftar event.
-
Interval Between Batches: Waktu tunggu antara batch pembaruan berturut-turut.
Anda dapat menjeda pembaruan untuk memverifikasi node yang telah diupgrade. Saat dijeda, pembaruan node yang sedang berlangsung akan diselesaikan, tetapi pembaruan baru tidak akan dimulai hingga Anda melanjutkan tugas tersebut.
Selesaikan tugas konfigurasi kustom sesegera mungkin. Tugas yang dijeda akan dibatalkan secara otomatis setelah tujuh hari, dan event serta log terkait akan dihapus.
-
Selain melalui Konsol, Anda juga dapat memanggil operasi API ModifyNodePoolNodeConfig untuk menyesuaikan parameter kubelet. Bagian berikut menjelaskan parameter kubelet yang dapat disesuaikan yang didukung oleh ACK.
Parameter kubelet yang dapat disesuaikan
|
Parameter |
Deskripsi |
Default |
Nilai |
|
allowedUnsafeSysctls |
Tentukan sysctl tidak aman yang diizinkan atau pola wildcard sysctl (pola yang diakhiri dengan Penting
Sebelum menggunakan parameter ini, evaluasi risikonya secara hati-hati dan pastikan ketersediaannya. |
N/A |
Mendukung konfigurasi sysctl dengan awalan berikut:
|
|
containerLogMaxFiles |
Jumlah maksimum file log untuk suatu kontainer. Nilainya harus 2 atau lebih besar. Runtime kontainer harus containerd. |
10 |
[2, 10] |
|
containerLogMaxSize |
Ukuran maksimum file log kontainer sebelum dilakukan rotasi. Runtime kontainer harus containerd. |
100Mi |
N/A |
|
cpuCFSQuota |
Mengaktifkan penegakan kuota CPU CFS untuk kontainer yang memiliki batas CPU. |
true |
Nilai valid:
|
|
cpuCFSQuotaPeriod |
Menetapkan nilai periode kuota CPU CFS. Feature gate CustomCPUCFSQuotaPeriod harus diaktifkan. |
100ms |
Nilai dari 1 milidetik hingga 1 detik, inklusif. |
|
cpuManagerPolicy |
Kebijakan manajer CPU. |
none |
Nilai valid:
|
|
eventBurst |
Jumlah maksimum catatan event dalam satu burst. |
10 |
Nilainya harus bilangan bulat dari 1 hingga 100 dan lebih besar atau sama dengan nilai |
|
eventRecordQPS |
Jumlah event yang dapat dihasilkan per detik. |
5 |
[1, 50] |
|
evictionHard |
Sekumpulan ambang batas eviksi keras yang memicu eviksi Pod. |
imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5% |
None |
|
evictionSoft |
Sekumpulan ambang batas eviksi lunak. |
None |
None |
|
evictionSoftGracePeriod |
Sekumpulan periode tenggang eviksi. Catatan
|
None |
None |
|
featureGates |
Sekumpulan feature gate untuk fitur eksperimental. Setiap gate direpresentasikan sebagai Dalam formulir konfigurasi, pilih key (misalnya Penting
|
N/A |
N/A |
|
imageGCHighThresholdPercent |
Persentase penggunaan disk yang memicu garbage collection gambar. Garbage collection gambar berjalan terus-menerus ketika penggunaan disk melebihi ambang batas ini. Nilai ini harus lebih besar dari nilai imageGCLowThresholdPercent. |
85 |
[60, 95] |
|
imageGCLowThresholdPercent |
Persentase penggunaan disk di bawah ambang batas ini sehingga garbage collection gambar tidak dijalankan. Nilai ini harus lebih kecil dari nilai imageGCHighThresholdPercent. |
80 |
[30, 90] |
|
kubeAPIBurst |
Jumlah maksimum permintaan burst yang dikirim ke server API per detik. |
10 |
[1, 100], dan harus lebih besar atau sama dengan |
|
kubeAPIQPS |
Jumlah permintaan per detik (QPS) ke server API. |
5 |
[1, 50] |
|
kubeReserved |
Konfigurasi sumber daya yang dicadangkan untuk daemon sistem Kubernetes. |
Nilainya dihitung secara otomatis secara default. Untuk informasi lebih lanjut, lihat Kebijakan pemesanan sumber daya node. |
N/A |
|
maxPods |
Jumlah maksimum Pod yang dapat berjalan di suatu node. Penting
Memodifikasi nilai |
N/A. Nilainya bergantung pada konfigurasi sumber daya fisik seperti spesifikasi mesin dan perencanaan jaringan kontainer. |
N/A |
|
memoryManagerPolicy |
Kebijakan untuk manajer memori. |
None |
Nilai valid:
|
|
podPidsLimit |
Jumlah maksimum ID proses (PID) yang dapat digunakan di setiap Pod.
|
16384 |
None |
|
readOnlyPort |
Port read-only untuk kubelet yang tidak memerlukan otentikasi. |
|
0 Untuk informasi tentang risiko membuka port read-only (10255) untuk pemantauan kontainer kubelet, lihat [Perubahan Produk] Migrasi port pemantauan kluster ACK versi lama ke port terotentikasi. |
|
registryBurst |
Jumlah maksimum burst penarikan gambar. |
10 |
Nilainya harus dalam rentang [1, 100] dan harus lebih besar atau sama dengan nilai |
|
registryPullQPS |
QPS maksimum untuk registri gambar. |
5 |
[1, 50] |
|
reservedMemory |
Daftar pemesanan memori untuk node NUMA. |
None |
None |
|
serializeImagePulls |
Menentukan apakah gambar ditarik secara serial. |
False |
Nilai valid:
|
|
systemReserved |
Konfigurasi sumber daya yang dicadangkan untuk daemon sistem. |
Nilainya dihitung secara otomatis secara default. Untuk informasi lebih lanjut, lihat Kebijakan pemesanan sumber daya node. |
N/A |
|
topologyManagerPolicy |
Kebijakan topology manager. Dengan arsitektur NUMA, mengalokasikan data ke node NUMA yang sama mengurangi akses lintas node dan meningkatkan kinerja. Topology manager membuat keputusan alokasi sumber daya yang selaras secara topologi. Untuk informasi lebih lanjut, lihat Mengontrol Kebijakan Manajemen Topologi pada node. |
none |
|
|
containerLogMonitorInterval |
Kluster harus menjalankan Kubernetes 1.30 atau versi lebih baru. Interval pemeriksaan rotasi log kontainer. |
10s |
[3s, 60s] |
|
containerLogMaxWorkers |
Kluster harus menjalankan Kubernetes 1.30 atau versi lebih baru. Jumlah maksimum worker konkuren untuk rotasi log. |
1 |
[1, 20] |
|
tracing |
Mengaktifkan tracing untuk komponen lapisan kontrol atau bidang data kluster. Untuk informasi lebih lanjut, lihat Manajemen tracing. |
None |
|
|
singleProcessOOMKill |
Mengontrol perilaku OOM Kill kontainer di lingkungan cgroup v2. Ketika diatur ke
|
Di lingkungan cgroup v2, nilai default-nya adalah |
|
|
configMapAndSecretChangeDetectionStrategy |
Mode operasi untuk manajer ConfigMap dan Secret. |
|
|
|
serverTLSBootstrap |
Hanya kluster ACK Managed Pro yang didukung. Pastikan bahwa feature gate
Aktifkan bootstrapping sertifikat server Kubelet. Saat fitur ini diaktifkan, Kubelet meminta sertifikat server dari kluster melalui API |
|
Nilai valid:
|
FAQ
Apakah konfigurasi kustom akan dihentikan?
Saat Kubernetes berkembang, parameter dan feature gate dapat dihentikan atau dihapus. Jika parameter kustom yang dikelola oleh ACK dihentikan di versi Kubernetes baru, ACK akan menghapus konfigurasi terkait selama upgrade kluster.
Mengelola kubelet dengan file konfigurasi
Container Service for Kubernetes menyesuaikan cara pengelolaan konfigurasi kubelet berdasarkan praktik terbaik komunitas. Untuk kluster yang menjalankan Kubernetes 1.20 atau versi lebih baru, flag command line kubelet yang sudah usang secara bertahap diganti dengan file konfigurasi. Untuk informasi lebih lanjut, lihat Kubelet Configuration (v1beta1).
Node baru menggunakan file konfigurasi dan metode konfigurasi asli. Node yang sudah ada tidak terpengaruh. Untuk mengelola konfigurasi semua node di kelompok node hanya dengan file konfigurasi, Anda dapat menerapkan konfigurasi kustom seperti yang dijelaskan di Parameter kubelet yang dapat disesuaikan untuk menstandarisasi konfigurasi semua node di kelompok node tersebut.
Memodifikasi parameter kubelet yang tidak didukung
ACK memungkinkan Anda menulis parameter kustom ke file /etc/kubernetes/kubelet-customized-args.conf. File ini menyimpan parameter startup kustom dan opsi konfigurasi untuk kubelet. Parameter dalam file ini memiliki prioritas lebih tinggi daripada nilai yang diatur melalui fitur konfigurasi kubelet kustom kelompok node saat node direstart.
Menyesuaikan parameter kubelet dapat menyebabkan masalah seperti kegagalan registrasi node dan kegagalan penjadwalan Pod, yang memengaruhi layanan Anda. Sebelum melanjutkan, evaluasi sepenuhnya risiko perubahan tersebut.
-
(Direkomendasikan) Untuk node yang akan ditambahkan ke kelompok node di masa depan, Anda dapat menambahkan skrip yang menulis ke file konfigurasi parameter kustom di bagian User Data kelompok node. Hal ini memastikan node baru menggunakan nilai parameter kustom ini secara default.
Konfigurasikan konten berikut di bagian User Data konfigurasi kelompok node, dan ganti
${kubelet_key}dan${kubelet_value}dengan nilai aktual.Anda hanya dapat menulis ke file
kubelet-customized-args.confdengan menggunakan perintah> /etc/kubernetes/kubelet-customized-args.confatau> kubelet-customized-args.confdi User Data. Jika Anda memodifikasi file dengan metode lain di Pre-defined Custom Data, file /etc/kubernetes/kubelet-customized-args.conf akan ditimpa selama proses inisialisasi ACK.mkdir -p /etc/kubernetes echo 'KUBELET_CUSTOMIZED_ARGS="--${kubelet_key}=${kubelet_value}"' > /etc/kubernetes/kubelet-customized-args.conf systemctl daemon-reload systemctl restart kubeletUntuk mengakses halaman konfigurasi, lihat Buat dan kelola kelompok node.
-
Untuk node yang sudah ada di kelompok node, login ke node untuk memodifikasi file konfigurasi parameter kustom. Lalu, jalankan perintah berikut untuk menerapkan konfigurasi.
systemctl daemon-reload systemctl restart kubelet
Referensi
-
Untuk informasi lebih lanjut tentang item konfigurasi untuk kelompok node, lihat Buat dan kelola kelompok node.
-
Jika Anda mengalami error atau perilaku abnormal pada node, Pod, atau kubelet, lihat Troubleshoot node exceptions, Pod troubleshooting, dan FAQ tentang node dan kelompok node untuk memecahkan masalah tersebut.