Merencanakan ukuran node GKE Standard


Halaman ini menjelaskan cara merencanakan ukuran node di node pool Google Kubernetes Engine (GKE) Standard untuk mengurangi risiko gangguan workload dan penghentian resource. Perencanaan ini tidak diperlukan dalam GKE Autopilot karena Google mengelola node untuk Anda.

Manfaat node yang berukuran tepat

Memastikan node Anda berukuran tepat untuk mengakomodasi workload dan untuk menangani lonjakan aktivitas, akan memberikan manfaat seperti berikut:

  • Keandalan workload yang lebih baik karena mengurangi risiko penghapusan di luar resource.
  • Peningkatan skalabilitas untuk menskalakan workload selama periode traffic tinggi.
  • Biaya lebih rendah karena node tidak terlalu besar untuk kebutuhan Anda, yang dapat mengakibatkan resource terbuang percuma.

Resource node yang dapat dialokasikan

Node GKE menjalankan komponen sistem yang memungkinkan node berfungsi sebagai bagian dari cluster Anda. Komponen ini menggunakan resource node, seperti CPU dan memori. Mungkin Anda melihat perbedaan antara total resource node, yang didasarkan pada ukuran mesin virtual (VM) Compute Engine yang mendasarinya, dan resource yang tersedia untuk diminta oleh workload GKE Anda. Perbedaan ini karena GKE mencadangkan jumlah resource yang telah ditetapkan untuk fungsionalitas sistem dan keandalan node. Kapasitas disk yang dicadangkan GKE untuk resource sistem berbeda-beda berdasarkan image node. Resource sisa yang tersedia untuk workload Anda disebut resource yang dapat dialokasikan.

Saat menentukan Pod dalam manifes, Anda dapat menentukan permintaan dan batas resource dalam spesifikasi Pod. Saat GKE menempatkan Pod di suatu node, Pod akan meminta resource yang ditentukan tersebut dari resource yang dapat dialokasikan pada node. Saat merencanakan ukuran node di node pool, Anda harus mempertimbangkan jumlah resource yang diperlukan workload agar dapat berfungsi dengan benar.

Memeriksa resource yang dapat dialokasikan pada node

Untuk memeriksa resource yang dapat dialokasikan pada node yang ada, jalankan perintah berikut:

kubectl get node NODE_NAME \
    -o=yaml | grep -A 7 -B 7 capacity

Ganti NODE_NAME dengan nama node.

Outputnya mirip dengan hal berikut ini:

allocatable:
  attachable-volumes-gce-pd: "127"
  cpu: 3920m
  ephemeral-storage: "47060071478"
  hugepages-1Gi: "0"
  hugepages-2Mi: "0"
  memory: 13498416Ki
  pods: "110"
capacity:
  attachable-volumes-gce-pd: "127"
  cpu: "4"
  ephemeral-storage: 98831908Ki
  hugepages-1Gi: "0"
  hugepages-2Mi: "0"
  memory: 16393264Ki
  pods: "110"

Dalam output ini, nilai di bagian allocatable adalah resource yang dapat dialokasikan pada node. Nilai di bagian capacity adalah total resource pada node. Unit penyimpanan {i>ephemeral<i} adalah byte.

Reservasi resource GKE

GKE mencadangkan jumlah resource CPU dan memori tertentu pada node berdasarkan total ukuran resource yang tersedia di node tersebut. Jenis mesin yang lebih besar menjalankan lebih banyak container dan Pod, sehingga jumlah resource yang dicadangkan GKE ditingkatkan untuk mesin yang lebih besar. Node Windows Server juga memerlukan lebih banyak sumber daya daripada node Linux yang setara, untuk memperhitungkan menjalankan OS Windows dan untuk komponen Windows Server yang tidak dapat berjalan dalam container.

Reservasi memori dan CPU

Bagian berikut menjelaskan reservasi memori dan CPU default berdasarkan jenis mesin.

Reservasi memori

Untuk resource memori, GKE mencadangkan hal berikut:

  • Memori 255 MiB untuk mesin dengan memori kurang dari 1 GiB
  • 25% dari 4 GiB pertama memori
  • 20% dari 4 GiB memori berikutnya (hingga 8 GiB)
  • 10% dari 8 GiB memori berikutnya (hingga 16 GiB)
  • 6% dari 112 GiB memori berikutnya (hingga 128 GiB)
  • 2% dari memori apa pun di atas 128 GiB

GKE juga menyimpan memori tambahan sebesar 100 MiB di setiap node untuk menangani penghapusan Pod.

Reservasi CPU

Untuk resource CPU, GKE mencadangkan hal berikut:

  • 6% dari inti pertama
  • 1% dari inti berikutnya (hingga 2 inti)
  • 0,5% dari 2 inti berikutnya (hingga 4 inti)
  • 0,25% dari setiap inti di atas 4 inti

Untuk jenis mesin E2 dengan inti bersama, GKE mencadangkan total 1.060 milidetik.

Reservasi penyimpanan efemeral lokal

GKE menyediakan penyimpanan efemeral lokal pada node, yang didukung oleh perangkat yang terpasang secara lokal, seperti boot disk node atau SSD lokal. Penyimpanan efemeral tidak menjamin ketersediaan, dan data dalam penyimpanan efemeral dapat hilang jika node gagal dan dihapus.

GKE mencadangkan sebagian dari total penyimpanan efemeral node sebagai sistem file tunggal untuk digunakan oleh kubelet selama penghapusan Pod, dan untuk komponen sistem lainnya yang berjalan pada node. Anda dapat mengalokasikan penyimpanan efemeral yang tersisa ke Pod untuk digunakan untuk berbagai tujuan seperti log. Untuk mempelajari cara menentukan permintaan dan batas penyimpanan efemeral di Pod, lihat Penyimpanan efemeral lokal.

GKE menghitung reservasi penyimpanan efemeral lokal sebagai berikut:

EVICTION_THRESHOLD + SYSTEM_RESERVATION

Nilai sebenarnya bervariasi berdasarkan ukuran dan jenis perangkat yang mendukung penyimpanan.

Penyimpanan efemeral yang didukung oleh boot disk node

Secara default, penyimpanan efemeral didukung oleh boot disk node. Dalam hal ini, GKE menentukan nilai batas penghapusan sebagai berikut:

EVICTION_THRESHOLD = 10% * BOOT_DISK_CAPACITY

Nilai minimum penghapusan selalu 10% dari total kapasitas boot disk.

GKE menentukan nilai reservasi sistem sebagai berikut:

SYSTEM_RESERVATION = Min(50% * BOOT_DISK_CAPACITY, 6GiB + 35% * BOOT_DISK_CAPACITY, 100 GiB)

Jumlah reservasi sistem adalah yang terendah dari jumlah berikut:

  • 50% kapasitas boot disk
  • 35% kapasitas boot disk + 6 GiB
  • 100 GiB

Misalnya, jika boot disk Anda adalah 300 GiB, nilai berikut akan berlaku:

  • 50% kapasitas: 150 GiB
  • 35% kapasitas + 6 GiB: 111 GiB
  • 100 GiB

GKE akan mencadangkan hal berikut:

  • Reservasi sistem: 100 GiB (nilai terendah)
  • Nilai minimum penghapusan: 30 GiB

Total penyimpanan efemeral yang dicadangkan adalah 130 GiB. Kapasitas yang tersisa, 170 GiB, adalah penyimpanan efemeral yang dapat dialokasikan.

Penyimpanan efemeral yang didukung oleh SSD lokal

Jika penyimpanan efemeral Anda didukung oleh SSD lokal, GKE akan menghitung nilai minimum penghapusan sebagai berikut:

EVICTION_THRESHOLD = 10% * SSD_NUMBER * 375 GB

Dalam penghitungan ini, SSD_NUMBER adalah jumlah SSD lokal yang terpasang. Semua SSD lokal berukuran 375 GB, sehingga nilai minimum penghapusannya adalah 10% dari total kapasitas penyimpanan efemeral.

GKE menghitung reservasi sistem bergantung pada jumlah SSD yang terpasang, sebagai berikut:

Jumlah SSD lokal Reservasi sistem (GiB)
1 50 GiB
2 75 GiB
3 atau lebih 100 GiB

Menggunakan reservasi resource untuk merencanakan ukuran node

  1. Pertimbangkan persyaratan resource workload Anda pada waktu deployment dan saat memuat. Ini termasuk permintaan dan batas yang direncanakan untuk workload, serta overhead untuk mengakomodasi peningkatan skala.

  2. Pertimbangkan apakah Anda ingin sejumlah kecil node besar atau sejumlah besar node kecil untuk menjalankan workload Anda.

    • Sejumlah kecil node besar berfungsi dengan baik untuk workload intensif resource yang tidak memerlukan ketersediaan tinggi. Penskalaan otomatis node kurang tangkas karena makin banyak Pod yang harus dikeluarkan agar penurunan skala terjadi.
    • Sejumlah besar node kecil berfungsi dengan baik untuk workload yang sangat tersedia yang tidak intensif resource. Penskalaan otomatis node lebih tangkas karena lebih sedikit Pod harus dikeluarkan agar penurunan skala terjadi.
  3. Gunakan panduan perbandingan kelompok mesin Compute Engine untuk menentukan rangkaian mesin dan rangkaian yang Anda inginkan untuk node Anda.

  4. Pertimbangkan persyaratan penyimpanan efemeral workload Anda. Apakah boot disk node sudah cukup? Apakah Anda memerlukan SSD lokal?

  5. Hitung resource yang dapat dialokasikan pada jenis mesin yang Anda pilih menggunakan informasi di bagian sebelumnya. Bandingkan ini dengan sumber daya dan overhead yang Anda butuhkan.

    • Jika jenis mesin yang Anda pilih terlalu besar, pertimbangkan mesin yang lebih kecil agar tidak membayar resource tambahan.
    • Jika jenis mesin yang Anda pilih terlalu kecil, pertimbangkan mesin yang lebih besar untuk mengurangi risiko gangguan workload.

Langkah selanjutnya