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 L4nvidia-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.
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
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 mesinc3-standard-4
, tentukanC3
di kolomMACHINE_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 L4nvidia-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.
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:
Untuk menggunakan reservasi tertentu dalam project yang sama dengan class komputasi Accelerator menggunakan Terraform, lihat contoh berikut:
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:
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.
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.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 mesinc3-standard-4
, tentukanC3
di kolomMACHINE_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 L4nvidia-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.
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.
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
.
Pastikan bahwa reservasi berhasil dibuat:
gcloud compute reservations describe RESERVATION_NAME
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.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:
Untuk membuat cluster yang memiliki satu node untuk memakai reservasi apa pun yang cocok menggunakan Terraform, lihat contoh berikut:
Untuk membuat node pool dengan tiga node untuk menggunakan reservasi yang cocok menggunakan Terraform, lihat contoh berikut:
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
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
.
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:
Untuk membuat node pool dengan satu node guna menggunakan pemesanan satu project tertentu menggunakan Terraform, lihat contoh berikut:
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.
- Ikuti langkah-langkah di bagian Mengizinkan dan membatasi project dalam pembuatan dan modifikasi reservasi bersama.
gcloud
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 sertakanOWNER_PROJECT_ID
, karena dapat memakai pemesanan ini secara default.
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:
Untuk menggunakan reservasi bersama tertentu menggunakan Terraform, lihat contoh berikut:
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
.
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.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
darigcloud 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:
Hapus cluster yang Anda buat dengan menjalankan perintah berikut untuk setiap cluster:
gcloud container clusters delete CLUSTER_NAME
Hapus reservasi yang Anda buat dengan menjalankan perintah berikut untuk setiap reservasi:
gcloud compute reservations delete RESERVATION_NAME
Langkah berikutnya
- Pelajari lebih lanjut cara mereservasi resource zona Compute Engine.
- Pelajari node pool lebih lanjut.
- Pelajari autoscaler cluster lebih lanjut.
- Pelajari strategi upgrade node lebih lanjut.