Mengontrol atribut node yang diskalakan otomatis dengan class komputasi kustom


Halaman ini menunjukkan cara mengontrol infrastruktur komputasi dan penskalaan otomatis perilaku cluster Google Kubernetes Engine (GKE) berdasarkan kebutuhan spesifik workload Anda menggunakan class komputasi kustom. Anda seharusnya sudah familier dengan konsep class komputasi kustom. Untuk mengetahui detailnya, lihat Tentang class komputasi kustom.

Dokumen ini ditujukan untuk administrator platform yang ingin secara deklaratif menentukan profil penskalaan otomatis untuk node, dan untuk operator cluster yang ingin menjalankan workload di kelas komputasi tertentu.

Tentang class komputasi kustom

Class komputasi kustom adalah Kubernetes Resource Kustom yang memungkinkan Anda menentukan prioritas yang harus diikuti GKE saat menyediakan node untuk menjalankan workload Anda. Anda dapat menggunakan class komputasi kustom untuk lakukan hal berikut:

  • Beri GKE sekumpulan prioritas untuk diikuti secara berurutan saat menyediakan node, masing-masing dengan parameter tertentu seperti Kapasitas resource minimum atau seri mesin Compute Engine
  • Menentukan batas dan parameter penskalaan otomatis untuk menghapus data yang kurang dimanfaatkan node dan mengonsolidasikan workload secara efisien pada kapasitas komputasi yang ada
  • Memberi tahu GKE untuk otomatis mengganti node yang kurang disukai dengan lebih banyak konfigurasi node pilihan untuk workload yang optimal performa

Untuk memahami semua opsi konfigurasi dan bagaimana opsi tersebut berinteraksi dengan mode GKE Autopilot dan GKE Mode standar, lihat Tentang class komputasi kustom.

Harga

Resource kustom ComputeClass disediakan tanpa biaya tambahan di hanya pada container yang tepercaya. Pertimbangan harga berikut berlaku:

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Mengaktifkan 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.
  • Pastikan Anda sudah memiliki cluster GKE versi yang berjalan 1.30.3-gke.1451000 atau yang lebih baru. Untuk informasi selengkapnya, lihat Buat cluster Autopilot.
  • Jika menggunakan cluster mode Standar, pastikan Anda memiliki setidaknya satu kumpulan node, autoscaling telah diaktifkan atau yang digunakan oleh cluster Anda penyediaan otomatis node.

Contoh skenario untuk class komputasi

Dokumen ini menampilkan contoh skenario di mana Anda mendefinisikan komputasi kustom . Dalam praktiknya, Anda harus mempertimbangkan persyaratan dari workload dan organisasi yang berbeda, dan menentukan kelas komputasi yang memenuhi lainnya. Untuk deskripsi lengkap dari semua opsi untuk class komputasi, dan untuk pertimbangan khusus, lihat Tentang class komputasi kustom.

Perhatikan contoh skenario berikut:

  • Sasaran Anda adalah mengoptimalkan biaya pengoperasian untuk workload
  • Workload Anda fault-tolerant dan tidak memerlukan penonaktifan secara halus atau runtime yang diperpanjang
  • Workload Anda memerlukan setidaknya 64 vCPU agar dapat berjalan secara optimal
  • Anda hanya dapat menggunakan seri mesin Compute Engine N2

Berdasarkan contoh skenario, Anda memutuskan bahwa Anda menginginkan class komputasi yang melakukan hal berikut:

  • Memprioritaskan node N2 Spot yang memiliki setidaknya 64 vCPU
  • Memungkinkan GKE beralih kembali ke node N2 Spot mana pun, terlepas dari komputasi kapasitas
  • Jika tidak ada node N2 Spot yang tersedia, izinkan GKE menggunakan N2 secara on-demand node
  • Memberi tahu GKE untuk memindahkan workload Anda ke node Spot setiap kali tersedia lagi

Mengonfigurasi class komputasi dalam mode Autopilot

Di GKE Autopilot, Anda menentukan class komputasi, men-deploy-nya ke cluster, dan meminta class komputasi tersebut di workload Anda. GKE menjalankan setiap langkah konfigurasi node, seperti menerapkan label dan taint, untuk Anda.

Simpan manifes berikut sebagai compute-class.yaml:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: cost-optimized
spec:
  priorities:
  - machineFamily: n2
    spot: true
    minCores: 64
  - machineFamily: n2
    spot: true
  - machineFamily: n2
    spot: false
  activeMigration:
    optimizeRulePriority: true
  nodePoolAutoCreation:
    enabled: true

Mengonfigurasi class komputasi dalam mode Standar

Dalam cluster mode Standar GKE, Anda menentukan yang lebih lama, setelah itu Anda mungkin harus melakukan konfigurasi manual untuk memastikan bahwa sesuai dengan jadwal Pod class komputasi Anda. Konfigurasi manual bergantung pada apakah kumpulan node Anda disediakan secara otomatis atau tidak, sebagai berikut:

Menggunakan class komputasi dengan kumpulan node yang dibuat secara manual

Bagian ini menunjukkan cara menentukan class komputasi dalam cluster yang hanya menggunakan kumpulan node yang dibuat secara manual.

  1. Simpan manifes berikut sebagai compute-class.yaml:

    apiVersion: cloud.google.com/v1
    kind: ComputeClass
    metadata:
      name: cost-optimized
    spec:
      priorities:
      - machineFamily: n2
        spot: true
        minCores: 64
      - machineFamily: n2
        spot: false
      activeMigration:
        optimizeRulePriority: true
    
  2. Membuat kumpulan node baru yang diskalakan secara otomatis yang menggunakan Spot VM dan dengan class compute:

    gcloud container node-pools create cost-optimized-pool \
        --location=LOCATION \
        --cluster=CLUSTER_NAME \
        --machine-type=n2-standard-64 \
        --spot \
        --enable-autoscaling \
        --max-nodes=9 \
        --node-labels="cloud.google.com/compute-class=cost-optimized" \
        --node-taints="cloud.google.com/compute-class=cost-optimized:NoSchedule"
    

    Ganti kode berikut:

    • LOCATION: lokasi cluster Anda.
    • CLUSTER_NAME: nama cluster yang ada.
  3. Membuat kumpulan node baru yang diskalakan secara otomatis dengan VM on-demand dan mengaitkannya dengan class compute:

    gcloud container node-pools create on-demand-pool \
        --location=LOCATION \
        --cluster=CLUSTER_NAME \
        --machine-type=n2-standard-64 \
        --enable-autoscaling \
        --max-nodes=9 \
        --num-nodes=0 \
        --node-labels="cloud.google.com/compute-class=cost-optimized" \
        --node-taints="cloud.google.com/compute-class=cost-optimized:NoSchedule"
    

Ketika Anda men-deploy Pod yang meminta class komputasi ini, dan node baru harus dibuat, GKE memprioritaskan pembuatan node di Kumpulan node cost-optimized-pool. Jika node baru tidak dapat dibuat, GKE membuat node di kumpulan node on-demand-pool.

Untuk detail selengkapnya tentang cara kumpulan node yang dibuat secara manual berinteraksi dengan kelas komputasi, melihat Konfigurasikan kumpulan node yang dibuat secara manual untuk penggunaan class komputasi.

Menggunakan class komputasi dengan kumpulan node yang disediakan otomatis

Bagian ini menunjukkan cara menentukan class komputasi di cluster yang menggunakan node penyediaan otomatis.

Simpan manifes berikut sebagai compute-class.yaml:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: cost-optimized
spec:
  priorities:
  - machineFamily: n2
    spot: true
    minCores: 64
  - machineFamily: n2
    spot: true
  - machineFamily: n2
    spot: false
  activeMigration:
    optimizeRulePriority: true
  nodePoolAutoCreation:
    enabled: true

Ketika Anda men-deploy Pod yang meminta class komputasi ini, dan node baru harus dibuat, GKE memprioritaskan pembuatan node dalam urutan item di Kolom priorities. Jika diperlukan, GKE membuat kumpulan node baru yang memenuhi persyaratan hardware kelas komputasi.

Untuk mengetahui detail selengkapnya tentang cara kerja penyediaan otomatis node dengan komputasi kustom kelas, melihat Class komputasi dan penyediaan otomatis node.

Menyesuaikan nilai minimum penskalaan otomatis untuk konsolidasi node

Secara default, GKE menghapus node yang kurang dimanfaatkan dan menjadwalkan ulang paket workload ke node lain yang tersedia. Anda dapat menyesuaikan ambang batas lebih lanjut serta waktu saat node menjadi kandidat untuk dihapus dengan menggunakan Kolom autoscalingPolicy di definisi class komputasi, seperti di bawah ini contoh:

apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
  name: cost-optimized
spec:
  priorities:
  - machineFamily: n2
    spot: true
    minCores: 64
  - machineFamily: n2
    spot: true
  - machineFamily: n2
    spot: false
  activeMigration:
    optimizeRulePriority: true
  autoscalingPolicy:
    consolidationDelayMinutes : 5
    consolidationThreshold    : 70

Contoh ini akan membuat node menjadi kandidat untuk dihapus jika kurang dimanfaatkan oleh 70% kapasitas CPU dan memori yang tersedia selama lebih dari lima menit. Untuk daftar parameter yang tersedia, lihat Menetapkan parameter penskalaan otomatis untuk konsolidasi node.

Men-deploy class komputasi dalam cluster

Setelah Anda menentukan class komputasi, deploy class tersebut ke cluster:

kubectl apply -f compute-class.yaml

Class komputasi ini siap digunakan di cluster. Anda dapat meminta komputasi dalam spesifikasi Pod atau, jika perlu, menetapkannya sebagai class komputasi default dalam namespace tertentu.

Menetapkan class komputasi default untuk namespace

Saat Anda menetapkan class komputasi default untuk namespace, GKE menggunakan untuk membuat node bagi setiap Pod yang Anda deploy namespace. Jika Pod secara eksplisit meminta class komputasi lain, level Pod akan mengganti default namespace.

Untuk menetapkan class komputasi sebagai default untuk namespace tertentu, lakukan langkah berikut:

  1. Buat namespace

    kubectl create namespace cost-optimized-ns
    
  2. Beri label namespace dengan class compute:

    kubectl label namespaces cost-optimized-ns \
        cloud.google.com/default-compute-class=cost-optimized
    

Meminta class komputasi dalam workload

Untuk meminta class komputasi dalam beban kerja, tambahkan pemilih node untuk komputasi tersebut di manifes Anda.

  1. Simpan manifes berikut sebagai cc-workload.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: custom-workload
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: custom-workload
      template:
        metadata:
          labels:
            app: custom-workload
        spec:
          nodeSelector:
            cloud.google.com/compute-class: cost-optimized
          containers:
          - name: test
            image: gcr.io/google_containers/pause
            resources:
              requests:
                cpu: 1.5
                memory: "4Gi"
    
  2. Men-deploy workload:

    kubectl apply -f cc-workload.yaml
    

Saat Anda men-deploy workload ini, GKE otomatis menambahkan toleransi untuk Pod yang sesuai dengan taint node untuk Compute Engine. Tolerasi ini memastikan bahwa hanya Pod yang meminta komputasi yang berjalan pada node class komputasi.

Langkah selanjutnya