Menjalankan workload dalam mode Autopilot di cluster Standard

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

Tentang ComputeClasses 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 VM Spot. Anda dapat memilih ComputeClasses di workload, yang menunjukkan kepada GKE bahwa node baru harus menggunakan salah satu konfigurasi dalam daftar tersebut.

Jika workload memilih ComputeClass yang memiliki kolom autopilot yang diaktifkan, GKE akan 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 Standar, termasuk perbedaan yang mungkin Anda perhatikan saat men-deploy workload tersebut, lihat Tentang workload mode Autopilot di GKE Standar.

Jenis ComputeClasses Autopilot

GKE menyediakan ComputeClasses 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 ComputeClasses Autopilot bawaan, yang menempatkan Pod di platform komputasi yang dioptimalkan untuk container.
  • Workload yang memerlukan hardware tertentu: aktifkan mode Autopilot untuk ComputeClass kustom apa pun, deploy ComputeClass tersebut ke cluster, dan pilih ComputeClass tersebut di workload Anda.

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

Harga

Harga GKE Autopilot berlaku untuk workload dan node yang menggunakan ComputeClass Autopilot. Model harga yang berlaku bergantung pada aturan prioritas ComputeClass yang digunakan GKE untuk membuat node bagi workload Anda. Untuk mengetahui informasi selengkapnya, lihat Harga di "Tentang workload mode Autopilot di GKE Standar".

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 perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Persyaratan

  • Cluster Anda harus menjalankan salah satu versi GKE berikut:

    • Untuk menggunakan Autopilot di ComputeClasses, cluster harus menjalankan 1.34.1-gke.1829001 atau yang lebih baru.
    • Untuk menggunakan aturan prioritas podFamily di ComputeClasses Autopilot kustom, cluster harus menjalankan 1.35.2-gke.1485000 atau yang lebih baru.
  • Setidaknya satu node pool di cluster tidak boleh memiliki taint node.

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

  • Node GKE yang Terlindungi diperlukan, dan diaktifkan secara default.

  • Anda harus menggunakan cluster native VPC.

  • Jika Anda menggunakan Kubernetes NetworkPolicies, cluster Anda harus menggunakan GKE Dataplane V2. Secara default, semua cluster baru menggunakan GKE Dataplane V2.

    Jika cluster Anda tidak menggunakan GKE Dataplane V2, Anda harus menonaktifkan penerapan kebijakan jaringan.

Batasan

  • Untuk memperbarui ComputeClasses yang ada di cluster agar menggunakan mode Autopilot, Anda harus membuat ulang ComputeClasses tersebut dengan spesifikasi yang diperbarui. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan Autopilot untuk ComputeClass kustom yang ada.
  • ComputeClasses Autopilot bawaan tidak mendukung pengaktifan Node GKE yang Terlindungi untuk seluruh cluster Anda. Jika Anda mengaktifkan Node GKE yang Terlindungi untuk cluster, Pod baru yang memilih ComputeClasses Autopilot bawaan akan tetap dalam status Pending tanpa batas waktu.
  • Penerapan kebijakan jaringan Calico tidak didukung. Anda harus menggunakan GKE Dataplane V2 atau menonaktifkan penerapan kebijakan jaringan.
  • Nama ComputeClass Anda tidak boleh diawali dengan gke atau autopilot, yang merupakan awalan yang dicadangkan.

Peran dan izin yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk men-deploy ComputeClasses, minta administrator 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 khusus atau peran bawaan lainnya.

Mengubah cluster untuk memenuhi persyaratan Autopilot

Anda dapat menggunakan Google Cloud konsol untuk memeriksa apakah cluster Standar Anda memenuhi semua persyaratan untuk menjalankan workload dalam mode Autopilot. Anda juga dapat menggunakan Google Cloud konsol untuk mengubah cluster agar memenuhi persyaratan ini.

Mengubah cluster yang ada

  1. Di Google Cloud konsol, buka halaman Kubernetes clusters.

    Buka cluster Kubernetes

  2. Di baris untuk cluster yang ingin Anda ubah, klik More actions > Edit. Halaman Cluster details akan terbuka.

  3. Di bagian Cluster basics, temukan bagian Autopilot compute class compatibility.

    Jika bagian ini menampilkan Enabled, cluster sudah kompatibel dengan Autopilot. Langsung ke bagian Memilih ComputeClass Autopilot dalam workload.

  4. Jika bagian Autopilot compute class compatibility menampilkan Disabled, klik Edit Autopilot compute class compatibility.

    Jika bagian ini tidak dapat diedit, cluster Anda menggunakan setelan permanen yang tidak kompatibel dengan mode Autopilot. Misalnya, Anda tidak dapat mengubah cluster agar menjadi native VPC setelah pembuatan cluster. Jika Anda tidak dapat berinteraksi dengan bagian Autopilot compute class compatibility, Anda harus membuat cluster baru.

  5. Di panel Autopilot compute class compatibility yang terbuka, tinjau setelan cluster yang perlu diubah untuk memenuhi persyaratan mode Autopilot.

  6. Klik Enable Autopilot compute class. GKE akan mengubah cluster sesuai kebutuhan.

Mengubah cluster baru

  1. Di Google Cloud konsol, buka halaman Create a Kubernetes cluster.

    Buka Membuat cluster Kubernetes

  2. Di halaman Cluster basics, temukan bagian Maximize deployment options with Autopilot compute class. Bagian ini menunjukkan setelan cluster yang perlu diubah untuk memenuhi persyaratan mode Autopilot.

  3. Klik Enable Autopilot compute class. GKE akan mengubah cluster sesuai kebutuhan.

  4. Konfigurasi setelan cluster lainnya berdasarkan persyaratan Anda. Jika Anda mengubah setelan yang membuat cluster tidak kompatibel dengan Autopilot, pesan peringatan akan muncul.

Memilih ComputeClass Autopilot dalam workload

Anda dapat menjalankan workload dalam mode Autopilot di cluster Standar dengan memilih ComputeClass yang menggunakan mode Autopilot. Untuk menjalankan workload dalam mode Autopilot, pilih salah satu opsi berikut:

Konsol

  1. Di Google Cloud konsol, buka halaman Workloads GKE.

    Buka Workloads

  2. Klik Deploy atau Create Job. Halaman pembuatan workload untuk Deployment atau Tugas akan muncul.

  3. Di bagian Nodes, pilih Autopilot compute class.

  4. Di bagian Select compute class, di daftar drop-down Compute class, pilih ComputeClass yang menggunakan mode Autopilot. ComputeClass ini dapat berupa salah satu hal berikut:

  5. Konfigurasi dan buat workload.

kubectl CLI

Untuk memilih ComputeClass Autopilot dalam workload, gunakan pemilih node untuk label cloud.google.com/compute-class. Ini adalah label yang sama yang Anda gunakan untuk memilih ComputeClass lainnya 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: "1Gi"

    Ganti COMPUTE_CLASS dengan nama class komputasi yang akan digunakan. Nilai ini dapat berupa salah satu hal berikut:

  2. Men-deploy workload:

    kubectl apply -f autopilot-cc-deployment.yaml
    

Mengonfigurasi ComputeClass Autopilot kustom

Anda dapat mengonfigurasi ComputeClasses kustom untuk menggunakan Autopilot. Gunakan ComputeClass Autopilot kustom dalam situasi seperti berikut:

  • Workload Anda memerlukan hardware tertentu untuk berjalan secara optimal, seperti GPU atau rangkaian mesin Compute Engine tertentu.
  • Anda ingin menyesuaikan setelan node seperti zona atau taint saat menggunakan platform komputasi yang dioptimalkan untuk container Autopilot.

Jika workload Anda tidak memiliki persyaratan ini, sebaiknya gunakan salah satu ComputeClasses Autopilot bawaan. Untuk memilih ComputeClass Autopilot bawaan, lihat bagian Memilih ComputeClass Autopilot dalam workload sebelumnya.

Membuat ComputeClass Autopilot kustom baru

  1. Simpan salah satu contoh manifes ComputeClass berikut:

    • Memilih mesin tertentu:

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

      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 dari tiga konfigurasi keluarga mesin N4 yang berbeda.
      • activeMigration: memungkinkan GKE memigrasikan Pod ke konfigurasi yang lebih tinggi dalam daftar prioritas saat resource tersedia.
    • Menggunakan platform komputasi yang dioptimalkan untuk container dengan modifikasi:

      apiVersion: cloud.google.com/v1
      kind: ComputeClass
      metadata:
        name: general-purpose-class
      spec:
        autopilot:
          enabled: true
        priorities:
        - podFamily: general-purpose
        priorityDefaults:
          location:
            zones: ['us-central1-a','us-central1-b','us-central1-f']
      

      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.podFamily: uses the podFamily priority rule to run Pods on the Autopilot container-optimized compute platform.
      • priorityDefaults.location: menentukan zona tempat GKE harus membuat node untuk Pod yang menggunakan ComputeClass.
  2. Deploy ComputeClass:

    kubectl apply -f PATH_TO_COMPUTECLASS_MANIFEST
    

    Ganti PATH_TO_COMPUTECLASS_MANIFEST dengan jalur ke manifes ComputeClass dari langkah sebelumnya.

  3. Verifikasi bahwa ComputeClass ada:

    kubectl get computeclasses
    

    Outputnya mirip dengan hal berikut ini:

    NAME                  AGE
    n4-class              3s
    

Mengaktifkan Autopilot untuk ComputeClass kustom yang ada

Anda dapat mengaktifkan Autopilot di ComputeClasses kustom yang ada di cluster Standar. Mengaktifkan Autopilot di ComputeClass yang berada di cluster Autopilot tidak 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 Standar yang memilih ComputeClass Autopilot, Pod tersebut hanya menggunakan Autopilot saat dibuat ulang.

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

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

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

    kubectl replace --force -f PATH_TO_UPDATED_MANIFEST
    

    Ganti PATH_TO_UPDATED_MANIFEST dengan jalur ke file manifes yang diperbarui.

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

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

Memverifikasi bahwa workload Anda menggunakan Autopilot

Pilih salah satu opsi berikut:

Konsol

  1. Di Google Cloud konsol, buka halaman Workloads GKE.

    Buka Workloads

  2. Untuk workload Anda, periksa nilai di kolom Node type. Jika workload menggunakan mode Autopilot, nilai ini adalah Autopilot-managed.

kubectl CLI

Periksa nama node yang menjalankan Pod Anda:

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.

Menerapkan ComputeClass Autopilot secara default

Anda dapat menetapkan ComputeClass bawaan atau kustom sebagai ComputeClass default untuk namespace atau untuk seluruh cluster. ComputeClass default berlaku untuk Pod apa pun yang tidak secara eksplisit memilih ComputeClass yang berbeda. Jika Anda menetapkan ComputeClass Autopilot sebagai default, Anda dapat memastikan bahwa semua Pod berjalan dalam mode Autopilot kecuali jika workload memilih opsi yang berbeda.

Jika ComputeClass yang Anda tetapkan sebagai default menggunakan aturan prioritas podFamily, Pod yang tidak memilih ComputeClass yang berbeda dapat berjalan sebagai Pod Autopilot tujuan umum. Metode ini memungkinkan Anda menggunakan model penagihan berbasis Pod secara default di cluster atau namespace, dan berguna jika banyak workload Anda tidak memiliki persyaratan hardware khusus.

Untuk mengetahui informasi selengkapnya, lihat Menerapkan ComputeClasses ke Pod secara default.

Langkah berikutnya