Menjalankan workload Autopilot di cluster GKE Standard


Administrator cluster dan operator aplikasi dapat memperoleh manfaat dari Google Kubernetes Engine (GKE) Autopilot, seperti harga dan setelan yang telah dikonfigurasi sebelumnya, di cluster mode Standard. Halaman ini menunjukkan cara menggunakan ComputeClasses untuk men-deploy workload Autopilot di cluster Standard. Anda seharusnya sudah memahami konsep berikut:

Tentang ComputeClass Autopilot

GKE menyediakan resource kustom Kubernetes bernama ComputeClasses yang dapat di-deploy di cluster Anda seperti resource Kubernetes lainnya. ComputeClass menentukan daftar konfigurasi node, seperti jenis mesin atau Spot VM. Anda dapat memilih ComputeClass di workload, yang menunjukkan kepada GKE bahwa semua node baru harus menggunakan salah satu konfigurasi dalam daftar tersebut.

Jika workload memilih ComputeClass yang mengaktifkan kolom autopilot, GKE menjalankan Pod dalam mode Autopilot. Node yang dibuat GKE dikelola oleh Google dan mencakup banyak setelan keamanan dan fitur Autopilot default. Untuk mengetahui informasi selengkapnya tentang implikasi menjalankan workload Autopilot di cluster Standard Anda, termasuk perbedaan yang mungkin Anda perhatikan saat men-deploy workload tersebut, lihat Tentang workload mode Autopilot di GKE Standard.

Jenis ComputeClass Autopilot

GKE menyediakan ComputeClass Autopilot bawaan yang dapat Anda gunakan untuk sebagian besar workload tujuan umum. Anda juga dapat mengonfigurasi ComputeClass kustom baru atau yang sudah ada untuk menggunakan mode Autopilot. Jenis ComputeClass Autopilot yang Anda gunakan bergantung pada apakah workload Anda memerlukan hardware tertentu, sebagai berikut:

  • Workload tujuan umum: gunakan salah satu ComputeClass Autopilot bawaan, yang menempatkan Pod di platform komputasi yang dioptimalkan untuk container.
  • Workload yang memerlukan hardware tertentu: aktifkan mode Autopilot untuk ComputeClass kustom, deploy ComputeClass tersebut ke cluster, dan pilih ComputeClass tersebut di workload Anda.

Untuk mengetahui informasi selengkapnya tentang opsi ini, kapan harus menggunakannya, dan harga untuk setiap opsi, lihat Pemilihan hardware di ComputeClass Autopilot.

Harga

Harga GKE Autopilot berlaku untuk workload dan node yang menggunakan ComputeClass Autopilot. Model harga yang berlaku bergantung pada apakah Anda menggunakan ComputeClass Autopilot bawaan atau ComputeClass Autopilot kustom. Untuk mengetahui informasi selengkapnya, lihat Harga di "Tentang workload mode Autopilot di GKE Standard".

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.
  • Gunakan cluster GKE Standard yang menjalankan versi 1.33.1-gke.1107000 atau yang lebih baru dan terdaftar di saluran Rilis cepat. Untuk membuat cluster baru, lihat Membuat cluster regional.
  • Untuk menghindari penolakan workload, pelajari persyaratan dan batasan keamanan Autopilot. Untuk mengetahui informasi selengkapnya, lihat setelan standar untuk node Autopilot.

Persyaratan

  • Setidaknya satu node pool dalam cluster tidak boleh memiliki taint node.

    Node pool ini diperlukan untuk menjalankan Pod sistem GKE Standard yang tidak dapat dijalankan di node Autopilot dalam cluster Standard karena taint yang ditambahkan GKE ke node tersebut.

  • Node GKE yang Terlindungi diperlukan dan diaktifkan secara default.

  • Anda harus menggunakan cluster VPC native.

Batasan

  • Hanya saluran rilis Cepat yang didukung.
  • Untuk memperbarui resource ComputeClass yang ada di cluster agar menggunakan mode Autopilot, Anda harus membuat ulang ComputeClass tersebut dengan spesifikasi yang diperbarui. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Autopilot untuk ComputeClass kustom yang ada.
  • Anda tidak dapat menggunakan aturan prioritas podFamily di ComputeClass Anda sendiri. Aturan ini hanya tersedia di ComputeClass Autopilot bawaan.
  • ComputeClass Autopilot bawaan tidak mendukung pengaktifan Node GKE Rahasia untuk seluruh cluster Anda. Jika Anda mengaktifkan Confidential GKE Node untuk cluster, Pod baru yang memilih ComputeClass Autopilot bawaan akan tetap dalam status Pending tanpa batas waktu.

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk men-deploy ComputeClass, minta administrator Anda untuk memberi Anda peran IAM Kubernetes Engine Developer (roles/container.developer) di cluster atau project Anda . Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran kustom atau peran yang telah ditentukan lainnya.

Memilih ComputeClass Autopilot dalam workload

Untuk memilih ComputeClass Autopilot dalam workload, gunakan node selector untuk label cloud.google.com/compute-class. Ini adalah label yang sama dengan yang Anda gunakan untuk memilih ComputeClass lain di GKE. Langkah-langkah berikut menunjukkan cara membuat contoh Deployment yang memilih ComputeClass dan memverifikasi bahwa Pod berjalan dalam mode Autopilot:

  1. Simpan contoh Deployment berikut sebagai autopilot-cc-deployment.yaml:

    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 class komputasi yang akan digunakan. Nilai ini dapat berupa salah satu dari berikut:

  2. Men-deploy workload:

    kubectl apply -f autopilot-cc-deployment.yaml
    
  3. Untuk memverifikasi bahwa Pod menggunakan Autopilot, periksa nama node host:

    kubectl get pods -l=app=hello -o wide
    

    Outputnya mirip dengan hal berikut ini:

    NAME                       READY   STATUS    RESTARTS   AGE     IP             NODE                                         NOMINATED NODE   READINESS GATES
    helloweb-79b9f6f75-5wwc9   1/1     Running   0          152m    10.102.1.135   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
    helloweb-79b9f6f75-9skb9   1/1     Running   0          4d3h    10.102.0.140   gk3-cluster-1-nap-10abc8ya1-632bac02-hjl6   <none>           <none>
    helloweb-79b9f6f75-h7bdv   1/1     Running   0          152m    10.102.1.137   gk3-cluster-1-nap-10abc8ya1-f66c6cef-wg5g   <none>           <none>
    

    Dalam output ini, awalan gk3- di kolom Node menunjukkan bahwa node dikelola oleh Autopilot.

Mengonfigurasi ComputeClass Autopilot kustom

Anda dapat mengonfigurasi ComputeClass kustom untuk menggunakan Autopilot. Gunakan ComputeClass Autopilot kustom jika workload Anda memerlukan hardware tertentu agar dapat berjalan secara optimal, seperti GPU atau seri mesin Compute Engine tertentu.

Jika workload Anda tidak memerlukan hardware tertentu, sebaiknya gunakan salah satu ComputeClass Autopilot bawaan. Untuk memilih ComputeClass Autopilot bawaan, lihat bagian Memilih ComputeClass Autopilot dalam workload sebelumnya.

Membuat ComputeClass Autopilot kustom baru

  1. Simpan contoh manifes ComputeClass berikut sebagai autopilot-n2-class.yaml:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: autopilot-n2-class
    spec:
      autopilot:
        enabled: true
      priorities:
      - machineFamily: n2
        spot: true
        minCores: 64
      - machineFamily: n2
        spot: true
      - machineFamily: n2
        spot: false
      activeMigration:
        optimizeRulePriority: true
      whenUnsatisfiable: DoNotScaleUp
    

    Manifes ini mencakup kolom berikut:

    • autopilot: mengaktifkan mode Autopilot untuk ComputeClass. Jika Anda menentukan kolom ini di ComputeClass yang Anda deploy ke cluster Autopilot, GKE akan mengabaikan kolom tersebut.
    • priorities: menentukan array tiga konfigurasi kelompok mesin N2 yang berbeda.
    • activeMigration: memungkinkan GKE memigrasikan Pod ke konfigurasi yang lebih tinggi dalam daftar prioritas saat resource tersedia.
    • whenUnsatisfiable: nilai DoNotScaleUp di kolom ini mewajibkan GKE menggunakan salah satu aturan di kolom priorities untuk node baru. Jika tidak ada aturan prioritas ini yang dapat dipenuhi, GKE akan membiarkan Pod dalam status Pending hingga resource tersedia. DoNotScaleUp adalah nilai default dan yang direkomendasikan untuk kolom ini.
  2. Deploy ComputeClass:

    kubectl apply -f autopilot-n2-class.yaml
    
  3. Pastikan ComputeClass ada:

    kubectl get computeclasses
    

    Outputnya mirip dengan hal berikut ini:

    NAME                  AGE
    autopilot-n2-class    3s
    

Mengaktifkan Autopilot untuk ComputeClass kustom yang sudah ada

Anda dapat mengaktifkan Autopilot di ComputeClass kustom yang ada di cluster Standard dan memiliki kolom nodePoolAutoCreation.enabled dalam spesifikasi yang ditetapkan ke true. Mengaktifkan Autopilot di class komputasi yang ada di cluster Autopilot tidak akan berpengaruh, karena seluruh cluster menggunakan mode Autopilot.

Setelah Anda mengaktifkan Autopilot untuk ComputeClass yang ada, GKE akan menggunakan Autopilot untuk menjalankan Pod baru yang memilih ComputeClass. Jika Anda memiliki Pod yang ada di node Standard yang memilih ComputeClass Autopilot, Pod tersebut hanya menggunakan Autopilot saat dibuat ulang.

Untuk mengupdate ComputeClass kustom yang ada agar menggunakan mode Autopilot, ikuti langkah-langkah berikut:

  1. Di editor teks, perbarui file manifes untuk ComputeClass yang ada guna menambahkan kolom spec.autopilot:

    spec:
      autopilot:
        enabled: true
    
  2. Ganti resource ComputeClass yang ada di Kubernetes API dengan spesifikasi yang diupdate:

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    Ganti PATH_TO_UPDATED_MANIFEST dengan jalur ke file manifes yang telah diperbarui.

  3. Untuk memicu pembuatan node baru, buat ulang workload apa pun yang menggunakan class komputasi.

Setelah Anda menerapkan manifes yang diperbarui, semua node baru yang dibuat GKE untuk ComputeClass ini akan menggunakan Autopilot. GKE tidak mengubah node yang ada yang dibuat sebelum update.

Memastikan bahwa workload Anda menggunakan Autopilot

  • Dapatkan daftar Pod di cluster Anda menggunakan perintah kubectl get:

    kubectl get pods --output=custom-columns=Pod:.metadata.name,Node:.spec.nodeName
    

    Outputnya mirip dengan hal berikut ini:

    Pod                         Node
    helloweb-84c865764b-nzhxt   gk3-cluster-1-pool-3-68fc8dca-t54b
    # lines omitted for clarity
    

    Awalan gk3- dalam nama node menunjukkan bahwa Pod berjalan dalam mode Autopilot.

Menerapkan ComputeClass Autopilot secara default

GKE memungkinkan Anda menetapkan ComputeClass sebagai default untuk namespace. Class default namespace berlaku untuk semua Pod di namespace tersebut yang tidak secara eksplisit memilih ComputeClass yang berbeda. Menetapkan ComputeClass Autopilot sebagai default berarti Anda dapat menjalankan semua Pod dalam namespace dalam mode Autopilot secara default, kecuali jika workload memilih opsi yang berbeda.

Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi ComputeClass default untuk namespace.

Langkah berikutnya