Tentang ComputeClass GKE


Anda dapat menentukan set 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 ComputeClass, kasus penggunaan dan manfaatnya, serta jenis ComputeClass 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 ComputeClass dan penskalaan otomatis cluster

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

Engineer platform dapat menggunakan ComputeClass untuk mengonfigurasi infrastruktur bagi berbagai jenis workload, sehingga setiap node baru dioptimalkan untuk persyaratan spesifik aplikasi Anda. ComputeClass 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 ComputeClass.

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

  • Prioritas komputasi penggantian: menentukan beberapa set konfigurasi infrastruktur dalam ComputeClass, yang diprioritaskan berdasarkan preferensi Anda. Selama penskalaan, jika konfigurasi yang paling disukai tidak tersedia, GKE akan kembali ke konfigurasi berikutnya.
  • Migrasi aktif ke node dengan prioritas lebih tinggi: jika dikonfigurasi, GKE akan otomatis mengganti node yang lebih rendah dalam daftar prioritas penggantian dengan node yang lebih tinggi dalam daftar tersebut seiring waktu. Akibatnya, Pod Anda akan berjalan di node yang paling Anda sukai di ComputeClass, meskipun hardware tersebut tidak tersedia saat Anda membuat workload.
  • Autopilot di GKE Standard: jalankan workload dalam mode GKE Autopilot untuk menggunakan fitur Autopilot seperti platform komputasi yang dioptimalkan untuk 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

ComputeClass memberikan manfaat seperti berikut kepada admin dan operator platform:

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

Tentang resource kustom ComputeClass

ComputeClass 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 ComputeClass, termasuk akselerator, setelan sistem node, lokasi node, dan perilaku penggantian GKE saat resource hardware tidak tersedia. Untuk informasi selengkapnya tentang semua konfigurasi yang tersedia untuk ComputeClass, lihat ComputeClass CustomResourceDefinition.

Pemilihan ComputeClass dalam workload

Untuk menggunakan ComputeClass bagi 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: "4Gi"

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. ComputeClass memungkinkan Anda menentukan persyaratan ini secara terpusat, bukan menambahkan pemilih individual ke setiap workload.

Tentang penerapan ComputeClass 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 ComputeClass ke Pod secara default.

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

Efek ComputeClass default
Default tingkat namespace
  • GKE menerapkan ComputeClass hanya 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 taint node 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 pengotor untuk class komputasi yang berbeda.
    • Node memiliki label node cloud.google.com/compute-class: default.
  • 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 apa pun 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 untuk container Autopilot secara default. Pada GKE versi 1.33.1-gke.1107000 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.

ComputeClass default tingkat cluster

Saat Anda mengaktifkan ComputeClass 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 tingkat cluster default:

  • Untuk mencegah Pod terjebak dalam status Pending, tetapkan kolom spec.whenUnsatisfiable ke ScaleUpAnyway. Dengan nilai ini, GKE dapat membuat node meskipun Pod meminta family 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 default ComputeClass, gunakan ClusterRole RBAC untuk membatasi operasi update, patch, delete, dan create pada resource ComputeClass bernama default.
  • Untuk mengubah parameter konsolidasi node default dari autoscaler cluster, gunakan kolom spec.autoscalingPolicy dalam spesifikasi ComputeClass Anda. 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