全部产品
Search
文档中心

Container Service for Kubernetes:Kebijakan reservasi sumber daya

更新时间:Jul 02, 2025

Container Service for Kubernetes (ACK) memesan sejumlah sumber daya node tertentu untuk menjalankan komponen Kubernetes dan proses sistem. Hal ini memastikan bahwa kernel sistem operasi, layanan sistem, dan daemon Kubernetes dapat berjalan sesuai harapan. Akibatnya, jumlah sumber daya yang dapat dialokasikan dari sebuah node berbeda dengan kapasitas sumber daya node tersebut. ACK menyediakan kebijakan reservasi sumber daya default. Anda juga dapat mengonfigurasi kubelet untuk menyesuaikan reservasi sumber daya.

Batasan

Anda hanya dapat membuat kebijakan reservasi sumber daya kustom untuk kluster dengan versi Kubernetes 1.20 atau lebih baru. Untuk meningkatkan kluster ACK, lihat Tingkatkan kluster ACK secara manual.

Dampak

Dampak dari reservasi sumber daya kustom

Untuk informasi lebih lanjut tentang cara menyesuaikan reservasi sumber daya, lihat Sesuaikan parameter kubelet dari sebuah pool node. Kebijakan reservasi sumber daya kustom diterapkan pada node yang sudah ada di dalam pool node dan node yang baru ditambahkan ke pool node. Node baru mencakup node yang ditambahkan melalui operasi perluasan skala dan node Elastic Compute Service (ECS) yang ditambahkan dengan memilih Add Existing Node di halaman Pool Node di konsol ACK.

Penting
  • Jangan menggunakan CLI untuk memodifikasi ConfigMap kubelet secara manual. Jika terjadi konflik konfigurasi, pengecualian mungkin terjadi selama aktivitas O&M pool node.

  • Jika Anda mengubah jumlah sumber daya yang dicadangkan untuk sebuah node, jumlah sumber daya yang dapat dialokasikan untuk node tersebut mungkin berkurang. Jika penggunaan sumber daya node tinggi, pod yang berjalan di node tersebut mungkin diusir. Konfigurasikan reservasi sumber daya dengan tepat.

Dampak dari reservasi sumber daya default

ACK dapat mengulangi nilai default dari reservasi sumber daya. Jika Anda memperbarui konfigurasi node dari sebuah pool node setelah iterasi, kebijakan reservasi sumber daya baru akan diterapkan secara otomatis ke node di dalam pool node. Sebagai contoh, jika Anda memperbarui versi Kubernetes, memperbarui pool node, atau memodifikasi parameter kubelet dari pool node, kebijakan reservasi sumber daya baru akan diterapkan secara otomatis. Jika Anda tidak melakukan operasi O&M apa pun, kebijakan reservasi sumber daya baru tidak akan diterapkan pada node yang sudah ada di dalam pool node agar stabilitas bisnis Anda tidak terpengaruh.

Lihat sumber daya yang dapat dialokasikan dari sebuah node

Jalankan perintah berikut untuk melihat kapasitas sumber daya dan sumber daya yang dapat dialokasikan dari sebuah node:

kubectl describe node [NODE_NAME] | grep Allocatable -B 7 -A 6

Output yang diharapkan:

Capacity:
  cpu:                4                 # Jumlah total core CPU dari node. 
  ephemeral-storage:  123722704Ki       # Jumlah total penyimpanan sementara dari node. Unit: KiB. 
  enormouspages-1Gi:      0
  enormouspages-2Mi:      0
  memory:             7925980Ki         # Jumlah total memori dari node. Unit: KiB. 
  pods:               64
Allocatable:
  cpu:                3900m             # Jumlah core CPU yang dapat dialokasikan pada node. 
  ephemeral-storage:  114022843818      # Jumlah penyimpanan sementara yang dapat dialokasikan pada node. Unit: bytes. 
  enormouspages-1Gi:      0
  enormouspages-2Mi:      0
  memory:             5824732Ki         # Jumlah memori yang dapat dialokasikan pada node. Unit: KiB. 
  pods:               64

Hitung sumber daya yang dapat dialokasikan dari sebuah node

Anda dapat menghitung sumber daya yang dapat dialokasikan dari sebuah node berdasarkan rumus berikut: Sumber daya yang dapat dialokasikan = Kapasitas sumber daya - Sumber daya yang dicadangkan - Ambang batas pengusiran.

Deskripsi rumus:

  • Parameter Capacity dalam output perintah yang digunakan untuk menanyakan sumber daya node menunjukkan kapasitas sumber daya dari node.

  • Untuk informasi lebih lanjut tentang reservasi sumber daya, lihat bagian Kebijakan reservasi sumber daya dari topik ini.

  • Untuk informasi lebih lanjut tentang ambang batas pengusiran, lihat Pengusiran Tekanan Node.

Kebijakan reservasi sumber daya

Perhatikan item berikut saat Anda mengonfigurasi kebijakan reservasi sumber daya:

  • Secara umum, node ECS dengan spesifikasi lebih tinggi dapat menampung lebih banyak pod. Untuk memastikan performa node, ACK memesan lebih banyak sumber daya untuk komponen Kubernetes.

  • Node Windows memerlukan sumber daya tambahan untuk menjalankan sistem operasi Windows dan komponen Windows Server. Oleh karena itu, node Windows biasanya memesan lebih banyak sumber daya dibandingkan node Linux. Untuk informasi lebih lanjut, lihat Buat pool node Windows.

ACK menghitung jumlah sumber daya yang dicadangkan berdasarkan sumber daya CPU dan memori dalam interval yang berbeda. Kapasitas sumber daya node sama dengan jumlah sumber daya yang dicadangkan di semua interval. Untuk mengurangi jumlah sumber daya CPU dan memori yang dicadangkan, algoritma kebijakan reservasi sumber daya dioptimalkan untuk kluster ACK yang menjalankan Kubernetes 1.28. Kami merekomendasikan Anda untuk memperbarui kluster Anda. Untuk informasi lebih lanjut, lihat Tingkatkan kluster ACK secara manual.

Sumber daya yang dicadangkan dibagi menjadi dua kategori: kubeReserved dan systemReserved. Sumber daya kubeReserved dicadangkan untuk komponen Kubernetes, dan sumber daya systemReserved dicadangkan untuk proses sistem. Setiap kategori mencakup 50% dari total sumber daya yang dicadangkan. Sebagai contoh, pada node dengan 4 core CPU, kluster ACK yang menjalankan Kubernetes 1.28 atau lebih baru mencadangkan total 80 millicores sumber daya CPU, dengan sumber daya kubeReserved dan systemReserved masing-masing mencakup 40 millicores. Sebaliknya, kluster ACK yang menjalankan versi Kubernetes 1.20 hingga 1.28 (inklusif) mencadangkan total 100 millicores sumber daya CPU, dengan sumber daya kubeReserved dan systemReserved masing-masing mencakup 50 millicores.

Kebijakan untuk reservasi sumber daya CPU

Kubernetes 1.28 atau lebih baru

Gambar berikut menunjukkan jumlah total sumber daya CPU yang dicadangkan dari sebuah node komputasi.

Jika node menyediakan 32 core CPU, jumlah total sumber daya CPU yang dicadangkan dihitung berdasarkan rumus berikut:

1000 × 6% + 1000 × 1% + 1000 × 2 × 0.5% + (32000 - 4000) × 0.25% = 150 millicores

Kubernetes 1.20 hingga 1.28 (inklusif)

Gambar berikut menunjukkan jumlah total sumber daya CPU yang dicadangkan dari sebuah node komputasi.

Jika node menyediakan 32 core CPU, jumlah total sumber daya CPU yang dicadangkan dihitung berdasarkan rumus berikut:

100 + (32,000 - 4,000) × 2.5% = 800 millicores

Kebijakan untuk reservasi memori

Kubernetes 1.28 atau lebih baru

Jumlah total sumber daya memori yang dicadangkan dari sebuah node komputasi dihitung berdasarkan rumus berikut: Sumber daya memori yang dicadangkan = min(11 × ($max_num_pods) + 255, Memori node × 25%). Jumlah total sumber daya memori yang dicadangkan adalah nilai yang lebih kecil antara 11 × ($max_num_pods) + 255 dan Memori node × 25%.

  • $max_num_pods: Jumlah maksimum pod yang dapat berjalan di node.

    Catatan

    Metode perhitungan kapasitas pod maksimum per node bervariasi tergantung pada plug-in jaringan kluster. Untuk penjelasan dan rumus terperinci, lihat Jumlah maksimum pod.

    Anda dapat masuk ke Konsol ACK dan periksa jumlah maksimum pod per node di halaman Nodes.
    • Terway: Kuota Pod per Node = Pod Jaringan Kontainer Maksimum + Pod Jaringan Host

    • Flannel: Konfigurasikan nilai secara manual selama pembuatan kluster.

  • Memori node: Jumlah sumber daya memori yang tersedia sebenarnya dari sistem. Unit: MiB.

    Ukuran memori yang didefinisikan dalam setiap tipe instance adalah ukuran memori total, yang mencakup jumlah memori yang ditempati oleh sistem. Akibatnya, ukuran memori yang tersedia pada instance Anda lebih kecil dari ukuran memori yang didefinisikan dalam tipe instance. Untuk informasi lebih lanjut, lihat Mengapa instance yang dibeli memiliki ukuran memori yang berbeda dari ukuran memori yang didefinisikan dalam tipe instance?

Sebagai contoh, sebuah kluster menggunakan Terway dalam mode ENI bersama multi-IP, dan tipe instance dari sebuah node adalah ecs.g7.16xlarge dengan 256 GiB memori. Dalam kasus ini, jumlah maksimum pod yang dapat berjalan di node dihitung berdasarkan rumus berikut: (8 - 1) × 30 + 3 = 213. Jumlah total sumber daya memori yang dicadangkan dihitung berdasarkan rumus berikut: Sumber daya memori yang dicadangkan = min(11 × (210 + 3) + 255, 256 × 1,024 × 25%) = 2,598 MiB.

Kubernetes 1.20 hingga 1.28 (inklusif)

Gambar berikut menunjukkan jumlah total sumber daya memori yang dicadangkan dari sebuah node komputasi.

Jika node menyediakan 256 GiB memori, jumlah total sumber daya memori yang dicadangkan dihitung berdasarkan rumus berikut:

4 × 25% + (8 - 4) × 20% + (16 - 8) × 10% + (128 - 16) × 6% + (256 - 128) × 2% = 11.88 GiB

Contoh reservasi sumber daya default pada node ACK

Catatan

Untuk informasi lebih lanjut tentang tipe instance ECS, lihat Ikhtisar keluarga instance.

Kapasitas sumber daya node

Sumber daya yang dicadangkan (Kubernetes 1.28 atau lebih baru)

Sumber daya yang dicadangkan (Kubernetes 1.20 hingga 1.28, inklusif)

Tipe instance

CPU (Unit: core)

Memori

(Unit: GiB)

Jumlah maksimum pod pada sebuah node

Dalam contoh ini, kluster menggunakan Terway dalam mode ENI bersama multi-IP.

CPU

(Unit: millicore)

Memori

(Unit: MiB)

CPU (Unit: millicore)

Memori (Unit: MiB)

ECS c7

2

4

15

70

420

100

1.024

4

8

48

80

783

100

1.843

8

16

48

90

783

200

2.662

16

32

213

110

2.598

400

3.645

32

64

213

150

2.598

800

5.611

64

128

213

230

2.598

1.600

9.543

128

256

423

390

4.908

2.400

12.164

ECS ebmc7a

256

512

453

710

5.238

3.040

17.407

FAQ

Bagaimana cara saya melihat total sumber daya CPU dan memori dari sebuah node?

CPU

Jalankan perintah berikut untuk melihat jumlah total core CPU dari sebuah node:

cat /proc/cpuinfo | grep processor

Output yang diharapkan:

processor       : 0
processor       : 1
processor       : 2
processor       : 3

Memori

Jalankan perintah berikut untuk melihat jumlah total memori dari sebuah node:

cat /proc/meminfo | grep MemTotal

Output yang diharapkan:

MemTotal:        7660952 kB

Referensi

  • Untuk informasi lebih lanjut tentang cara menyesuaikan reservasi sumber daya dan ambang batas pengusiran serta catatan penggunaan terkait, lihat Sesuaikan parameter kubelet dari sebuah pool node

  • Anda dapat mengonfigurasi permintaan sumber daya untuk pod aplikasi berdasarkan jumlah sumber daya yang dapat dialokasikan. Jumlah total permintaan sumber daya dari semua pod aplikasi pada sebuah node tidak boleh lebih besar dari jumlah sumber daya yang dapat dialokasikan pada node tersebut. Jika tidak, penjadwalan pod gagal karena sumber daya tidak mencukupi. ACK dapat membuat profil sumber daya untuk beban kerja asli Kubernetes untuk membantu Anda mengonfigurasi permintaan sumber daya berdasarkan data penggunaan sumber daya historis. Untuk informasi lebih lanjut tentang cara mengonfigurasi permintaan sumber daya untuk pod aplikasi, lihat Buat aplikasi tanpa status menggunakan Deployment.