Memakai resource zona yang direservasi


Halaman ini menunjukkan cara menggunakan resource zona Compute Engine yang direservasi di workload GKE tertentu. Pemesanan kapasitas ini memberi Anda tingkat kepastian yang tinggi bahwa hardware tertentu tersedia untuk workload Anda.

Pastikan Anda sudah memahami konsep pemesanan Compute Engine, seperti jenis konsumsi, jenis pembagian, dan jenis penyediaan. Untuk mengetahui detailnya, lihat Pemesanan resource zona Compute Engine.

Halaman ini ditujukan untuk orang-orang berikut:

  • Operator aplikasi yang men-deploy workload yang harus berjalan sesegera mungkin, biasanya dengan hardware khusus seperti GPU.
  • Administrator platform yang ingin mendapatkan jaminan tingkat tinggi bahwa workload berjalan di hardware yang dioptimalkan dan memenuhi persyaratan aplikasi dan organisasi.

Tentang penggunaan reservasi di GKE

Pemesanan kapasitas Compute Engine memungkinkan Anda menyediakan konfigurasi hardware tertentu di zona Google Cloud, baik segera maupun pada waktu mendatang yang ditentukan. Kemudian, Anda dapat menggunakan kapasitas yang direservasi ini di GKE.

Bergantung pada mode operasi GKE, Anda dapat menggunakan jenis reservasi berikut:

  • Mode Autopilot: khusus reservasi tertentu.
  • Mode standar: pemesanan tertentu atau pemesanan yang cocok.

Agar dapat menggunakan reservasi untuk membuat resource, Anda harus menentukan afinitas reservasi, seperti any atau specific.

Opsi penggunaan reservasi di GKE

GKE memungkinkan Anda menggunakan reservasi secara langsung di setiap workload dengan menggunakan nodeSelectors Kubernetes dalam manifes workload atau dengan membuat node pool mode Standar yang menggunakan reservasi. Halaman ini menjelaskan pendekatan untuk memilih reservasi secara langsung di setiap resource.

Anda juga dapat mengonfigurasi GKE untuk menggunakan reservasi selama operasi penskalaan yang membuat node baru menggunakan class komputasi kustom. Class komputasi kustom memungkinkan administrator platform menentukan hierarki konfigurasi node untuk diprioritaskan oleh GKE selama penskalaan node sehingga workload berjalan di hardware yang Anda pilih.

Anda dapat menentukan reservasi dalam konfigurasi class komputasi kustom sehingga setiap workload GKE yang menggunakan class komputasi kustom tersebut akan menunjukkan kepada GKE untuk menggunakan reservasi yang ditentukan untuk class komputasi tersebut.

Untuk mempelajari lebih lanjut, di halaman "Tentang class komputasi kustom", lihat Menggunakan reservasi Compute Engine.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan 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.

Menggunakan reservasi kapasitas di cluster Autopilot

Cluster Autopilot mendukung penggunaan resource dari pemesanan kapasitas Compute Engine dalam project yang sama atau dalam project bersama. Anda harus menetapkan properti jenis konsumsi dari reservasi target ke specific, dan Anda harus memilih reservasi tersebut secara eksplisit dalam manifes. Jika Anda tidak menentukan reservasi secara eksplisit, cluster Autopilot tidak akan menggunakan reservasi. Untuk mempelajari jenis penggunaan pemesanan lebih lanjut, lihat Cara kerja pemesanan.

Reservasi ini memenuhi syarat untuk diskon abonemen Compute fleksibel. Anda harus menggunakan class komputasi Accelerator atau class komputasi Performance untuk menggunakan reservasi kapasitas.

  • Sebelum memulai, buat cluster Autopilot yang menjalankan versi berikut:

    • Untuk menggunakan akselerator yang dicadangkan, seperti GPU: 1.28.6-gke.1095000 atau yang lebih baru
    • Untuk menjalankan Pod pada seri mesin tertentu dan dengan setiap Pod di node-nya sendiri: 1.28.6-gke.1369000 dan yang lebih baru atau versi 1.29.1-gke.1575000 dan yang lebih baru.

Membuat reservasi kapasitas untuk Autopilot

Pod Autopilot dapat menggunakan reservasi yang memiliki properti jenis penggunaan tertentu di project yang sama dengan cluster atau dalam reservasi bersama dari project lain. Anda dapat menggunakan hardware yang direservasi dengan mereferensikan reservasi tersebut secara eksplisit dalam manifes. Anda dapat menggunakan reservasi di Autopilot untuk jenis hardware berikut:

  • Salah satu jenis GPU berikut:
    • nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB)
    • nvidia-h100-80gb: NVIDIA H100 (80GB)
    • nvidia-a100-80gb: NVIDIA A100 (80GB)
    • nvidia-tesla-a100: NVIDIA A100 (40GB)
    • nvidia-l4: NVIDIA L4
    • nvidia-tesla-t4: NVIDIA T4

Untuk membuat pemesanan kapasitas, lihat referensi berikut. Pemesanan harus memenuhi persyaratan berikut:

  • Jenis mesin, jenis akselerator, dan jumlah akselerator cocok dengan yang akan digunakan oleh beban kerja Anda.
  • Reservasi menggunakan jenis pemakaian tertentu. Misalnya, di gcloud CLI, Anda harus menentukan flag --require-specific-reservation saat membuat reservasi.

  • Membuat pemesanan untuk satu project

  • Membuat reservasi bersama

Menggunakan reservasi tertentu dalam project yang sama di Autopilot

Bagian ini menunjukkan cara menggunakan reservasi kapasitas tertentu yang berada di project yang sama dengan cluster Anda. Anda dapat menggunakan kubectl atau Terraform.

kubectl

  1. Simpan manifes berikut sebagai specific-autopilot.yaml. Manifes ini memiliki pemilih node yang menggunakan reservasi tertentu. Anda dapat menggunakan instance VM atau akselerator.

    Instance VM

      apiVersion: v1
      kind: Pod
      metadata:
        name: specific-same-project-pod
      spec:
        nodeSelector:
          cloud.google.com/compute-class: Performance
          cloud.google.com/machine-family: MACHINE_SERIES
          cloud.google.com/reservation-name: RESERVATION_NAME
          cloud.google.com/reservation-affinity: "specific"
        containers:
        - name: my-container
          image: "k8s.gcr.io/pause"
          resources:
            requests:
              cpu: 12
              memory: "50Gi"
              ephemeral-storage: "200Gi"
    

    Ganti kode berikut:

    • MACHINE_SERIES: seri mesin yang berisi jenis mesin VM dalam pemesanan kapasitas tertentu Anda. Misalnya, jika pemesanan Anda adalah untuk jenis mesin c3-standard-4, tentukan C3 di kolom MACHINE_SERIES.
    • RESERVATION_NAME: nama reservasi kapasitas Compute Engine.

    Akselerator

      apiVersion: v1
      kind: Pod
      metadata:
        name: specific-same-project-pod
      spec:
        nodeSelector:
          cloud.google.com/gke-accelerator: ACCELERATOR
          cloud.google.com/reservation-name: RESERVATION_NAME
          cloud.google.com/reservation-affinity: "specific"
        containers:
        - name: my-container
          image: "k8s.gcr.io/pause"
          resources:
            requests:
              cpu: 12
              memory: "50Gi"
              ephemeral-storage: "200Gi"
            limits:
              nvidia.com/gpu: QUANTITY
    

    Ganti kode berikut:

    • ACCELERATOR: akselerator yang Anda pesan dalam pemesanan kapasitas Compute Engine. Harus berupa salah satu dari nilai berikut:
      • nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB)
      • nvidia-h100-80gb: NVIDIA H100 (80GB)
      • nvidia-a100-80gb: NVIDIA A100 (80GB)
      • nvidia-tesla-a100: NVIDIA A100 (40GB)
      • nvidia-l4: NVIDIA L4
      • nvidia-tesla-t4: NVIDIA T4
    • RESERVATION_NAME: nama reservasi kapasitas Compute Engine.
    • QUANTITY: jumlah GPU yang akan dipasang ke penampung. Harus berupa jumlah yang didukung untuk GPU yang ditentukan, seperti yang dijelaskan dalam Jumlah GPU yang didukung.
  2. Deploy Pod:

    kubectl apply -f specific-autopilot.yaml
    

Autopilot menggunakan kapasitas yang dicadangkan dalam reservasi yang ditentukan untuk menyediakan node baru guna menempatkan Pod.

Terraform

Untuk menggunakan reservasi tertentu dalam project yang sama dengan instance VM menggunakan Terraform, lihat contoh berikut:

resource "kubernetes_pod_v1" "default_pod" {
  metadata {
    name = "specific-same-project-pod"
  }

  spec {
    node_selector = {
      "cloud.google.com/compute-class"        = "Performance"
      "cloud.google.com/machine-family"       = "c3"
      "cloud.google.com/reservation-name"     = google_compute_reservation.specific_pod.name
      "cloud.google.com/reservation-affinity" = "specific"
    }

    container {
      name  = "my-container"
      image = "registry.k8s.io/pause"

      resources {
        requests = {
          cpu               = 2
          memory            = "8Gi"
          ephemeral-storage = "1Gi"
        }
      }

      security_context {
        allow_privilege_escalation = false
        run_as_non_root            = false

        capabilities {
          add  = []
          drop = ["NET_RAW"]
        }
      }
    }

    security_context {
      run_as_non_root     = false
      supplemental_groups = []

      seccomp_profile {
        type = "RuntimeDefault"
      }
    }
  }

  depends_on = [
    google_compute_reservation.specific_pod
  ]
}

Untuk menggunakan reservasi tertentu dalam project yang sama dengan class komputasi Accelerator menggunakan Terraform, lihat contoh berikut:

resource "kubernetes_pod_v1" "default_accelerator" {
  metadata {
    name = "specific-same-project-accelerator"
  }

  spec {
    node_selector = {
      "cloud.google.com/compute-class"        = "Accelerator"
      "cloud.google.com/gke-accelerator"      = "nvidia-l4"
      "cloud.google.com/reservation-name"     = google_compute_reservation.specific_accelerator.name
      "cloud.google.com/reservation-affinity" = "specific"
    }

    container {
      name  = "my-container"
      image = "registry.k8s.io/pause"

      resources {
        requests = {
          cpu               = 2
          memory            = "7Gi"
          ephemeral-storage = "1Gi"
          "nvidia.com/gpu"  = 1

        }
        limits = {
          "nvidia.com/gpu" = 1
        }
      }

      security_context {
        allow_privilege_escalation = false
        run_as_non_root            = false

        capabilities {
          add  = []
          drop = ["NET_RAW"]
        }
      }
    }

    security_context {
      run_as_non_root     = false
      supplemental_groups = []

      seccomp_profile {
        type = "RuntimeDefault"
      }
    }
  }

  depends_on = [
    google_compute_reservation.specific_accelerator
  ]
}

Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.

Menggunakan reservasi bersama tertentu di Autopilot

Bagian ini menggunakan istilah berikut:

  • Project pemilik: project yang memiliki pemesanan dan membagikannya dengan project lain.
  • Project konsumen: project yang menjalankan beban kerja yang menggunakan pemesanan bersama.

Untuk menggunakan pemesanan bersama, Anda harus memberikan akses agen layanan GKE ke pemesanan di project yang memiliki pemesanan. Lakukan tindakan berikut:

  1. Buat peran IAM kustom yang berisi izin compute.reservations.list di project pemilik:

    gcloud iam roles create ROLE_NAME \
        --project=OWNER_PROJECT_ID \
        --permissions='compute.reservations.list'
    

    Ganti kode berikut:

    • ROLE_NAME: nama untuk peran baru Anda.
    • OWNER_PROJECT_ID: project ID project yang memiliki reservasi kapasitas.
  2. Berikan agen layanan GKE di project konsumen akses untuk mencantumkan pemesanan bersama di project pemilik:

    gcloud projects add-iam-policy-binding OWNER_PROJECT_ID \
        --project=OWNER_PROJECT_ID \
        --member=serviceAccount:service-CONSUMER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \
        --role='projects/OWNER_PROJECT_ID/roles/ROLE_NAME'
    

    Ganti CONSUMER_PROJECT_NUMBER dengan nomor project numerik project konsumen Anda. Untuk menemukan nomor ini, lihat Mengidentifikasi project dalam dokumentasi Resource Manager.

  3. Simpan manifes berikut sebagai shared-autopilot.yaml. Manifes ini memiliki nodeSelectors yang memberi tahu GKE untuk menggunakan pemesanan bersama tertentu.

    Instance VM

    apiVersion: v1
    kind: Pod
    metadata:
      name: performance-pod
    spec:
      nodeSelector:
        cloud.google.com/compute-class: Performance
        cloud.google.com/machine-family: MACHINE_SERIES
        cloud.google.com/reservation-name: RESERVATION_NAME
        cloud.google.com/reservation-project: OWNER_PROJECT_ID
        cloud.google.com/reservation-affinity: "specific"
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 12
            memory: "50Gi"
            ephemeral-storage: "200Gi"
    

    Ganti kode berikut:

    • MACHINE_SERIES: seri mesin yang berisi jenis mesin VM dalam pemesanan kapasitas tertentu Anda. Misalnya, jika pemesanan Anda adalah untuk jenis mesin c3-standard-4, tentukan C3 di kolom MACHINE_SERIES.
    • RESERVATION_NAME: nama reservasi kapasitas Compute Engine.
    • OWNER_PROJECT_ID: project ID project yang memiliki reservasi kapasitas.

    Akselerator

    apiVersion: v1
    kind: Pod
    metadata:
      name: specific-same-project-pod
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: ACCELERATOR
        cloud.google.com/reservation-name: RESERVATION_NAME
        cloud.google.com/reservation-project: OWNER_PROJECT_ID
        cloud.google.com/reservation-affinity: "specific"
      containers:
      - name: my-container
        image: "k8s.gcr.io/pause"
        resources:
          requests:
            cpu: 12
            memory: "50Gi"
            ephemeral-storage: "200Gi"
          limits:
            nvidia.com/gpu: QUANTITY
    

    Ganti kode berikut:

    • ACCELERATOR: akselerator yang Anda pesan dalam pemesanan kapasitas Compute Engine. Harus berupa salah satu nilai berikut:
      • nvidia-h100-mega-80gb: NVIDIA H100 Mega (80GB)
      • nvidia-h100-80gb: NVIDIA H100 (80GB)
      • nvidia-a100-80gb: NVIDIA A100 (80GB)
      • nvidia-tesla-a100: NVIDIA A100 (40GB)
      • nvidia-l4: NVIDIA L4
      • nvidia-tesla-t4: NVIDIA T4
    • RESERVATION_NAME: nama reservasi kapasitas Compute Engine.
    • OWNER_PROJECT_ID: project ID project yang memiliki reservasi kapasitas.
    • QUANTITY: jumlah GPU yang akan dipasang ke penampung. Harus berupa jumlah yang didukung untuk GPU yang ditentukan, seperti yang dijelaskan dalam Jumlah GPU yang didukung.
  4. Deploy Pod:

    kubectl apply -f shared-autopilot.yaml
    

Autopilot menggunakan kapasitas yang dicadangkan dalam reservasi yang ditentukan untuk menyediakan node baru guna menempatkan Pod.

Memecahkan masalah penggunaan reservasi di Autopilot

  • Pastikan jenis mesin, jenis akselerator, konfigurasi SSD lokal, dan jumlah akselerator sesuai dengan yang akan digunakan oleh workload Anda. Untuk mengetahui daftar lengkap properti yang harus cocok, lihat properti reservasi kapasitas Compute Engine.
  • Pastikan bahwa reservasi dibuat dengan afinitas tertentu.
  • Saat menggunakan pemesanan bersama, pastikan agen layanan GKE di project konsumen memiliki izin untuk mencantumkan pemesanan bersama di project pemilik.

Menggunakan reserved instance di GKE Standard

Saat membuat cluster atau node pool, Anda dapat menunjukkan mode pemakaian reservasi dengan menentukan flag --reservation-affinity.

Memakai reservasi yang cocok

Anda dapat membuat reservasi dan instance untuk menggunakan reservasi apa pun menggunakan gcloud CLI atau Terraform.

gcloud

Untuk memakai reservasi yang cocok secara otomatis, tetapkan flag afinitas reservasi ke --reservation-affinity=any. Karena any adalah nilai default yang ditentukan di Compute Engine, Anda dapat menghilangkan flag afinitas reservasi sepenuhnya.

Dalam mode pemakaian reservasi any, node terlebih dahulu mengambil kapasitas dari semua reservasi satu project sebelum reservasi bersama, karena reservasi bersama lebih tersedia untuk project lain. Untuk informasi selengkapnya tentang cara instance dipakai secara otomatis, lihat Urutan pemakaian.

  1. Buat reservasi tiga instance VM:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3
    

    Ganti kode berikut:

    • RESERVATION_NAME: nama pemesanan yang akan dibuat.
    • MACHINE_TYPE: jenis mesin (hanya nama) yang akan digunakan untuk reservasi. Misalnya, n1-standard-2.
  2. Pastikan bahwa reservasi berhasil dibuat:

    gcloud compute reservations describe RESERVATION_NAME
    
  3. Buat cluster yang memiliki satu node untuk memakai reservasi apa pun yang cocok:

    gcloud container clusters create CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=any
    

    Ganti CLUSTER_NAME dengan nama cluster yang akan dibuat.

  4. Buat node pool dengan tiga node untuk memakai reservasi yang cocok:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME --num-nodes=3 \
        --machine-type=MACHINE_TYPE --reservation-affinity=any
    

    Ganti NODEPOOL_NAME dengan nama node pool yang akan dibuat.

Total jumlah node adalah empat, yang melebihi kapasitas reservasi. Tiga node memakai reservasi, sementara node terakhir mengambil kapasitas dari kumpulan resource Compute Engine umum.

Terraform

Untuk membuat reservasi tiga instance VM menggunakan Terraform, lihat contoh berikut:

resource "google_compute_reservation" "any_reservation" {
  name = "any-reservation"
  zone = "us-central1-a"

  specific_reservation {
    count = 3

    instance_properties {
      machine_type = "e2-medium"
    }
  }
}

Untuk membuat cluster yang memiliki satu node untuk memakai reservasi apa pun yang cocok menggunakan Terraform, lihat contoh berikut:

resource "google_container_cluster" "default" {
  name     = "gke-standard-zonal-cluster"
  location = "us-central1-a"

  initial_node_count = 1

  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "ANY_RESERVATION"
    }
  }

  depends_on = [
    google_compute_reservation.any_reservation
  ]

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Untuk membuat node pool dengan tiga node untuk menggunakan reservasi yang cocok menggunakan Terraform, lihat contoh berikut:

resource "google_container_node_pool" "any_node_pool" {
  name     = "gke-standard-zonal-any-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  initial_node_count = 3
  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "ANY_RESERVATION"
    }
  }
}

Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.

Memakai reservasi satu project khusus

Untuk memakai reservasi khusus, tetapkan flag afinitas reservasi ke --reservation-affinity=specific dan berikan nama khusus untuk reservasi. Dalam mode ini, instance harus mengambil kapasitas dari reservasi yang ditentukan di zona. Permintaan gagal jika reservasi tidak memiliki kapasitas yang memadai.

Agar reservasi dan instance dapat memakai reservasi khusus, lakukan langkah-langkah berikut. Anda dapat menggunakan gcloud CLI atau Terraform.

gcloud

  1. Buat reservasi khusus untuk tiga instance VM:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3 \
        --require-specific-reservation
    

    Ganti kode berikut:

    • RESERVATION_NAME: nama pemesanan yang akan dibuat.
    • MACHINE_TYPE: jenis mesin (hanya nama) yang akan digunakan untuk reservasi. Misalnya, n1-standard-2.
  2. Buat node pool dengan satu node untuk memakai reservasi satu project tertentu:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=specific --reservation=RESERVATION_NAME
    

    Ganti kode berikut:

    • NODEPOOL_NAME: nama node pool yang akan dibuat.
    • CLUSTER_NAME: nama cluster yang Anda buat.

Terraform

Untuk membuat reservasi tertentu menggunakan Terraform, lihat contoh berikut:

resource "google_compute_reservation" "specific_reservation" {
  name = "specific-reservation"
  zone = "us-central1-a"

  specific_reservation {
    count = 1

    instance_properties {
      machine_type = "e2-medium"
    }
  }

  specific_reservation_required = true
}

Untuk membuat node pool dengan satu node guna menggunakan pemesanan satu project tertentu menggunakan Terraform, lihat contoh berikut:

resource "google_container_node_pool" "specific_node_pool" {
  name     = "gke-standard-zonal-specific-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  initial_node_count = 1
  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "SPECIFIC_RESERVATION"
      key                      = "compute.googleapis.com/reservation-name"
      values                   = [google_compute_reservation.specific_reservation.name]
    }
  }

  depends_on = [
    google_compute_reservation.specific_reservation
  ]
}

Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.

Memakai reservasi bersama khusus

Untuk membuat reservasi bersama khusus dan memakai reservasi bersama, lakukan langkah-langkah berikut. Anda dapat menggunakan gcloud CLI atau Terraform.

  1. Ikuti langkah-langkah di bagian Mengizinkan dan membatasi project dalam pembuatan dan modifikasi reservasi bersama.

gcloud

  1. Membuat reservasi bersama khusus:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3 \
        --zone=ZONE \
        --require-specific-reservation \
        --project=OWNER_PROJECT_ID \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS
    

    Ganti kode berikut:

    • RESERVATION_NAME: nama reservasi yang akan dibuat.
    • MACHINE_TYPE: nama jenis mesin yang akan digunakan untuk reservasi. Misalnya, n1-standard-2.
    • OWNER_PROJECT_ID: Project ID dari project yang diinginkan untuk membuat reservasi bersama ini. Jika Anda menghapus flag --project, secara default GKE akan menggunakan project saat ini sebagai project pemilik.
    • CONSUMER_PROJECT_IDS: daftar yang dipisahkan koma untuk project ID dari project yang ingin Anda bagikan reservasi ini. Contohnya, project-1,project-2. Anda dapat menyertakan 1 hingga 100 project konsumen. Project ini harus berada dalam organisasi yang sama dengan project pemilik. Jangan sertakan OWNER_PROJECT_ID, karena dapat memakai pemesanan ini secara default.
  2. Menggunakan reservasi bersama:

      gcloud container node-pools create NODEPOOL_NAME \
          --cluster CLUSTER_NAME \
          --machine-type=MACHINE_TYPE --num-nodes=1 \
          --reservation-affinity=specific \
          --reservation=projects/OWNER_PROJECT_ID/reservations/RESERVATION_NAME
    

    Ganti kode berikut:

    • NODEPOOL_NAME: nama node pool yang akan dibuat.
    • CLUSTER_NAME: nama cluster yang Anda buat.

Terraform

Untuk membuat reservasi bersama tertentu menggunakan Terraform, lihat contoh berikut:

resource "google_compute_reservation" "specific_reservation" {
  name = "specific-reservation"
  zone = "us-central1-a"

  specific_reservation {
    count = 1

    instance_properties {
      machine_type = "e2-medium"
    }
  }

  specific_reservation_required = true
}

Untuk menggunakan reservasi bersama tertentu menggunakan Terraform, lihat contoh berikut:

resource "google_container_node_pool" "specific_node_pool" {
  name     = "gke-standard-zonal-specific-node-pool"
  cluster  = google_container_cluster.default.name
  location = google_container_cluster.default.location

  initial_node_count = 1
  node_config {
    machine_type = "e2-medium"

    reservation_affinity {
      consume_reservation_type = "SPECIFIC_RESERVATION"
      key                      = "compute.googleapis.com/reservation-name"
      values                   = [google_compute_reservation.specific_reservation.name]
    }
  }

  depends_on = [
    google_compute_reservation.specific_reservation
  ]
}

Untuk mempelajari lebih lanjut cara menggunakan Terraform, lihat Dukungan Terraform untuk GKE.

Pertimbangan tambahan untuk memakai reservasi khusus

Saat node pool dibuat dengan afinitas reservasi khusus, termasuk node pool default selama pembuatan cluster, ukurannya dibatasi pada kapasitas reservasi khusus selama masa aktif node pool. Hal ini memengaruhi fitur GKE berikut:

  • Cluster dengan beberapa zona: Di cluster regional atau multi-zona, node dari node pool dapat mencakup beberapa zona. Karena reservasi bersifat satu zona, beberapa reservasi diperlukan. Agar node pool dapat menggunakan reservasi khusus di cluster ini, Anda harus membuat reservasi khusus dengan nama dan properti mesin yang sama persis di setiap zona node pool.
  • Penskalaan otomatis cluster dan upgrade node pool: Jika Anda tidak memiliki kapasitas ekstra di reservasi khusus, upgrade node pool atau penskalaan otomatis node pool mungkin akan gagal karena kedua operasi memerlukan pembuatan instance tambahan. Untuk mengatasi hal ini, Anda dapat mengubah ukuran reservasi, atau mengosongkan beberapa resource terbatasnya.

Membuat node tanpa memakai reservasi

Agar tidak memakai resource secara eksplisit dari reservasi apa pun, tetapkan afinitas ke --reservation-affinity=none.

  1. Buat cluster yang tidak akan memakai reservasi apa pun:

    gcloud container clusters create CLUSTER_NAME --reservation-affinity=none
    

    Ganti CLUSTER_NAME dengan nama cluster yang akan dibuat.

  2. Buat node pool yang tidak akan menggunakan reservasi apa pun:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME \
        --reservation-affinity=none
    

    Ganti NODEPOOL_NAME dengan nama node pool yang akan dibuat.

Mengikuti reservasi yang tersedia antar-zona

Saat menggunakan node pool yang berjalan di beberapa zona dengan reservasi yang tidak sama antar-zona, Anda dapat menggunakan flag --location_policy=ANY. Cara ini memastikan bahwa saat node baru ditambahkan ke cluster, node tersebut dibuat di zona yang masih memiliki reservasi yang tidak digunakan.

Pemesanan TPU

Pemesanan TPU berbeda dengan jenis mesin lainnya. Berikut adalah aspek khusus TPU yang harus Anda pertimbangkan saat membuat reservasi TPU:

  • Saat menggunakan TPU di GKE, SPECIFIC adalah satu-satunya nilai yang didukung untuk flag --reservation-affinity dari gcloud container node-pools create.

Untuk mengetahui informasi selengkapnya, lihat Pemesanan TPU.

Pembersihan

Agar resource yang digunakan di halaman ini tidak ditagihkan ke akun Penagihan Cloud Anda:

  1. Hapus cluster yang Anda buat dengan menjalankan perintah berikut untuk setiap cluster:

    gcloud container clusters delete CLUSTER_NAME
    
  2. Hapus reservasi yang Anda buat dengan menjalankan perintah berikut untuk setiap reservasi:

    gcloud compute reservations delete RESERVATION_NAME
    

Langkah berikutnya