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 L4nvidia-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.
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 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/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 L4nvidia-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.
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:
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 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.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 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/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 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 dipasang ke container. Harus berupa jumlah yang didukung untuk GPU yang ditentukan, seperti 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.
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:
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
.
Pastikan bahwa reservasi berhasil dibuat:
gcloud compute reservations describe RESERVATION_NAME
Ganti
RESERVATION_NAME
dengan nama reservasi yang baru saja Anda buat.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
.
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:
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
.
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:
Ikuti langkah-langkah di bagian Mengizinkan dan membatasi project dalam pembuatan dan modifikasi reservasi bersama.
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 menggunakan reservasi 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.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
.
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 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
darigcloud 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:
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 selanjutnya
- 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.