Dalam skenario overkomitmen sumber daya dinamis, Anda dapat meng-overcommit sumber daya yang tidak digunakan dari aplikasi dengan prioritas tinggi, seperti Guaranteed atau Burstable, kepada tugas-tugas BestEffort (BE) dengan prioritas rendah. Untuk memastikan penggunaan CPU oleh pod BE tetap dalam rentang yang wajar, Container Service for Kubernetes (ACK) menyediakan fitur Penekanan CPU, yang memungkinkan Anda memprioritaskan operasi stabil pod sensitif-latensi (LS) di node.
Untuk membantu Anda lebih memahami dan menggunakan fitur ini, kami menyarankan Anda membaca topik-topik berikut di dokumentasi resmi Kubernetes: Kelas QoS Pod dan Tetapkan sumber daya memori ke kontainer dan pod.
Fitur ini harus digunakan bersama dengan fitur overkomitmen sumber daya dinamis. Untuk informasi lebih lanjut, lihat Aktifkan overkomitmen sumber daya dinamis.
Mengapa mengaktifkan Penekanan CPU
Untuk meningkatkan penggunaan sumber daya kluster, model overkomitmen sumber daya dinamis memungkinkan pemesanan buffer sumber daya untuk tugas LS prioritas tinggi guna mengelola fluktuasi beban pada link hulu dan hilir, sambil mengalokasikan sumber daya overcommitted kepada tugas BE prioritas rendah. Untuk memastikan sumber daya CPU yang cukup bagi pod LS di sebuah node, Anda dapat menggunakan ack-koordinator untuk membatasi penggunaan CPU oleh pod BE di node tersebut. Fitur Penekanan CPU menjaga utilisasi sumber daya node di bawah ambang batas tertentu dan membatasi jumlah sumber daya CPU yang dapat digunakan oleh pod BE. Ini memastikan stabilitas kontainer di node. Fitur Penekanan CPU membatasi jumlah sumber daya CPU yang digunakan oleh pod BE ketika penggunaan sumber daya keseluruhan node berada di bawah ambang batas, sehingga memastikan bahwa kontainer di node memiliki sumber daya yang cukup untuk beroperasi secara stabil.
Berikut adalah daftar istilah yang digunakan dalam gambar:
Ambang Batas CPU: ambang batas penggunaan CPU sebuah node.
Penggunaan Pod (LS): penggunaan CPU pod LS.
Pembatasan CPU untuk BE: penggunaan CPU pod BE.
Jumlah sumber daya CPU yang dapat digunakan oleh pod BE disesuaikan berdasarkan fluktuasi penggunaan CPU pod LS. Kami menyarankan Anda menggunakan nilai yang sama untuk Ambang Batas CPU dan watermark CPU cadangan dalam model overkomitmen sumber daya dinamis untuk memastikan tingkat pemanfaatan sumber daya CPU yang konsisten.
Prasyarat
Sebuah kluster ACK Pro telah dibuat. Untuk informasi lebih lanjut, lihat Buat kluster ACK Pro.
ack-koordinator versi 0.4.0 atau lebih baru telah diinstal. Untuk informasi lebih lanjut tentang cara menginstal ack-koordinator, lihat ack-koordinator (ack-slo-manager).
Tagihan
Tidak ada biaya yang dikenakan saat Anda menginstal atau menggunakan komponen ack-koordinator. Namun, biaya mungkin dikenakan dalam skenario berikut:
ack-koordinator adalah komponen non-managed yang menggunakan sumber daya node pekerja setelah diinstal. Anda dapat menentukan jumlah sumber daya yang diminta oleh setiap modul saat menginstal komponen tersebut.
Secara default, ack-koordinator mengekspos metrik pemantauan fitur seperti profil sumber daya dan penjadwalan granular sebagai metrik Prometheus. Jika Anda mengaktifkan metrik Prometheus untuk ack-koordinator dan menggunakan Managed Service for Prometheus, metrik ini dianggap sebagai metrik kustom dan biaya akan dikenakan untuk metrik ini. Biaya tergantung pada faktor-faktor seperti ukuran kluster Anda dan jumlah aplikasi. Sebelum mengaktifkan metrik Prometheus, kami menyarankan Anda membaca topik Tagihan dari Managed Service for Prometheus untuk mempelajari tentang kuota gratis dan aturan tagihan metrik kustom. Untuk informasi lebih lanjut tentang cara memantau dan mengelola penggunaan sumber daya, lihat Kueri jumlah data observabel dan tagihan.
Prosedur
Anda dapat mengaktifkan fitur Penekanan CPU di tingkat kluster melalui ConfigMap. Selain itu, Anda dapat mengonfigurasi parameter terkait dalam ConfigMap, seperti ambang batas utilisasi CPU node (cpuSuppressThresholdPercent) dengan Penekanan CPU diaktifkan, untuk mencapai manajemen sumber daya yang granular.
Buat file bernama configmap.yaml berdasarkan isi ConfigMap berikut:
apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: # Aktifkan Penekanan CPU. resource-threshold-config: | { "clusterStrategy": { "enable": true } }Periksa apakah ConfigMap
ack-slo-configada di namespacekube-system.Jika ConfigMap
ack-slo-configada, kami menyarankan Anda menggunakan metode PATCH untuk memperbarui ConfigMap. Metode ini tidak mengubah pengaturan lain dalam ConfigMap.kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"Jika ConfigMap
ack-slo-configtidak ada, jalankan perintah berikut untuk membuat ConfigMap bernama ack-slo-config:kubectl apply -f configmap.yaml
Jalankan perintah berikut untuk menanyakan core CPU yang dialokasikan ke pod BE di node:
cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpusKeluaran yang diharapkan:
10-25,35-51,62-77,87-103Keluaran yang diharapkan menunjukkan bahwa core CPU berikut dialokasikan ke pod BE di node:
10-25,35-51,62-77,87-103. Ini menunjukkan bahwa sumber daya CPU yang tersedia untuk pod BE dibatasi setelah mengaktifkan Penekanan CPU, berdasarkan penggunaan sumber daya saat ini.Opsional: Konfigurasikan parameter lanjutan berdasarkan isi ConfigMap berikut.
Penekanan CPU memungkinkan Anda mengonfigurasi lebih lanjut ambang batas utilisasi CPU.
apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: resource-threshold-config: | { "clusterStrategy": { "enable": true, "cpuSuppressThresholdPercent": 65 } }Tabel berikut menjelaskan parameter utama:
Parameter
Tipe
Rentang nilai
Deskripsi
enableBoolean
truefalse
true: mengaktifkan Penekanan CPU.false: menonaktifkan Penekanan CPU.
cpuSuppressThresholdPercentInteger
[0, 100]
Ambang batas utilisasi CPU node. Nilai default:
65. Satuan: %.