Tentang pembuatan otomatis node pool

Google Kubernetes Engine (GKE) dapat otomatis membuat dan mengelola node pool di cluster Anda berdasarkan konfigurasi workload Anda. Dokumen ini menjelaskan cara kerja pembuatan otomatis node pool, parameter penskalaan, dan perilaku default, serta memberikan rekomendasi yang dapat membantu Anda meningkatkan skalabilitas. Dokumen ini ditujukan bagi administrator cluster yang ingin mengurangi biaya yang terkait dengan pengelolaan infrastruktur manual di cluster mode Standard.

Anda seharusnya sudah memahami konsep berikut:

Dalam mode Autopilot, GKE selalu membuat dan mengelola node serta node pool untuk Anda berdasarkan workload Anda. Anda tidak perlu mengonfigurasi pembuatan otomatis node pool secara manual untuk cluster Autopilot atau untuk workload Autopilot di cluster Standard. Untuk mengetahui informasi selengkapnya, lihat Ringkasan GKE Autopilot.

Apa yang dimaksud dengan pembuatan otomatis node pool?

Di GKE, node pool adalah grup logis node. Setiap node dalam node pool memiliki konfigurasi yang sama dengan setiap node lain dalam node pool tersebut. Pembuatan otomatis node pool adalah mekanisme penskalaan otomatis infrastruktur yang memungkinkan GKE membuat node pool baru di cluster Anda yang memenuhi persyaratan workload Anda. GKE mengelola node pool yang dibuat otomatis ini, melakukan tugas seperti memperbarui metadata node, membuat dan menghapus node di node pool, serta menghapus seluruh node pool saat tidak lagi diperlukan. Pembuatan otomatis node pool adalah ekstensi dari autoscaler cluster GKE, yang secara otomatis menskalakan node di setiap node pool.

Pembuatan otomatis node pool dirancang agar GKE dapat otomatis memperkecil skala dan menghapus node pool kosong dari cluster Anda. Anda tidak dapat menetapkan jumlah minimum node yang harus dimiliki setiap node pool yang dibuat otomatis, karena jumlah minimum yang lebih besar dari nol akan mencegah penghapusan node pool kosong. Jika kasus penggunaan Anda memerlukan jumlah minimum node untuk selalu berjalan di cluster, buat node pool secara manual dengan penskalaan otomatis diaktifkan.

Cara kerjanya

Pembuatan otomatis node pool memperluas autoscaler cluster GKE agar GKE dapat menyediakan node pool baru yang memenuhi persyaratan hardware dan permintaan resource Pod yang tertunda. Anda dapat menentukan persyaratan hardware dengan cara berikut:

  • Gunakan ComputeClasses, yang kemudian Anda pilih di berbagai Pod menggunakan pemilih node. Sebaiknya gunakan metode ini, karena Anda dapat menentukan konfigurasi node umum secara terpusat yang dapat digunakan oleh beberapa workload.
  • Gunakan pemilih node atau afinitas node untuk meminta label node GKE tertentu dalam spesifikasi Pod.

GKE mengonfigurasi node pool baru berdasarkan parameter seperti berikut:

  • Permintaan resource CPU, memori, dan penyimpanan efemeral di Pod dan container Anda, termasuk Pod yang dikelola oleh DaemonSet.
  • Permintaan GPU dan TPU dalam spesifikasi Pod atau di ComputeClass.
  • Persyaratan hardware, seperti jenis mesin atau jenis boot disk, dalam spesifikasi Pod yang tertunda atau di ComputeClasses.
  • Toleransi dalam spesifikasi Pod yang tertunda yang memiliki pemilih node yang cocok.

GKE mengonfigurasi kapasitas resource setiap node dalam node pool yang dibuat otomatis agar lebih besar dari atau sama dengan permintaan resource Pod yang tertunda. Anda harus memastikan bahwa permintaan resource Anda cukup besar agar Pod dapat berfungsi seperti yang diharapkan. Jika permintaan Pod Anda terlalu rendah, Pod tidak akan berjalan seperti yang diharapkan setelah GKE menjadwalkannya di node yang dibuat otomatis.

Konfigurasi metadata node

GKE juga mengonfigurasi metadata node (seperti label, anotasi, dan taint node) berdasarkan persyaratan workload Anda, seperti dalam contoh berikut:

  • Jika Anda meminta seri mesin N2, GKE akan menambahkan label node cloud.google.com/machine-family: n2 ke setiap node.
  • Jika Anda memilih ComputeClass di Pod, GKE akan menambahkan label node dengan kunci cloud.google.com/compute-class yang ditetapkan ke nama ComputeClass tersebut.
  • Jika Pod Anda memiliki toleransi dan pemilih node untuk label node yang sama, GKE akan menambahkan taint node untuk toleransi tersebut ke node yang dibuat secara otomatis.

Penghapusan node pool yang dibuat otomatis

Pembuatan otomatis node pool memungkinkan autoscaler cluster membuat node pool dan node baru untuk menjalankan Pod yang tertunda yang masuk. Jika jumlah Pod dalam node pool yang dibuat otomatis berkurang, autoscaler cluster akan menurunkan skala node pool secara bertahap. Jika memungkinkan, GKE akan mengosongkan node yang kurang dimanfaatkan di node pool, menggabungkan Pod di node lain, dan menghapus node yang kosong.

Jika jumlah node dalam node pool yang dibuat otomatis adalah nol, GKE akan menghapus node pool tersebut. GKE tidak menghapus node pool yang Anda kecualikan dari pembuatan otomatis node pool, seperti node pool yang dibuat secara manual. Untuk mengetahui informasi selengkapnya tentang cara autoscaler cluster menurunkan skala node pool, lihat Cara kerja autoscaler cluster.

Preferensi penskalaan GKE

Preferensi berikut berlaku saat GKE menskalakan otomatis infrastruktur Anda:

  • Mengurangi resource komputasi yang terbuang: GKE menggunakan kapasitas resource dari node pool yang dibuat otomatis yang ada di cluster Anda untuk menentukan jenis mesin yang akan digunakan untuk node pool baru. Seiring bertambahnya ukuran cluster, GKE lebih memilih untuk menggunakan jenis mesin yang lebih besar untuk node pool baru, sehingga lebih banyak Pod Anda yang dapat berjalan di setiap node dalam node pool.
  • Mengoptimalkan skalabilitas dan latensi: GKE selalu memprioritaskan peningkatan skala node pool yang ada dan kompatibel, bukan membuat node pool baru. Kekuatan preferensi ini meningkat seiring dengan meningkatnya jumlah node pool yang berbeda di cluster Anda. Saat jumlah node pool yang berbeda mendekati batas yang didukung untuk latensi dan skalabilitas yang optimal, GKE tidak memprioritaskan pembuatan node pool baru.

Prioritas ini membantu memastikan bahwa cluster Anda memiliki penggunaan resource komputasi yang efisien dalam skala besar, seperti dalam contoh skenario berikut:

  • Dalam cluster yang memiliki jumlah node pool yang kecil dan penggunaan resource yang lebih sedikit, GKE membuat node pool baru lebih sering dan menggunakan jenis mesin yang lebih kecil untuk node pool tersebut.
  • Dalam cluster yang memiliki banyak node pool, penggunaan resource akan tinggi. GKE membuat node pool baru lebih jarang dan menggunakan jenis mesin yang lebih besar untuk node pool tersebut, sehingga penjadwalan Pod dapat dilanjutkan sekaligus memperlambat progres menuju batas skalabilitas dan latensi cluster.

Anda dapat mengontrol secara manual ukuran minimum instance yang digunakan GKE untuk node pool yang dibuat otomatis menggunakan ComputeClass yang memiliki kolom priorities.machineFamily dan kolom priorities.minCores atau kolom priorities.minMemoryGb.

Metode pengaktifan untuk pembuatan otomatis node pool

GKE dapat otomatis membuat node pool untuk ComputeClass tertentu atau untuk workload apa pun yang menggunakan konfigurasi yang kompatibel, bergantung pada cara Anda mengonfigurasi cluster.

Metode pengaktifan
Tingkat workload (direkomendasikan)

Di GKE versi 1.33.3-gke.1136000 dan yang lebih baru, gunakan ComputeClasses untuk mengaktifkan pembuatan otomatis node pool tanpa menggunakan node auto-provisioning level cluster. GKE membuat node pool baru hanya untuk workload yang memilih ComputeClass tertentu yang mengaktifkan pembuatan otomatis. Workload yang ada di cluster tidak akan terpengaruh.

Bahkan di GKE versi sebelum 1.33.3-gke.1136000, ComputeClass adalah cara yang direkomendasikan untuk meminta dan mengonfigurasi infrastruktur untuk workload Anda. ComputeClass memberikan kemampuan unik dan memberi Anda cara yang fleksibel untuk mengoptimalkan penskalaan di cluster Anda. Untuk mengetahui informasi selengkapnya, lihat Tentang ComputeClass kustom.

Level cluster

Aktifkan node auto-provisioning untuk seluruh cluster. Anda harus menetapkan batas untuk resource seperti CPU dan memori di cluster Anda. Batas ini berlaku untuk seluruh cluster. Konfigurasi level cluster diperlukan untuk mengaktifkan pembuatan otomatis node pool di GKE versi sebelum 1.33.3-gke.1136000.

GKE dapat membuat node pool baru untuk workload yang tertunda di cluster menggunakan ComputeClass atau pemilih dalam spesifikasi Pod.

Metode konfigurasi ini tidak saling eksklusif. Anda dapat menggunakan ComputeClass untuk membuat node pool secara otomatis di cluster yang menggunakan penyediaan otomatis node. Jika Anda menggunakan kedua metode ini untuk mengaktifkan pembuatan otomatis node pool dalam cluster, GKE akan menggunakan urutan preferensi berikut untuk menemukan nilai setelan konfigurasi yang akan digunakan untuk node pool:

  1. Spesifikasi ComputeClass atau Pod: jika Anda menentukan setelan (seperti jenis mesin) di ComputeClass atau dalam spesifikasi Pod, GKE akan menggunakan setelan tersebut.
  2. Default node auto-provisioning tingkat cluster: jika setelan tidak ditentukan dalam ComputeClass atau spesifikasi Pod, GKE akan memeriksa apakah Anda menetapkan nilai default untuk node auto-provisioning di cluster. Jika ada nilai default tingkat cluster, GKE akan menggunakan nilai tersebut.
  3. Default level cluster: jika setelan tidak ditentukan di ComputeClasses, spesifikasi Pod, atau sebagai nilai default untuk node auto-provisioning level cluster, GKE akan menggunakan nilai default yang ditetapkan Google Cloud untuk cluster.

Misalnya, pertimbangkan skenario saat GKE mencoba menemukan jenis mesin yang akan digunakan untuk node pool yang dibuat secara otomatis. Urutan preferensi sebelumnya berlaku sebagai berikut:

  1. GKE memeriksa apakah spesifikasi Pod atau ComputeClass Pod menentukan jenis mesin.
  2. Jika spesifikasi Pod atau ComputeClass tidak menentukan jenis mesin, GKE akan memeriksa apakah Anda menetapkan jenis mesin default untuk node auto-provisioning di cluster.
  3. Jika Anda tidak menetapkan jenis mesin default untuk node auto-provisioning, GKE akan menggunakan jenis mesin default cluster.

Sebaiknya Anda hanya menggunakan metode pengaktifan ComputeClass dalam sebagian besar situasi. Bagian berikut memberikan detail tentang setiap metode konfigurasi ini, termasuk batasan dan pertimbangan.

Pengaktifan tingkat workload dengan ComputeClass

Anda dapat mengaktifkan pembuatan otomatis node pool untuk ComputeClass apa pun di cluster Anda menggunakan salah satu kolom berikut dalam spesifikasi ComputeClass:

  • nodePoolAutoCreation: mengizinkan GKE membuat node pool secara otomatis sesuai kebutuhan. Anda masih dapat berinteraksi dengan node pool. GKE hanya menerapkan setelan atau batasan yang Anda konfigurasi.
  • autopilot: menjalankan workload yang memilih ComputeClass ini dalam mode Autopilot. Sama seperti cluster Autopilot, GKE sepenuhnya mengelola node untuk Anda dan menerapkan berbagai batasan dan setelan Autopilot. Jika menggunakan kolom autopilot, Anda dapat melewati dokumen ini. Untuk mengetahui informasi selengkapnya, lihat Tentang workload mode Autopilot di Standard.

Di cluster yang menggunakan GKE versi 1.33.3-gke.1136000 dan yang lebih baru, Anda dapat menggunakan kolom ini di ComputeClass tanpa mengaktifkan node auto-provisioning di level cluster.

Jika Anda mengonfigurasi pembuatan otomatis node pool di ComputeClass tanpa mengaktifkan node auto-provisioning untuk cluster, GKE akan membuat node pool baru hanya untuk workload yang menggunakan ComputeClass. Workload lain tidak terpengaruh.

Manifes ComputeClass contoh berikut mengaktifkan pembuatan otomatis node pool untuk Pod apa pun yang menggunakan ComputeClass:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: example-computeclass
spec:
  priorities:
  - machineFamily: n4
  - machineFamily: c4
  whenUnsatisfiable: ScaleUpAnyway
  nodePoolAutoCreation:
    enabled: true

Pengaktifan tingkat cluster dengan node auto-provisioning

Untuk mengaktifkan pembuatan otomatis node pool untuk seluruh cluster, Anda mengaktifkan fitur node auto-provisioning untuk cluster menggunakan Kubernetes Engine API. Node auto-provisioning memungkinkan GKE membuat node pool baru sesuai kebutuhan untuk workload apa pun di cluster berdasarkan spesifikasi Pod atau konfigurasi ComputeClass. GKE tidak mengelola node pool yang ada di cluster, tetapi Anda dapat menandai setiap node pool sebagai disediakan otomatis setelah mengaktifkan penyediaan otomatis node untuk cluster.

Aktifkan node auto-provisioning dalam situasi seperti berikut:

  • Anda ingin GKE membuat node pool secara otomatis di cluster yang menjalankan GKE versi sebelum 1.33.3-gke.1136000.
  • Anda ingin menetapkan batas resource seluruh cluster secara manual. Di GKE versi sebelum 1.33.3-gke.1136000, Anda harus menetapkan batas resource seluruh cluster meskipun menggunakan ComputeClass.

  • Anda ingin menggunakan fitur atau konfigurasi tertentu yang tidak didukung oleh ComputeClasses.

  • Anda ingin menetapkan nilai konfigurasi node default untuk seluruh cluster.

Setelah mengaktifkan node auto-provisioning, Anda dapat mengonfigurasi nilai default untuk berbagai setelan node menggunakan Google Cloud CLI atau file konfigurasi YAML.

Batas resource tingkat cluster dengan node auto-provisioning

Saat mengaktifkan node auto-provisioning untuk seluruh cluster, Anda juga harus mengonfigurasi batas untuk resource seperti CPU, memori, GPU, dan TPU di cluster. Batas ini berlaku untuk jumlah semua kapasitas resource dalam cluster, termasuk node pool dan ComputeClass yang dibuat secara manual. GKE tidak membuat node atau node pool baru jika operasi tersebut akan melebihi salah satu batas resource ini.

Batas resource tingkat cluster ini hanya diperlukan jika Anda mengaktifkan node auto-provisioning di cluster. Di cluster yang menggunakan GKE versi 1.33.3-gke.1136000 dan yang lebih baru, Anda dapat menggunakan pembuatan otomatis node pool di ComputeClass tanpa mengaktifkan node auto-provisioning.

Jika cluster Anda memenuhi persyaratan ini, sebaiknya gunakan hanya ComputeClass untuk mengonfigurasi node pool yang dibuat secara otomatis.

Setelan default untuk node pool yang dibuat otomatis

Anda dapat menentukan nilai default yang diterapkan GKE ke node pool yang dibuat otomatis di tingkat workload atau di tingkat cluster.

  • Setelan default tingkat workload: Anda dapat menggunakan kolom spec.nodePoolConfig dan kolom spec.priorityDefaults dalam spesifikasi ComputeClass untuk menetapkan nilai default untuk setelan node tertentu. Nilai default ini hanya berlaku untuk node pool yang dibuat GKE untuk ComputeClass tersebut.
  • Setelan default level cluster: Anda dapat menetapkan nilai default untuk node pool yang dibuat otomatis saat mengonfigurasi node auto-provisioning. Untuk menentukan nilai default, Anda dapat menggunakan gcloud CLI atau file konfigurasi YAML.

Metode penetapan default ini tidak saling eksklusif. Jika Anda mengonfigurasi nilai default untuk setelan tertentu di ComputeClass dan untuk seluruh cluster, GKE akan menggunakan nilai untuk ComputeClass. Jika ComputeClass tidak menentukan nilai untuk setelan tersebut, GKE akan menggunakan nilai default tingkat cluster.

Setelan default level cluster dengan file konfigurasi

Saat mengaktifkan node auto-provisioning, Anda dapat menggunakan file konfigurasi YAML untuk menentukan setelan default seluruh cluster untuk node pool yang dibuat secara otomatis. Anda dapat menentukan beberapa setelan dalam satu file konfigurasi. Beberapa konfigurasi lanjutan (seperti setelan perbaikan otomatis) hanya dapat ditentukan menggunakan file konfigurasi.

  • Contoh file konfigurasi berikut memungkinkan perbaikan otomatis dan upgrade otomatis node untuk setiap node pool baru yang dibuat otomatis:

    management:
      autoRepair: true
      autoUpgrade: true
    
  • Contoh file konfigurasi berikut menetapkan batas resource di seluruh cluster untuk penyediaan otomatis node dan mengonfigurasi beberapa setelan default:

    resourceLimits:
      - resourceType: 'cpu'
        minimum: 4
        maximum: 10
      - resourceType: 'memory'
        maximum: 64
      - resourceType: 'nvidia-tesla-t4'
        maximum: 4
    management:
      autoRepair: true
      autoUpgrade: true
    shieldedInstanceConfig:
      enableSecureBoot: true
      enableIntegrityMonitoring: true
    diskSizeGb: 100
    

    File konfigurasi ini menetapkan nilai default berikut:

Setelah Anda menerapkan file konfigurasi ke cluster, GKE hanya akan menggunakan setelan dalam file tersebut untuk node pool baru yang dibuat otomatis di cluster. Setelan baru atau yang diubah yang Anda tentukan dalam file tidak berlaku untuk node pool yang sudah ada yang dibuat GKE di cluster. Jika Anda memperbarui nilai yang sebelumnya ditetapkan untuk cluster, GKE akan menggunakan nilai baru untuk semua node pool baru. Misalnya, jika sebelumnya Anda menetapkan seri mesin default ke N2, dan Anda memperbarui nilainya ke N4 dalam file konfigurasi, semua node pool baru akan menggunakan jenis mesin N4.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan file konfigurasi tingkat cluster, lihat Mengonfigurasi setelan dengan file konfigurasi node auto-provisioning.

Kasus penggunaan pembuatan otomatis node pool

Bagian berikut menjelaskan beberapa kasus penggunaan populer dan hardware yang didukung untuk pembuatan otomatis node pool. Untuk mengetahui informasi selengkapnya tentang kasus penggunaan tambahan dan konfigurasi yang didukung, lihat dokumentasi untuk kasus penggunaan spesifik Anda.

Pemilihan seri mesin atau jenis mesin

Anda dapat memilih jenis mesin atau seri mesin Compute Engine yang akan digunakan GKE untuk node pool yang dibuat otomatis dengan salah satu cara berikut:

  • ComputeClasses: menggunakan aturan prioritas machineFamily atau machineType.
  • Spesifikasi pod: untuk seri mesin, gunakan pemilih node untuk label node cloud.google.com/machine-family. Untuk jenis mesin, gunakan label node cloud.google.com/machine-family dan node.kubernetes.io/instance-type. Untuk mengetahui informasi selengkapnya, lihat Memilih seri mesin atau jenis mesin.

Jika Anda tidak memilih mesin secara eksplisit, GKE akan menggunakan seri mesin E2 atau jenis mesin yang kompatibel dengan hardware yang diminta workload Anda. Misalnya, GKE menggunakan jenis mesin GPU untuk GPU dan mesin khusus untuk resource TPU.

Saat Anda meminta seri mesin atau jenis mesin, pastikan pemilih node lain dan permintaan resource Pod Anda kompatibel dengan mesin yang ditentukan. Misalnya, Anda tidak dapat meminta GPU dan seri mesin N2 secara bersamaan.

Seri mesin yang didukung

Anda dapat secara eksplisit meminta seri mesin atau jenis mesin Compute Engine yang didukung di ComputeClass atau workload. Permintaan Anda dapat mencakup konfigurasi hardware tertentu, seperti arsitektur Arm.

Pembuatan otomatis node pool hanya mendukung seri mesin berikut dalam versi GKE tertentu:

Seri mesin Versi GKE yang didukung
Seri mesin C4
  • 1.28.15-gke.1159000 dan yang lebih baru
  • 1.29.10-gke.1227000 dan yang lebih baru
  • 1.30.3-gke.1225000 dan yang lebih baru
Seri mesin C4A (VM)
  • 1.30.7-gke.1136000 dan yang lebih baru
  • 1.31.3-gke.1056000 dan yang lebih baru
Instance bare metal C4A
  • c4a-highmem-96-metal: 1.35.3-gke.1389000 dan yang lebih baru
  • c4a-standard-96-metal: Tidak didukung
Seri mesin C4D (VM) 1.32.3-gke.1717000 dan yang lebih baru
Instance bare metal C4D 1.37.0-gke.4713000 dan yang lebih baru
Seri mesin C4N 1.36.0-gke.3009002 dan yang lebih baru
Seri mesin N4 1.29.3 dan yang lebih baru
Seri mesin N4A 1.34.1-gke.3403001 dan yang lebih baru
Seri mesin N4D
  • 1.33.12-gke.1208000 dan yang lebih baru
  • 1.34.1-gke.2037000 dan yang lebih baru
Seri mesin Z3 1.29 dan yang lebih baru
Seri mesin Z4D 1.36.3-gke.1244000 dan yang lebih baru
Seri mesin Z4M 1.37.0-gke.4713000 dan yang lebih baru

Seri mesin lainnya didukung di semua versi GKE.

Pemilihan GPU

Anda dapat meminta GPU untuk node pool yang dibuat otomatis dengan salah satu cara berikut:

  • ComputeClasses:
    1. Gunakan aturan prioritas gpu untuk mengonfigurasi GPU.
    2. Minta resource GPU di Pod.
  • Spesifikasi pod:
    1. Mengonfigurasi batas GPU seluruh cluster untuk node auto-provisioning.
    2. Gunakan pemilih node untuk mengonfigurasi GPU.
    3. Minta resource GPU di Pod.

GKE memilih jenis mesin GPU yang cukup besar untuk mendukung jumlah GPU. Jumlah GPU yang Anda pilih memengaruhi kapasitas CPU dan memori node.

Persyaratan versi GKE untuk GPU

Pemilihan Cloud TPU

Anda dapat meminta resource Cloud TPU untuk node pool yang dibuat otomatis dengan salah satu cara berikut:

Node pool slice TPU host tunggal dan node pool slice TPU multi-host mendukung penskalaan otomatis dan pembuatan otomatis node pool. Untuk pembuatan otomatis node pool, GKE membuat node pool slice TPU host tunggal atau multi-host dengan versi dan topologi TPU yang memenuhi persyaratan workload yang tertunda.

Persyaratan versi GKE untuk Cloud TPU

Pembuatan otomatis node pool hanya mendukung Cloud TPU berikut di versi GKE tertentu:

  • TPU v3: 1.31.0 dan yang lebih baru.
  • TPU v5 dan TPU v4: 1.29.0 dan yang lebih baru.
  • TPU Trillium: 1.32.0 dan yang lebih baru.
  • Ironwood (TPU7x): 1.34.1-gke.2541000 atau yang lebih baru.

Jenis Cloud TPU lainnya didukung di semua versi GKE. Untuk mempelajari lebih lanjut versi GKE yang tersedia untuk TPU, lihat Memvalidasi ketersediaan TPU di GKE.

Penskalaan otomatis node pool Cloud TPU

GKE menskalakan node pool Cloud TPU yang dibuat secara otomatis atau manual yang menggunakan autoscaler cluster dengan salah satu cara berikut:

  • Node pool slice TPU host tunggal: GKE menambahkan atau menghapus node TPU di node pool yang ada. Node pool dapat berisi sejumlah node TPU antara nol dan ukuran maksimum node pool seperti yang ditentukan oleh flag penskalaan otomatis --max-nodes dan --total-max-nodes. Semua TPU node dalam node pool memiliki jenis mesin dan topologi yang sama. Untuk mengetahui informasi selengkapnya tentang cara membuat node pool slice TPU host tunggal, lihat Membuat node pool slice TPU host tunggal.
  • Node pool slice TPU multi-host: GKE secara atomik meningkatkan skala node pool dari nol hingga jumlah node yang diperlukan untuk memenuhi topologi TPU. Misalnya, dengan TPU node pool yang memiliki jenis mesin ct5lp-hightpu-4t dan topologi 16x16, node pool selalu memiliki 64 node atau nol node. GKE akan memperkecil skala node pool jika tidak ada workload TPU di node pool. Untuk menurunkan skala node pool, GKE akan mengeluarkan semua Pod yang dijadwalkan dan menghapus semua node di node pool. Untuk mengetahui informasi selengkapnya tentang cara membuat node pool slice TPU multi-host, lihat Membuat node pool slice TPU multi-host.

Konfigurasi node pool Cloud TPU

GKE menggunakan konfigurasi di Pod atau ComputeClass Anda untuk menentukan konfigurasi node TPU Anda. Manifes berikut adalah contoh spesifikasi Deployment yang meminta TPU dalam spesifikasi Pod. Jika setelan node auto-provisioning tingkat cluster diaktifkan, Deployment ini akan memicu pembuatan otomatis node pool. Saat Anda membuat contoh Deployment ini, GKE akan membuat node pool yang berisi slice TPU v4 dengan topologi 2x2x2 dan dua mesin ct4p-hightpu-4t.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tpu-workload
  labels:
    app: tpu-workload
spec:
  replicas: 2
  template:
    spec:
      nodeSelector:
        cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
        cloud.google.com/gke-tpu-topology: 2x2x2
      containers:
      - name: tpu-job
        image: us-docker.pkg.dev/cloud-tpu-images/jax-ai-image/tpu:latest
        ports:
        - containerPort: 8431 # Port to export TPU runtime metrics, if supported.
        securityContext:
          privileged: true # Required for GKE versions earlier than 1.28 to access TPUs.
        command:
        - bash
        - -c
        - |
          python -c 'import jax; print("Total TPU chips:", jax.device_count())'
        resources:
          requests:
            google.com/tpu: 4
          limits:
            google.com/tpu: 4
        ports:
        - containerPort: 80

Dalam manifes ini, kolom berikut menentukan konfigurasi TPU:

  • cloud.google.com/gke-tpu-accelerator: versi dan jenis TPU. Misalnya, gunakan tpu7x-standard-4t untuk Ironwood (TPU7x).
  • cloud.google.com/gke-tpu-topology: topologi dengan jumlah dan pengaturan fisik TPU chip dalam slice TPU. Misalnya, gunakan 2x2x2.
  • limits.google.com/tpu: jumlah TPU chip per VM. Misalnya, jika Anda menggunakan tpu7x-standard-4t, jumlah TPU chip per VM adalah 4.

Pemilihan Spot VM

Anda dapat memilih Spot VM untuk node pool yang dibuat otomatis dengan salah satu cara berikut:

  • ComputeClasses: gunakan kolom spot dalam aturan prioritas.
  • Spesifikasi pod: menggunakan toleransi untuk label node cloud.google.com/gke-spot="true" dengan efek NoSchedule. Tambahkan pemilih node untuk label node cloud.google.com/gke-spot=true atau cloud.google.com/gke-provisioning=spot. Atau, Anda dapat memilih preemptible VM menggunakan label node cloud.google.com/gke-preemptible dalam toleransi dan pemilih node. Namun, sebaiknya gunakan Spot VM.

Konfigurasi penyimpanan efemeral

GKE menggunakan sebagian boot disk node untuk penyimpanan sementara Pod. Anda dapat menyesuaikan ukuran boot disk yang digunakan GKE untuk node yang dibuat otomatis dengan salah satu cara berikut:

  • ComputeClasses: gunakan kolom storage.bootDiskSize dan storage.bootDiskType dalam aturan prioritas. Anda dapat mengonfigurasi setelan boot disk yang berbeda untuk ComputeClass yang berbeda.
  • Spesifikasi pod: gunakan kolom diskSizeGb dan diskType di file konfigurasi level cluster. Anda tidak dapat mengontrol ukuran dan jenis boot disk untuk setiap Pod menggunakan metode ini.

Untuk mengetahui informasi selengkapnya, lihat Boot disk kustom. Jika Anda tidak mengubah setelan boot disk secara eksplisit, setelan defaultnya adalah volume pd-balanced yang memiliki kapasitas 100 GiB.

GKE membuat node pool baru hanya jika penyimpanan sementara yang dapat dialokasikan untuk sebuah node dengan boot disk yang ditentukan lebih besar dari atau sama dengan permintaan penyimpanan sementara dari Pod yang tertunda ini. Jika permintaan penyimpanan sementara lebih besar dari penyimpanan sementara yang dapat dialokasikan dari sebuah node, GKE tidak akan membuat node pool baru dan Pod akan tetap dalam status tertunda. GKE tidak menyesuaikan ukuran boot disk secara dinamis berdasarkan permintaan penyimpanan sementara Pod Anda.

Pemisahan workload

Anda dapat meminta agar Pod tertentu selalu berjalan di node terpisah dari Pod lain dalam cluster. GKE menggunakan taint node untuk mencegah workload lain berjalan di node tersebut. Anda dapat mengonfigurasi pemisahan workload di node pool yang dibuat otomatis dengan cara berikut:

  • ComputeClasses: node yang dibuat GKE untuk ComputeClass tertentu hanya dapat menjalankan Pod yang memilih ComputeClass tersebut. Anda tidak perlu mengubah spesifikasi Pod. Anda dapat memisahkan Pod dalam ComputeClass menggunakan afinitas dan anti-afinitas antar-Pod.
  • Spesifikasi Pod: jika mengaktifkan node auto-provisioning untuk cluster, Anda dapat mengonfigurasi pemisahan workload menggunakan kolom dalam spesifikasi Pod. Selama pembuatan otomatis node pool, GKE dapat membuat node pool dengan label dan taint jika semua kondisi berikut terpenuhi:
    • Pod menggunakan pemilih node untuk meminta kunci dan nilai label node kustom. Anda tidak dapat menggunakan label node sistem untuk pemisahan workload.
    • Pod memiliki toleransi untuk kunci label node yang sama.
    • Efek toleransi adalah NoSchedule, NoExecute, atau tidak ditentukan.

Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi kolom ini dan batasannya, lihat Mengonfigurasi pemisahan workload di GKE.

Batasan

  • Semua batasan autoscaler cluster juga berlaku untuk pembuatan otomatis node pool.
  • Cluster yang memiliki total lebih dari 200 node pool mungkin mengalami peningkatan latensi selama penskalaan otomatis. Konfigurasi apa pun yang memicu pembuatan node pool baru, seperti pemisahan workload atau penggunaan beberapa ComputeClass, akan meningkatkan jumlah ini. Untuk mengetahui informasi selengkapnya tentang batas cluster, lihat batas dan praktik terbaik di "Merencanakan cluster besar".
  • Setiap batas resource yang Anda tetapkan untuk cluster saat mengaktifkan node auto-provisioning juga berlaku untuk node pool yang dibuat GKE untuk ComputeClass.
  • Setelan berikut tidak didukung oleh ComputeClasses:
    • Upgrade lonjakan atau upgrade blue-green.
    • Integritas node dan booting aman.
  • Untuk mengaktifkan pembuatan otomatis node pool untuk ComputeClass di GKE versi sebelum 1.33.3-gke.1136000, Anda juga harus mengaktifkan node auto-provisioning level cluster. Batasan ini tidak berlaku di GKE versi 1.33.3-gke.1136000 dan yang lebih baru.

Konfigurasi yang tidak didukung

GKE tidak membuat node pool baru yang menggunakan konfigurasi berikut:

Autoscaler cluster dapat menskalakan node di node pool yang ada yang menggunakan konfigurasi ini.

Langkah berikutnya