ACK memesan CPU dan memori node untuk Kubernetes serta komponen sistem, sehingga terdapat selisih antara kapasitas total node (Capacity) dan sumber daya yang dapat dijadwalkan (Allocatable). ACK menerapkan kebijakan pemesanan default dan juga mendukung pemesanan kustom melalui konfigurasi kubelet.
Limits
Pemesanan sumber daya kustom memerlukan Kubernetes 1.20 atau versi yang lebih baru. Untuk melakukan upgrade, lihat Manually upgrade a cluster.
Cakupan dampak
Pemesanan sumber daya kustom dan cakupan dampaknya
Untuk mengubah nilai pemesanan, konfigurasikan kubelet untuk kelompok node. Perubahan berlaku segera untuk node yang sudah ada. Node baru—termasuk yang berasal dari penskalaan atau Add Existing Node—juga menggunakan konfigurasi yang diperbarui.
-
Jangan mengedit file konfigurasi kubelet secara manual melalui command line. Tindakan tersebut dapat menyebabkan konflik konfigurasi dan perilaku tak terduga selama operasi dan pemeliharaan (O&M) kelompok node.
-
Menambah pemesanan sumber daya akan mengurangi sumber daya yang dapat dialokasikan. Pada node dengan penggunaan sumber daya tinggi, hal ini dapat memicu eviction Pod. Tetapkan nilai dengan hati-hati.
Pemesanan sumber daya default dan cakupan dampaknya
ACK dapat memperbarui nilai pemesanan default seiring waktu. Nilai yang diperbarui diterapkan secara otomatis saat Anda melakukan perubahan di tingkat node—misalnya, saat melakukan upgrade kluster atau kelompok node, atau memodifikasi parameter kubelet. Tanpa perubahan tersebut, node yang sudah ada tetap menggunakan nilai sebelumnya demi stabilitas.
Lihat sumber daya yang dapat dialokasikan pada node
Lihat kapasitas total dan sumber daya yang dapat dialokasikan pada suatu node:
kubectl describe node [NODE_NAME] | grep Allocatable -B 7 -A 6
Output yang diharapkan:
Capacity:
cpu: 4 # Total core CPU pada node.
ephemeral-storage: 123722704Ki # Total penyimpanan sementara pada node, dalam KiB.
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 7925980Ki # Total memori pada node, dalam KiB.
pods: 64
Allocatable:
cpu: 3900m # Core CPU yang dapat dialokasikan.
ephemeral-storage: 114022843818 # Penyimpanan sementara yang dapat dialokasikan, dalam byte.
hugepages-1Gi: 0
hugepages-2Mi: 0
memory: 5824732Ki # Memori yang dapat dialokasikan, dalam KiB.
pods: 64
Hitung sumber daya yang dapat dialokasikan
Gunakan rumus berikut untuk menghitung sumber daya yang dapat dialokasikan:Allocatable = Capacity − Reserved − Eviction threshold
Rincian rumus:
-
Sumber daya total sesuai dengan bidang
Capacitydalam output kueri node. -
Lihat Node-pressure eviction untuk ambang batas eviction.
Rincian kebijakan pemesanan sumber daya
Sumber daya yang dipesan bergantung pada beberapa faktor:
-
Instance ECS dengan spesifikasi lebih tinggi menjalankan lebih banyak Pod, sehingga ACK memesan lebih banyak sumber daya untuk komponen Kubernetes.
-
Node Windows memesan lebih banyak sumber daya dibandingkan node Linux untuk OS dan komponen Windows Server. Lihat Create and manage Windows node pools.
ACK menghitung sumber daya yang dipesan berdasarkan rentang CPU dan memori—totalnya merupakan jumlah dari semua rentang tersebut. Pada Kubernetes 1.28, ACK mengoptimalkan algoritma untuk mengurangi pemesanan. Lihat Manually upgrade a cluster.
Sumber daya yang dipesan dibagi rata antara komponen Kubernetes (kubeReserved) dan proses sistem (systemReserved). Pada node 4-core, ACK memesan 80 millicore pada Kubernetes 1.28+ (40 kubeReserved + 40 systemReserved), atau 100 millicore pada versi 1.20 hingga 1.27 (50 + 50).
Kebijakan pemesanan sumber daya CPU
Kubernetes 1.28 dan versi yang lebih baru
Total pemesanan CPU untuk node komputasi:
Untuk node 32-core, total pemesanan CPU dihitung sebagai berikut:
1000 × 6% + 1000 × 1% + 1000 × 2 × 0,5% + (32000 − 4000) × 0,25% = 150 millicores
Kubernetes 1.20 hingga 1.27
Total pemesanan CPU untuk node komputasi:
Untuk node 32-core, total pemesanan CPU dihitung sebagai berikut:
100 + (32000 − 4000) × 2,5% = 800 millicores
Kebijakan pemesanan sumber daya memori
Kubernetes 1.28 dan versi yang lebih baru
Rumus total pemesanan memori:
Total memory reservation = min(11 × ($max_num_pods) + 255, 25% × node memory). Nilai akhir adalah yang lebih kecil antara 11 × ($max_num_pods) + 255 dan 25% of node memory.
-
$max_num_pods: Jumlah maksimum Pod yang didukung pada node.CatatanJumlah maksimum Pod bervariasi tergantung plug-in jaringan. Lihat Maximum pods per node untuk detailnya.
Anda dapat login ke Container Service Management Console dan melihat jumlah maksimum Pod pada halaman Nodes.
-
Terway:
Maximum pods per node = Maximum container-network pods + Host-network pods. -
Flannel: Diatur oleh Anda saat membuat kluster.
-
-
Node memory: Memori yang benar-benar dapat digunakan, dalam satuan MiB.
Sebagai contoh, dengan Terway (shared ENI, multiple IPs) pada instance ecs.g7.16xlarge (memori 256 GiB): jumlah maksimum Pod = (8 − 1) × 30 + 3 = 213. Total pemesanan memori = min(11 × (210 + 3) + 255, 256 × 1024 × 25%) = 2598 MiB.
Kubernetes 1.20 hingga 1.27
Total pemesanan memori untuk node komputasi:
Untuk node dengan memori 256 GiB, total pemesanan memori dihitung sebagai berikut:
4 × 25% + (8 − 4) × 20% + (16 − 8) × 10% + (128 − 16) × 6% + (256 − 128) × 2% = 11,88 GiB
Contoh pemesanan sumber daya default untuk node ACK
Lihat Instance families untuk detail tipe instans ECS.
|
Total sumber daya node |
Sumber daya yang dipesan (Kubernetes 1.28 dan versi yang lebih baru) |
Sumber daya yang dipesan (Kubernetes 1.20 hingga 1.27) |
|||||
|
Tipe instans contoh |
CPU (core) |
Memori (GiB) |
Maksimum Pod per Node (menggunakan mode multi-IP ENI bersama Terway sebagai contoh) |
CPU (milicore) |
Memori (MiB) |
CPU (millicores) |
Memori (MiB) |
|
Tipe instans ECS c7 |
2 |
4 |
15 |
70 |
420 |
100 |
1024 |
|
4 |
8 |
48 |
80 |
783 |
100 |
1843 |
|
|
8 |
16 |
48 |
90 |
783 |
200 |
2662 |
|
|
16 |
32 |
213 |
110 |
2598 |
400 |
3645 |
|
|
32 |
64 |
213 |
150 |
2598 |
800 |
5611 |
|
|
64 |
128 |
213 |
230 |
2598 |
1600 |
9543 |
|
|
128 |
256 |
423 |
390 |
4908 |
2400 |
12164 |
|
|
Tipe instans ECS ebmc7a |
256 |
512 |
453 |
710 |
5238 |
3040 |
17407 |
FAQ
Bagaimana cara melihat total CPU dan memori pada suatu node?
CPU
Lihat total core CPU:
cat /proc/cpuinfo | grep processor
Output yang diharapkan:
processor : 0
processor : 1
processor : 2
processor : 3
Memori
Lihat total memori:
cat /proc/meminfo | grep MemTotal
Output yang diharapkan:
MemTotal: 7660952 kB
Mengapa memori yang tersedia lebih sedikit daripada spesifikasi tipe instans?
Spesifikasi tipe instans mencakup total memori (termasuk penggunaan oleh OS), sehingga memori yang tersedia selalu lebih sedikit. Lihat After purchasing an instance, why does the displayed memory differ from the instance type specification?.
Referensi
-
Kustomisasi pemesanan sumber daya dan ambang batas eviction dengan mengonfigurasi kubelet untuk kelompok node.
-
Total permintaan Pod pada suatu node tidak boleh melebihi sumber daya yang dapat dialokasikan, atau Pod gagal dijadwalkan. Gunakan profil sumber daya ACK untuk menganalisis penggunaan historis dan menetapkan permintaan yang akurat untuk beban kerja Kubernetes native. Lihat Create a Deployment.