Dalam skenario overcommit sumber daya dinamis, CPU yang tidak digunakan oleh Pod prioritas tinggi (Guaranteed dan Burstable) dapat dialokasikan ke workload BestEffort (BE). CPU Suppress secara dinamis membatasi penggunaan CPU Pod BE berdasarkan pemanfaatan node untuk melindungi Pod latency-sensitive (LS) serta menjaga penggunaan sumber daya kluster di bawah ambang batas aman.
CPU Suppress memerlukan dynamic resource overcommitment.
Cara kerja
CPU Suppress memantau pemanfaatan CPU node terhadap ambang batas yang dapat dikonfigurasi (cpuSuppressThresholdPercent, default: 65%). Cpuset Pod BE diperluas atau dipersempit berdasarkan ruang kosong (headroom) Pod LS:
-
Beban LS meningkat — CPU Suppress mengurangi cpuset Pod BE untuk melindungi waktu respons LS.
-
Beban LS menurun — CPU Suppress memperluas cpuset Pod BE untuk memanfaatkan kapasitas idle.
Gambar berikut menunjukkan hubungan antara ambang batas CPU, penggunaan Pod LS, dan pembatasan CPU Pod BE.
Gambar tersebut menggunakan istilah berikut:
-
CPU Threshold: ambang batas pemanfaatan CPU node
-
Pod (LS).Usage: penggunaan CPU oleh Pod LS
-
CPU Restriction for BE: sumber daya CPU yang tersedia untuk Pod BE
Selaraskan nilai cpuSuppressThresholdPercent dengan watermark CPU yang dicadangkan dalam konfigurasi dynamic resource overcommitment Anda.
Prasyarat
Pastikan Anda telah memiliki:
-
Kluster ACK Pro
-
ack-koordinator (ack-slo-manager) versi 0.4.0 atau lebih baru yang telah diinstal
Lihat Pod QoS classes dan Assign memory resources to containers and pods dalam dokumentasi Kubernetes.
Penagihan
Instalasi dan penggunaan ack-koordinator gratis. Biaya mungkin berlaku dalam kasus berikut:
-
Sumber daya node pekerja: ack-koordinator merupakan komponen non-managed yang mengonsumsi sumber daya node pekerja setelah instalasi. Anda dapat mengontrol permintaan sumber daya untuk setiap modul selama instalasi.
-
Metrik Prometheus: Jika Anda mengaktifkan metrik Prometheus untuk ack-koordinator dan menggunakan Managed Service for Prometheus, metrik tersebut dihitung sebagai custom metrics dan dikenai biaya. Biaya tergantung pada ukuran kluster dan jumlah aplikasi. Sebelum mengaktifkan, tinjau halaman Billing untuk Managed Service for Prometheus guna memahami kuota gratis dan aturan penagihan. Untuk pemantauan penggunaan, lihat Query the amount of observable data and bills.
Prosedur
CPU Suppress dikonfigurasi di tingkat kluster melalui ConfigMap ack-slo-config di namespace kube-system.
-
Buat file bernama
configmap.yamldengan konten berikut:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true } } -
Terapkan ConfigMap tersebut. Metode penerapan bergantung pada apakah
ack-slo-configsudah ada di kluster Anda:-
Jika ConfigMap sudah ada, lakukan patch untuk memperbarui hanya bidang yang relevan:
kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)" -
Jika ConfigMap belum ada, buat ConfigMap tersebut:
kubectl apply -f configmap.yaml
-
-
Verifikasi bahwa CPU Suppress aktif dengan memeriksa alokasi CPU Pod BE:
cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpusOutput yang diharapkan:
10-25,35-51,62-77,87-103Hal ini mengonfirmasi bahwa Pod BE dibatasi hanya pada subset CPU tertentu dan CPU Suppress aktif.
-
Opsional: Tetapkan ambang batas pemanfaatan CPU. Perbarui
configmap.yamldengan konten berikut dan terapkan kembali:apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true, "cpuSuppressThresholdPercent": 65 } }Nilai default: 65%. Sesuaikan
cpuSuppressThresholdPercentdengan profil workload atau watermark CPU dynamic resource overcommitment Anda.
Parameter
| Parameter | Tipe | Rentang nilai | Default | Deskripsi |
|---|---|---|---|---|
enable |
Boolean | true / false |
— | Mengaktifkan (true) atau menonaktifkan (false) CPU Suppress |
cpuSuppressThresholdPercent |
Integer | [0, 100] | 65 |
Ambang batas pemanfaatan CPU node (%). Sumber daya CPU Pod BE menyusut ketika pemanfaatan melebihi nilai ini dan diperluas saat turun di bawahnya. |
Langkah berikutnya
ack-koordinator menyediakan batasan sumber daya tambahan untuk workload yang mengalami overcommit: