Tentang ComputeClass GKE

Anda dapat menentukan kumpulan atribut node dan setelan penskalaan otomatis yang digunakan Google Kubernetes Engine (GKE) untuk membuat node guna menjalankan Pod menggunakan ComputeClasses. Halaman ini menjelaskan cara kerja ComputeClasses, kasus penggunaan dan manfaatnya, serta jenis ComputeClasses yang tersedia.

Informasi ini ditujukan untuk orang-orang berikut:

  • Arsitek cloud dan engineer platform yang ingin mengurangi overhead yang terkait dengan pengelolaan infrastruktur cluster.
  • Operator aplikasi dan SRE yang ingin berfokus pada pengoperasian workload tanpa memikirkan infrastruktur yang mendasarinya.

Tentang ComputeClasses dan penskalaan otomatis cluster

ComputeClass adalah kumpulan atribut node dan setelan penskalaan otomatis yang ada sebagai objek Kubernetes API di cluster GKE. Anda dapat memilih ComputeClass di workload Kubernetes mana pun yang Anda deploy. Penskalaan otomatis cluster GKE menggunakan atribut di ComputeClass untuk membuat node untuk workload.

Engineer platform dapat menggunakan ComputeClasses untuk mengonfigurasi infrastruktur untuk berbagai jenis workload, sehingga setiap node baru dioptimalkan untuk persyaratan spesifik aplikasi Anda. ComputeClasses meningkatkan kecepatan dan fleksibilitas penskalaan otomatis GKE serta memberi Anda metode deklaratif untuk mengonfigurasi opsi infrastruktur di seluruh cluster. Untuk mengetahui informasi selengkapnya, lihat bagian Manfaat menggunakan ComputeClasses.

Kemampuan dan fitur GKE tertentu hanya tersedia dengan ComputeClasses, seperti berikut:

  • Prioritas komputasi penggantian: menentukan beberapa kumpulan konfigurasi infrastruktur di ComputeClass, yang diprioritaskan berdasarkan preferensi Anda. Selama penskalaan, jika konfigurasi yang paling disukai tidak tersedia, GKE akan menggunakan konfigurasi berikutnya.
  • Migrasi aktif ke node prioritas yang lebih tinggi: jika dikonfigurasi, GKE akan otomatis mengganti node yang berada di urutan lebih rendah dalam daftar prioritas penggantian Anda dengan node yang berada di urutan lebih tinggi dalam daftar tersebut dari waktu ke waktu. Hasilnya, Pod Anda pada akhirnya akan berjalan di node yang paling Anda sukai di ComputeClass, meskipun hardware tersebut tidak tersedia saat Anda membuat workload.
  • Autopilot di GKE Standard: menjalankan workload dalam mode GKE Autopilot untuk menggunakan fitur Autopilot seperti platform komputasi yang dioptimalkan container dan penagihan berbasis Pod, bahkan di cluster Standard. GKE mengelola node dan workload ini, sehingga Anda mendapatkan manfaat mode Autopilot di cluster mana pun.

Manfaat ComputeClasses

ComputeClasses memberi admin dan operator platform manfaat seperti berikut:

  • Peningkatan ketersediaan resource: ComputeClasses memperluas kemampuan penskalaan otomatis cluster GKE. Fitur ComputeClass seperti prioritas penggantian dan parameter konsolidasi node dapat mengurangi risiko Pod yang stuck dalam status Tertunda dan meningkatkan rentang opsi yang dapat Anda gunakan untuk menskalakan node.
  • Konfigurasi tingkat platform deklaratif: ComputeClasses memungkinkan engineer Platform menjelaskan konfigurasi node secara deklaratif untuk berbagai jenis workload. Penskalaan otomatis GKE mengelola pembuatan dan konfigurasi node serta node pool. Anda dapat mengintegrasikan ComputeClasses ke dalam pipeline CI/CD untuk memiliki konsistensi dalam infrastruktur yang disediakan di seluruh platform.
  • Pengurangan overhead pengelolaan: ComputeClasses mengurangi kompleksitas pengelolaan infrastruktur dan workload dalam skala besar. Engineer platform mendeklarasikan class infrastruktur, dan operator aplikasi memilih class yang relevan dalam workload. GKE mengelola penskalaan, konfigurasi hardware node, dan menerapkan taint, toleransi, dan label.

Tentang resource kustom ComputeClass

ComputeClasses adalah resource kustom Kubernetes . Anda dapat menentukan spesifikasi ComputeClass dalam file manifes dan membuatnya di cluster, mirip dengan cara Anda menentukan dan membuat resource workload Kubernetes seperti Deployment dan Layanan.

Contoh manifes berikut menentukan ComputeClass bernama n4:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: n4
spec:
  nodePoolAutoCreation:
    enabled: true
  priorities:
  - machineFamily: n4
  - machineFamily: n2
  whenUnsatisfiable: DoNotScaleUp

Saat Pod memilih ComputeClass ini, GKE akan melakukan hal berikut saat membuat node baru:

  1. GKE membuat node yang menggunakan seri mesin N4.
  2. Jika seri mesin N4 tidak tersedia, GKE akan membuat node yang menggunakan seri mesin N2.
  3. Jika seri mesin N2 tidak tersedia, GKE akan menunggu hingga resource tersedia untuk menjadwalkan Pod.

Anda dapat mengontrol berbagai setelan untuk node menggunakan ComputeClasses, termasuk akselerator, setelan sistem node, lokasi node, dan perilaku penggantian GKE saat resource hardware tidak tersedia. Untuk mengetahui informasi selengkapnya tentang semua konfigurasi yang tersedia untuk ComputeClasses, lihat ComputeClass CustomResourceDefinition.

Pemilihan ComputeClass dalam workload

Untuk menggunakan ComputeClass untuk workload GKE, Anda memilih ComputeClass dalam manifes workload menggunakan pemilih node untuk label cloud.google.com/compute-class.

Contoh manifes Deployment berikut memilih ComputeClass:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      nodeSelector:
        # Replace with the name of a compute class
        cloud.google.com/compute-class: COMPUTE_CLASS 
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: "250m"
            memory: "1Gi"

Ganti COMPUTE_CLASS dengan nama ComputeClass yang ada di cluster. Misalnya, Anda dapat menentukan n4 ComputeClass dari bagian Tentang resource kustom ComputeClass atau autopilot ComputeClass bawaan.

Konfigurasi node dalam spesifikasi workload

Cluster GKE Autopilot dan penyediaan otomatis node di GKE Standard memungkinkan Anda menggunakan pemilih node di Pod untuk membuat node yang memiliki properti tertentu seperti kelompok mesin, Spot VM, atau GPU dan TPU. ComputeClasses memungkinkan Anda menentukan persyaratan ini secara terpusat, bukan menambahkan pemilih individual ke setiap workload.

Tentang penerapan ComputeClasses secara default

Anda dapat mengonfigurasi GKE untuk menerapkan ComputeClass secara default ke Pod yang tidak memilih ComputeClass tertentu. Anda dapat menentukan ComputeClass default untuk namespace tertentu atau untuk seluruh cluster. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi cluster atau namespace dengan class default, lihat Menerapkan ComputeClasses ke Pod secara default.

Tabel berikut menjelaskan efek menetapkan ComputeClass sebagai default untuk namespace atau untuk cluster:

Efek ComputeClasses default
Default tingkat namespace
  • GKE hanya menerapkan ComputeClass ke Pod di namespace tertentu.
  • GKE mengubah Pod untuk menambahkan pemilih node untuk class default tingkat namespace.
  • GKE hanya menskalakan node yang memiliki label node dan node taint untuk ComputeClass tersebut, mirip dengan class komputasi lainnya.
  • GKE menambahkan label node dan taint node ke node yang dibuat GKE untuk class default tingkat namespace.
Default tingkat cluster
  • GKE menerapkan ComputeClass ke Pod di namespace mana pun.
  • GKE hanya menerapkan ComputeClass ke Pod yang tidak memiliki pemilih yang ada untuk ComputeClass.
  • GKE tidak mengubah spesifikasi Pod untuk menambahkan pemilih node untuk class default tingkat cluster.
  • GKE menskalakan node yang memenuhi salah satu kondisi berikut:
    • Node tidak memiliki label dan taint untuk class komputasi yang berbeda class.
    • Node memiliki cloud.google.com/compute-class: default label node.
  • GKE menambahkan label node cloud.google.com/compute-class: default ke node yang dibuat GKE untuk class default tingkat cluster. GKE tidak menambahkan taint node ke node tersebut.
  • Jika Anda mengupdate cluster Autopilot untuk menggunakan class komputasi kustom sebagai default tingkat cluster, GKE tidak akan menjalankan Pod di platform komputasi yang dioptimalkan container Autopilot secara default. Di GKE versi 1.34.1-gke.1829001 dan yang lebih baru, Anda dapat menggunakan platform komputasi Autopilot untuk Pod tertentu dengan menambahkan pemilih node cloud.google.com/compute-class: autopilot ke Pod tersebut.

Jika GKE menerapkan ComputeClass default tingkat namespace ke Pod, Pod tersebut tidak akan mengaktifkan ComputeClass default tingkat cluster, karena GKE menambahkan pemilih node untuk class default tingkat namespace ke Pod.

Migrasi aktif di ComputeClasses default

Jika ComputeClass yang Anda gunakan sebagai default tingkat namespace atau tingkat cluster memiliki kolom activeMigration.optimizeRulePriority yang ditetapkan ke true, Anda mungkin akan melihat efek berikut:

  • Class komputasi default tingkat cluster: migrasi aktif mungkin dipicu jika ada node dengan prioritas lebih rendah dan GKE dapat membuat node dengan prioritas lebih tinggi. Bergantung pada jumlah node berprioritas lebih rendah, migrasi dapat meningkatkan gangguan workload.
  • Class komputasi default tingkat namespace: migrasi aktif tidak dipicu karena GKE hanya menyisipkan pemilih node class komputasi ke Pod yang baru dibuat. Pod yang ada tidak otomatis dibuat ulang dengan pemilih.

ComputeClasses default tingkat cluster

Saat Anda mengaktifkan ComputeClasses default tingkat cluster, objek ComputeClass bernama default akan menentukan aturan penskalaan otomatis node untuk cluster. Jika cluster Anda sudah memiliki ComputeClass bernama default, GKE akan menggunakan konfigurasi ComputeClass tersebut untuk cluster. Jika cluster tidak memiliki ComputeClass kustom bernama default, GKE akan berperilaku seolah-olah aturan ComputeClass berikut berlaku:

spec:
  whenUnsatisfiable: ScaleUpAnyway
  nodePoolAutoCreation:
    enabled: true

Secara default, GKE tidak menerapkan perilaku penggantian apa pun dan tidak mengubah konfigurasi node yang diskalakan otomatis. Untuk menerapkan properti tertentu ke node yang diskalakan otomatis secara default, Anda harus men-deploy ComputeClass kustom bernama default.

Pertimbangkan hal berikut saat Anda mengonfigurasi class komputasi default tingkat cluster:

  • Untuk mencegah Pod stuck dalam status Pending, tetapkan kolom spec.whenUnsatisfiable ke ScaleUpAnyway. Nilai ini memungkinkan GKE membuat node meskipun Pod meminta kelompok mesin Compute Engine yang tidak ada dalam aturan prioritas untuk class default tingkat cluster. Jika Anda ingin memaksa Pod ini menggunakan kelompok mesin yang ada di ComputeClass default, tetapkan kolom ini ke DoNotScaleUp.
  • Untuk membatasi perubahan pada ComputeClass default, gunakan ClusterRole RBAC untuk membatasi operasi update, patch, delete, dan create pada resource ComputeClass bernama default.
  • Untuk mengubah parameter konsolidasi node default autoscaler cluster, gunakan kolom spec.autoscalingPolicy dalam spesifikasi ComputeClass. Parameter yang Anda tentukan untuk kolom ini di ComputeClass default tingkat cluster berlaku untuk semua node di cluster Anda. Untuk mengetahui informasi selengkapnya, lihat Menetapkan parameter penskalaan otomatis untuk konsolidasi node.

Langkah berikutnya