Memakai resource zona yang direservasi


Anda dapat mencadangkan instance Compute Engine di zona tertentu guna memastikan resource tersedia untuk beban kerja saat diperlukan. Untuk detail selengkapnya tentang cara mengelola reservasi, lihat Mereservasi resource zona Compute Engine.

Setelah membuat reservasi, Anda dapat menggunakan resource yang dicadangkan di GKE. GKE mendukung mode konsumsi yang sama dengan Compute Engine:

  • Memakai resource dari reservasi apa pun: Khusus standar
  • Memakai resource dari reservasi tertentu: Standar dan Autopilot
  • Membuat node tanpa menggunakan reservasi apa pun: Standar dan Autopilot

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 initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Memakai reservasi kapasitas di cluster Autopilot

Cluster Autopilot mendukung pemakaian resource dari reservasi kapasitas Compute Engine tertentu dalam project yang sama atau dalam project bersama. Kecuali ditentukan secara eksplisit, cluster Autopilot tidak akan menggunakan reservasi. Reservasi ini memenuhi syarat untuk mendapatkan Diskon Abonemen Autopilot. 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 menggunakan class komputasi Akselerator: 1.28.6-gke.1095000 atau yang lebih baru
    • Untuk menggunakan class Performance compute: 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 tertentu dalam project yang sama dengan cluster atau dalam reservasi bersama dari project yang berbeda. Anda dapat menggunakan hardware yang dicadangkan dengan secara eksplisit merujuk reservasi tersebut dalam manifes Anda. Anda dapat menggunakan reservasi dalam Autopilot untuk jenis hardware berikut:

  • Salah satu jenis GPU berikut:
    • nvidia-h100-80gb: NVIDIA H100 (80 GB) (hanya tersedia dengan kelas komputasi Akselerator)
    • 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. Pastikan jenis mesin, jenis akselerator, dan kuantitas akselerator sesuai dengan yang akan digunakan oleh beban kerja Anda.

Menggunakan reservasi tertentu dalam project yang sama dalam Autopilot

Bagian ini menunjukkan cara menggunakan reservasi kapasitas tertentu yang ada dalam project yang sama dengan cluster Anda.

  1. Simpan manifes berikut sebagai specific-autopilot.yaml. Manifes ini memiliki pemilih node yang menggunakan reservasi tertentu.

    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: "200Gi"
    

    Ganti kode berikut:

    • MACHINE_SERIES: rangkaian mesin yang berisi jenis mesin VM dalam reservasi kapasitas tertentu Anda. Misalnya, jika reservasi 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/compute-class: "Accelerator"
        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: "200Gi"
          limits:
            nvidia.com/gpu: QUANTITY
    

    Ganti kode berikut:

    • ACCELERATOR: akselerator yang Anda cadangkan dalam reservasi kapasitas Compute Engine. Harus berupa salah satu dari nilai berikut:
      • nvidia-h100-80gb: NVIDIA H100 (80 GB) (hanya tersedia dengan kelas komputasi Akselerator)
      • 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 dipasang ke container. Harus berupa jumlah yang didukung untuk GPU yang ditentukan, seperti 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.

Menggunakan reservasi bersama tertentu dalam Autopilot

Bagian ini menggunakan istilah berikut:

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

Untuk menggunakan reservasi bersama, Anda harus memberi agen layanan GKE akses ke reservasi dalam project yang memiliki reservasi. 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 akses kepada agen layanan GKE dalam project konsumen ke reservasi bersama di project pemilik:

    gcloud compute reservations add-iam-policy-binding RESERVATION_NAME \
        --project=OWNER_PROJECT_ID \
        --zone=ZONE \
        --member=service-CONSUMER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com \
        --role='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 nodeSelector yang memberi tahu GKE untuk menggunakan reservasi 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: "200Gi"
    

    Ganti kode berikut:

    • MACHINE_SERIES: rangkaian mesin yang berisi jenis mesin VM dalam reservasi kapasitas tertentu Anda. Misalnya, jika reservasi 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/compute-class: "Accelerator"
        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: "200Gi"
          limits:
            nvidia.com/gpu: QUANTITY
    

    Ganti kode berikut:

    • ACCELERATOR: akselerator yang Anda cadangkan dalam reservasi kapasitas Compute Engine. Harus berupa salah satu dari nilai berikut:
      • nvidia-h100-80gb: NVIDIA H100 (80 GB) (hanya tersedia dengan kelas komputasi Akselerator)
      • 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 dipasang ke container. Harus berupa jumlah yang didukung untuk GPU yang ditentukan, seperti 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.

Memakai instance yang dicadangkan di GKE Standard

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

Memakai reservasi yang cocok

Untuk memakai reservasi yang cocok secara otomatis, tetapkan flag afinitas reservasi ke --reservation-affinity=any.

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.

Agar reservasi dan instance dapat menggunakan reservasi apa pun, lakukan langkah-langkah berikut:

  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 reservasi 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
    

    Ganti RESERVATION_NAME dengan nama reservasi yang baru saja Anda buat.

  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 kode berikut:

    • CLUSTER_NAME: nama cluster yang akan dibuat.
    • MACHINE_TYPE: jenis mesin (hanya nama) yang akan digunakan untuk cluster. Contohnya, n1-standard-2.
  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 kode berikut:

    • NODEPOOL_NAME: nama node pool yang akan dibuat.
    • CLUSTER_NAME: nama cluster yang Anda buat sebelumnya.
    • MACHINE_TYPE: jenis mesin (hanya nama) yang akan digunakan untuk node pool. Contohnya, n1-standard-2.

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

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:

  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 reservasi 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 khusus:

    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.
    • MACHINE_TYPE: jenis mesin (hanya nama) yang akan digunakan untuk cluster. Contohnya, n1-standard-2.
    • RESERVATION_NAME: nama reservasi yang akan dipakai.

Memakai reservasi bersama khusus

Untuk membuat reservasi bersama khusus dan memakai reservasi bersama, lakukan langkah-langkah berikut:

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

  2. 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 menggunakan reservasi ini secara default.
  3. 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.
    • MACHINE_TYPE: nama jenis mesin yang akan digunakan untuk cluster. Contohnya, n1-standard-2.
    • OWNER_PROJECT_ID: project ID tempat reservasi bersama dibuat.
    • RESERVATION_NAME: nama reservasi khusus yang dibagikan untuk dipakai.

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 kumpulan node: Jika Anda tidak memiliki kapasitas ekstra di reservasi tertentu, upgrade kumpulan node atau penskalaan otomatis kumpulan node mungkin akan gagal karena kedua operasi tersebut 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 kode berikut:

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

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

Reservasi 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.
  • Reservasi TPU tidak dapat dibagikan antar-project.

Untuk mengetahui informasi selengkapnya, lihat Reservasi 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 selanjutnya