Membuat pemesanan bersama


Dokumen ini menjelaskan cara membuat pemesanan bersama, yaitu pemesanan yang dibagikan ke beberapa project, dan mengelola project di organisasi Anda yang dapat memakai pemesanan bersama.

Pemesanan bersama dapat digunakan oleh project yang menghosting pemesanan (project pemilik) dan oleh project yang memakai pemesanan bersama tersebut (project konsumen). Gunakan pemesanan bersama jika organisasi Anda memiliki beberapa project yang membutuhkan instance mesin virtual (VM) dengan properti sama yang dipesan. Dengan menggunakan pemesanan bersama, Anda dapat meningkatkan pemanfaatan pemesanan dan mengurangi jumlah pemesanan yang perlu dibuat serta dikelola. Untuk mempelajari pemesanan lebih lanjut, lihat Pemesanan resource zona Compute Engine.

Untuk metode pembuatan pemesanan yang lain, lihat halaman berikut:

  • Jika Anda memiliki komitmen 1 tahun atau 3 tahun dalam project saat ini, resource yang dipesan akan otomatis menerima diskon abonemen (CUD) yang berlaku. Anda juga dapat membuat dan melampirkan pemesanan ke komitmen saat membelinya. Untuk mempelajari lebih lanjut, lihat Melampirkan pemesanan ke komitmen.

  • Untuk membuat pemesanan yang hanya dapat digunakan oleh satu project, lihat Membuat pemesanan untuk satu project.

Sebelum memulai

  • Tinjau persyaratan dan batasan untuk pemesanan.
  • Tinjau persyaratan kuota dan batasan untuk pemesanan bersama.
  • Pastikan project yang Anda gunakan untuk membuat pemesanan bersama telah ditambahkan ke daftar yang diizinkan untuk batasan kebijakan organisasi Project Pemilik Pemesanan Bersama (compute.sharedReservationsOwnerProjects) oleh administrator kebijakan organisasi. Daftar yang diizinkan ini secara default kosong, sehingga Anda tidak dapat membuat pemesanan bersama hingga organisasi memberikan izin ini ke satu atau beberapa project. Untuk detail selengkapnya tentang cara melihat dan mengedit batasan kebijakan organisasi, lihat Mengizinkan dan membatasi project agar tidak membuat dan mengubah pemesanan bersama dalam dokumen ini.
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Untuk menggunakan contoh Terraform di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      Go

      Untuk menggunakan contoh Go di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      Java

      Untuk menggunakan contoh Java di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      Node.js

      Untuk menggunakan contoh Node.js di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      Python

      Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      REST

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk membuat reservasi bersama, minta administrator untuk memberi Anda peran IAM berikut:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk membuat pemesanan bersama. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat pemesanan bersama:

  • compute.reservations.create pada project
  • Untuk melihat kebijakan organisasi: orgpolicy.policy.get di organisasi
  • Untuk mengedit kebijakan organisasi: orgpolicy.policy.set di organisasi
  • Untuk menentukan template instance: compute.instanceTemplates.useReadOnly pada template instance

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Praktik terbaik

Saat membuat pemesanan bersama, praktik terbaik berikut direkomendasikan. Dengan mengikutinya, Anda dapat membantu mengoptimalkan kemudahan pengelolaan dan pemanfaatan pemesanan bersama di organisasi Anda.

  • Gunakan project pemilik untuk membuat pemesanan bersama tetapi jangan untuk memakainya.
    • Untuk membagi pengeluaran di seluruh project, sebaiknya hanya buat project konsumen yang menggunakan pemesanan bersama. Project pemilik hanya boleh digunakan untuk membuat pemesanan bersama.
    • Saat membuat pemesanan bersama, project pemilik harus memiliki kuota yang memadai untuk total resource yang akan dicadangkan. Kemudian, setelah pemesanan dibuat, project pemilik harus memiliki kuota untuk resource yang dicadangkan yang ingin digunakan. Untuk mengetahui informasi selengkapnya, lihat Persyaratan kuota tambahan untuk pemesanan bersama.
  • Minimalkan jumlah project di organisasi yang Anda izinkan untuk membuat pemesanan bersama. Anda dapat mengontrolnya melalui batasan kebijakan organisasi Project Pemilik Pemesanan Bersama (compute.sharedReservationsOwnerProjects).
    • Anda hanya dapat mencantumkan pemesanan yang dibuat oleh setiap project. Artinya, pemesanan bersama hanya dicantumkan dalam project pemilik—Anda tidak dapat mencantumkan pemesanan bersama ke setiap project atau mencantumkan semua pemesanan bersama di setiap organisasi—sehingga memiliki hanya beberapa project pemilik akan memudahkan pemantauan dan pengelolaan pemesanan bersama.
    • Batasi pembagian pemesanan bersama ke beberapa project saja untuk mengelola kuota resource yang dipesan dengan lebih mudah.
    • Untuk informasi selengkapnya, lihat Mengizinkan dan membatasi project agar tidak membuat dan mengubah pemesanan bersama.
  • Minimalkan jumlah pemesanan bersama yang terpisah dengan properti VM yang identik.
    • Organisasi dapat memiliki hingga 100 pemesanan bersama untuk setiap kombinasi unik dari properti VM. Oleh karena itu, meminimalkan jumlah pemesanan bersama dengan properti VM identik yang Anda buat akan membantu mengurangi batas ini.
    • Memiliki lebih sedikit pemesanan bersama akan meningkatkan kemudahan pengelolaan.
  • Hanya bagikan pemesanan ke project lain dengan akun Penagihan Cloud yang sama.
    • Batasi setiap pemesanan bersama agar hanya dibagikan ke project konsumen yang memiliki akun Penagihan Cloud yang sama dengan project pemilik. Hal ini memudahkan Anda untuk melihat apakah pemesanan telah dipakai dan bagaimana penagihannya.
    • Jika Anda mengaktifkan pembagian CUD dan memenuhi syarat untuk menerima CUD di tingkat akun Penagihan Cloud, untuk memaksimalkan CUD yang Anda terima untuk reservasi yang digunakan, batasi reservasi bersama Anda ke akun Penagihan Cloud komitmen tersebut. Dengan melakukan hal ini, Anda dapat mempertahankan penagihan yang konsisten di seluruh project yang membuat dan menggunakan pemesanan bersama.
  • Untuk permintaan pemesanan untuk masa mendatang, tinjau dengan cermat jumlah total VM yang Anda minta.
    • Jika Anda membuat permintaan reservasi untuk masa mendatang, pastikan Anda meminta jumlah total VM yang memperhitungkan semua hal berikut:
      • Semua VM yang direservasi yang cocok dan akan ada pada tanggal mendatang.
      • Semua VM yang cocok dan tidak direservasi yang akan sudah ada pada tanggal mendatang.
      • Setiap pemesanan on-demand yang cocok dan tidak terpakai yang akan sudah ada pada tanggal mendatang.
      • Peningkatan penggunaan yang ingin Anda pesan pada tanggal mendatang.

      Misalnya, Anda memerlukan 10 VM tambahan pada tanggal mendatang dan sudah memiliki resource berikut pada tanggal mendatang:

      • 40 VM yang dipesan yang cocok
      • 50 VM yang cocok dan tidak direservasi

      atau

      • 40 VM yang dipesan yang cocok
      • 50 pemesanan on-demand yang cocok dan tidak digunakan

      Karena penggunaan yang ada pada tanggal mendatang sudah mencapai 90 VM dan pemesanan yang cocok, dan Anda memerlukan sepuluh VM tambahan, Anda harus menentukan jumlah total 100 dalam permintaan pemesanan untuk masa mendatang.

      Untuk mengetahui informasi selengkapnya, lihat Menghitung dan menyediakan resource yang dipesan.

Mengizinkan dan membatasi project agar tidak membuat dan mengubah pemesanan bersama

Secara default, tidak ada project yang diizinkan untuk membuat atau mengubah pemesanan bersama di organisasi. Tambahkan project ke batasan kebijakan organisasi Project Pemilik Pemesanan Bersama (compute.sharedReservationsOwnerProjects) agar project tersebut dapat membuat dan mengubah pemesanan bersama. Untuk informasi selengkapnya tentang batasan kebijakan organisasi, lihat Pengantar Layanan Kebijakan Organisasi.

Gunakan langkah-langkah berikut untuk melihat dan mengedit batasan kebijakan organisasi Project Pemilik Pemesanan Bersama (compute.sharedReservationsOwnerProjects).

Melihat batasan kebijakan organisasi pemesanan bersama

Untuk melihat project yang diizinkan membuat dan mengubah pemesanan bersama, gunakan Konsol Google Cloud atau gcloud CLI.

Konsol

Ikuti langkah-langkah untuk Melihat kebijakan organisasi menggunakan batasan Project Pemilik Pemesanan Bersama.

gcloud

Untuk melihat project yang diizinkan oleh batasan compute.sharedReservationsOwnerProjects untuk membuat dan mengubah pemesanan bersama:

  1. Download kebijakan untuk organisasi Anda sebagai file bernama policy.yaml, menggunakan perintah gcloud resource-manager org-policies describe:

    gcloud resource-manager org-policies describe compute.sharedReservationsOwnerProjects --organization=ORGANIZATION_ID > policy.yaml
    

    Ganti ORGANIZATION_ID dengan ID organisasi miliki organisasi Anda.

  2. Gunakan editor teks untuk membuka file policy.yaml dan melihat batasan compute.sharedReservationsOwnerProjects. Project yang diizinkan untuk membuat dan mengubah pemesanan bersama tercantum dalam allowedValues-nya:

    ...
    constraint: constraints/compute.sharedReservationsOwnerProjects
    listPolicy:
      allowedValues:
      - projects/PROJECT_NUMBER_1
      - projects/PROJECT_NUMBER_2
      - projects/PROJECT_NUMBER_3
    ...
    

    dengan PROJECT_NUMBER_1, PROJECT_NUMBER_2, dan PROJECT_NUMBER_3 yang merupakan nomor project dari satu-satunya project di organisasi Anda yang diizinkan untuk membuat pemesanan bersama.

  3. Opsional: Hapus file policy.yaml.

    • Jika Anda menggunakan terminal Linux atau macOS, gunakan perintah berikut:

      rm policy.yaml
      
    • Jika Anda menggunakan terminal Windows, gunakan perintah berikut:

      del policy.yaml
      

Mengedit batasan kebijakan organisasi pemesanan bersama

Untuk mengedit project yang diizinkan membuat dan mengubah pemesanan bersama, gunakan Konsol Google Cloud atau gcloud CLI.

Konsol

Ikuti langkah-langkah untuk Menyesuaikan kebijakan untuk batasan daftar menggunakan batasan Project Pemilik Pemesanan Bersama.

gcloud

Untuk mengedit project yang diizinkan oleh batasan compute.sharedReservationsOwnerProjects untuk membuat dan mengubah pemesanan bersama, gunakan salah satu metode berikut:

  • Untuk memberikan izin ke satu project untuk membuat dan mengubah pemesanan bersama, gunakan perintah gcloud resource-manager org-policies allow. Anda dapat mengulangi perintah ini untuk setiap project yang ingin Anda beri izin.

    gcloud resource-manager org-policies allow compute.sharedReservationsOwnerProjects projects/PROJECT_NUMBER \
        --organization=ORGANIZATION_ID
    

    Ganti kode berikut:

    • PROJECT_NUMBER: nomor project (bukan project ID) dari project di organisasi yang ingin Anda izinkan untuk membuat dan mengubah pemesanan bersama.
    • ORGANIZATION_ID: ID organisasi milik organisasi Anda.
  • Untuk memberikan atau mencabut izin beberapa project untuk membuat dan mengubah pemesanan bersama, ganti batasan kebijakan organisasi:

    1. Untuk mendownload kebijakan bagi organisasi Anda sebagai file bernama policy.yaml, gunakan perintah gcloud resource-manager org-policies describe:

      gcloud resource-manager org-policies describe compute.sharedReservationsOwnerProjects --organization=ORGANIZATION_ID > policy.yaml
      

      Ganti ORGANIZATION_ID dengan ID organisasi miliki organisasi Anda.

    2. Gunakan editor teks untuk mengubah file policy.yaml agar batasan compute.sharedReservationsOwnerProjects mencantumkan semua project yang ingin Anda izinkan untuk membuat dan mengubah pemesanan bersama dalam allowedValues-nya.

      • Untuk setiap project yang ingin Anda beri izin untuk membuat dan mengubah pemesanan bersama, tambahkan project ke baris baru di allowedValues.
      • Untuk setiap project yang ingin Anda cabut izin pembuatan dan pengubahan pemesanan bersamanya, hapus baris untuk project tersebut.

      Setelah selesai, pastikan file policy.yaml terlihat serupa dengan contoh berikut:

      ...
      constraint: constraints/compute.sharedReservationsOwnerProjects
      listPolicy:
        allowedValues:
        - projects/PROJECT_NUMBER_1
        - projects/PROJECT_NUMBER_2
        - projects/PROJECT_NUMBER_3
      ...
      

      dengan PROJECT_NUMBER_1, PROJECT_NUMBER_2, dan PROJECT_NUMBER_3 yang merupakan nomor project (bukan project ID) dari semua project di organisasi Anda yang ingin diberi izin untuk membuat dan mengubah pemesanan bersama.

    3. Simpan file policy.yaml dan tutup editor teks.

    4. Untuk memperbarui kebijakan bagi organisasi dengan perubahan Anda, gunakan perintah gcloud resource-manager org-policies set-policy:

      gcloud resource-manager org-policies set-policy --organization=ORGANIZATION_ID policy.yaml
      

      Ganti ORGANIZATION_ID dengan ID organisasi miliki organisasi Anda.

    5. Opsional: Hapus file policy.yaml.

      • Jika Anda menggunakan terminal Linux atau macOS, gunakan perintah berikut:

        rm policy.yaml
        
      • Jika Anda menggunakan terminal Windows, gunakan perintah berikut:

        del policy.yaml
        

Anda mungkin perlu menunggu beberapa menit supaya hasil edit diterapkan.

Membuat pemesanan bersama

Bagian ini menjelaskan cara membuat pemesanan bersama. Setelah Anda membuatnya, pemesanan bersama hanya dapat diubah oleh project pemilik, tetapi resource untuk pemesanan bersama dapat dipakai oleh project pemilik atau project konsumen mana pun.

Untuk menggunakan pemesanan, VM harus memiliki properti yang sama persis dengan pemesanan tersebut. Untuk menentukan properti VM yang ingin Anda pesan, pilih salah satu bagian berikut dalam dokumen ini:

  • Direkomendasikan: Menentukan template instance

    Bagian ini menjelaskan cara menggunakan template instance untuk menentukan properti pemesanan bersama. Dengan menggunakan template instance, Anda dapat menentukan properti pemesanan dan VM yang dapat dipakai pemesanan di tempat yang sama. Namun, karena template bersifat spesifik per project, Anda tidak dapat menggunakan template yang sama untuk membuat VM yang dapat memakai pemesanan di luar project yang membuat pemesanan. Untuk project dengan pemesanan yang sama, Anda harus membuat template serupa dalam project tersebut atau membuat VM dengan menentukan properti secara langsung.

  • Menentukan VM yang ada

    Bagian ini menjelaskan cara menggunakan VM yang ada untuk menentukan properti pemesanan. Dengan menggunakan properti VM yang ada, Anda dapat menggunakan reservasi dengan membuat VM dengan properti yang cocok dengan VM referensi.

  • Menentukan properti secara langsung

    Bagian ini menjelaskan cara menentukan properti pemesanan bersama secara langsung. Metode ini mengharuskan Anda secara manual memastikan bahwa properti VM dan pemesanan Anda sama persis—setiap properti yang tidak cocok akan mencegah pemakaian.

Secara default, pemesanan dapat otomatis dipakai oleh semua VM yang memiliki properti yang sama persis dengannya. Jika Anda ingin mengontrol pemakaian pemesanan, lakukan satu atau beberapa hal berikut:

Menentukan template instance

Sebelum membuat pemesanan dengan menentukan template instance, pastikan hal berikut:

  • Template instance berisi setelan spesifik per project, sehingga Anda hanya dapat mengakses dan menggunakan template instance dalam project yang sama. Jika membuat pemesanan bersama dengan menentukan template instance, Anda tidak dapat menggunakan template yang sama untuk membuat VM yang dapat menggunakan pemesanan di luar project yang membuat pemesanan tersebut.

  • Buat pemesanan di region dan zona yang sama dengan resource dalam template instance. Setiap resource regional atau resource zona yang ditentukan dalam template instance—seperti jenis mesin atau volume Disk Permanen—akan membatasi penggunaan template ke lokasi tempat resource tersebut berada. Misalnya, jika template instance Anda menentukan volume Persistent Disk yang ada di zona us-central1-a, Anda hanya dapat membuat reservasi di zona yang sama. Untuk memeriksa apakah template yang ada menentukan resource yang mengikat template ke region atau zona tertentu, lihat detail template instance dan cari referensi ke resource regional atau resource zona yang ada di dalamnya.

Untuk membuat pemesanan bersama dengan menentukan template instance, pilih salah satu opsi berikut:

Konsol

  1. Di Konsol Google Cloud, buka halaman Pemesanan.

    Buka Pemesanan

    Halaman Pemesanan akan muncul.

  2. Klik Buat pemesanan.

    Halaman Create a reservation akan muncul.

  3. Untuk Nama, masukkan nama untuk pemesanan Anda.

  4. Untuk Region dan Zone, pilih tempat Anda ingin memesan resource.

  5. Di bagian Share type, lakukan tindakan berikut:

    1. Untuk menentukan pemesanan bersama, pilih Shared.

    2. Klik Add projects, lalu pilih project dari organisasi project saat ini yang ingin Anda gunakan dalam pemesanan bersama. Anda dapat memilih hingga 100 project konsumen.

  6. Opsional: Untuk mengizinkan reservasi VM GPU digunakan oleh tugas pelatihan kustom atau tugas prediksi di Vertex AI, di bagian Layanan Google Cloud, pilih Bagikan reservasi.

  7. Di bagian Gunakan dengan instance VM, pilih salah satu opsi berikut:

    • Untuk mengizinkan instance VM yang cocok otomatis menggunakan pemesanan ini, pilih Gunakan pemesanan secara otomatis jika belum dipilih.

    • Untuk menggunakan resource pemesanan ini hanya saat membuat VM yang sama persis yang secara khusus menargetkan pemesanan ini berdasarkan nama, pilih Pilih pemesanan tertentu.

  8. Untuk Jumlah instance VM, masukkan jumlah VM yang ingin Anda pesan.

  9. Di bagian Machine configuration, pilih Use instance template, lalu pilih template instance pilihan Anda. Jika memilih template instance regional, Anda hanya dapat memesan resource dalam region yang sama dengan region template.

  10. Di bagian Auto-delete, Anda dapat mengaktifkan opsi hapus otomatis agar Compute Engine otomatis menghapus reservasi pada tanggal dan waktu tertentu. Menghapus otomatis pemesanan dapat berguna untuk menghindari biaya yang tidak perlu saat Anda berhenti menggunakan pemesanan.

  11. Untuk membuat pemesanan, klik Buat.

    Halaman Reservations akan terbuka. Pembuatan pemesanan bersama mungkin memerlukan waktu hingga satu menit.

gcloud

Untuk membuat pemesanan bersama, gunakan perintah gcloud compute reservations create dengan flag --share-setting=projects dan --share-with.

Untuk membuat reservasi bersama dengan menentukan template instance dan tanpa menyertakan flag opsional, jalankan perintah berikut:

gcloud compute reservations create RESERVATION_NAME \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Ganti kode berikut:

  • RESERVATION_NAME: nama pemesanan yang akan dibuat.

  • PROJECT_ID: ID project tempat Anda ingin memesan resource dan tempat template instance berada.

  • CONSUMER_PROJECT_IDS: daftar yang dipisahkan koma untuk ID project yang dapat menggunakan reservasi ini—misalnya, project-1,project-2. Anda dapat menyertakan hingga 100 project konsumen. Project ini harus berada dalam organisasi yang sama dengan project pemilik. Jangan sertakan project pemilik. Secara default, project sudah diizinkan untuk menggunakan pemesanan.

  • LOCATION: lokasi template instance. Tentukan salah satu nilai berikut:

    • Untuk template instance global: global.

    • Untuk template instance regional: regions/REGION. Ganti REGION dengan region tempat template instance berada. Jika menentukan template instance regional, Anda hanya dapat memesan VM dalam region yang sama dengan region template.

  • INSTANCE_TEMPLATE_NAME: nama template instance yang ada. Jika template instance menentukan jenis mesin A3, Anda harus menyertakan flag --require-specific-reservation. Hal ini menunjukkan bahwa hanya VM yang secara khusus menargetkan pemesanan yang dapat menggunakannya. Untuk mengetahui informasi selengkapnya, lihat Menggunakan VM dari reservasi tertentu.

  • NUMBER_OF_VMS: jumlah VM yang akan dipesan.

  • ZONE: zona tempat memesan resource.

Misalnya, untuk membuat reservasi dengan menentukan template instance global di zona us-central1-a, bagikan reservasi dengan project project-1 dan project-2, dan pesan sepuluh VM yang masing-masing menggunakan jenis mesin yang telah ditetapkan N2 dengan 4 vCPU, jalankan perintah berikut:

gcloud compute reservations create my-reservation \
    --share-setting=projects \
    --share-with=project-1,project-2 \
    --source-instance-template=projects/example-project/global/example-instance-template \
    --vm-count=10 \
    --zone=us-central1-a

Secara opsional, Anda dapat melakukan satu atau beberapa hal berikut:

  • Untuk menentukan bahwa hanya VM yang secara khusus menargetkan pemesanan ini yang dapat menggunakannya, sertakan flag --require-specific-reservation.

    gcloud compute reservations create RESERVATION_NAME \
        --require-specific-reservation \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Untuk mengizinkan pemesanan VM GPU digunakan oleh tugas pelatihan kustom atau tugas prediksi di Vertex AI, gunakan perintah gcloud beta compute reservations create dengan flag --reservation-sharing-policy=ALLOW_ALL.

    gcloud beta compute reservations create RESERVATION_NAME \
        --reservation-sharing-policy=ALLOW_ALL \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Agar Compute Engine dapat otomatis menghapus reservasi, pilih salah satu metode berikut:

    • Untuk menghapus reservasi pada tanggal dan waktu tertentu, gunakan perintah gcloud beta compute reservations create dengan flag --delete-at-time.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-at-time=DELETE_AT_TIME \
          --share-setting=projects \
          --share-with=CONSUMER_PROJECT_IDS \
          --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ganti DELETE_AT_TIME dengan tanggal dan waktu yang diformat sebagai stempel waktu RFC 3339, yang harus seperti berikut:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ganti kode berikut:

      • YYYY-MM-DD: tanggal yang diformat sebagai tahun 4 digit, bulan 2 digit, dan hari 2 digit dalam sebulan, dipisahkan oleh tanda hubung (-).

      • HH:MM:SS: waktu yang diformat sebagai jam 2 digit menggunakan waktu 24 jam, menit 2 digit, dan detik 2 digit, yang dipisahkan oleh titik dua (:).

      • OFFSET: zona waktu yang diformat sebagai offset Waktu Universal Terkoordinasi (UTC). Misalnya, untuk menggunakan Waktu Standar Pasifik (PST), tentukan -08:00. Atau, untuk tidak menggunakan penyeimbang, tentukan Z.

    • Untuk menghapus pemesanan setelah durasi tertentu, gunakan perintah gcloud beta compute reservations create dengan flag --delete-after-duration.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-after-duration=DELETE_AFTER_DURATION \
          --share-setting=projects \
          --share-with=CONSUMER_PROJECT_IDS \
          --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ganti DELETE_AFTER_DURATION dengan durasi dalam hari, jam, menit, atau detik. Misalnya, tentukan 30m selama 30 menit, atau 1d2h3m4s untuk 1 hari, 2 jam, 3 menit, dan 4 detik.

Go

import (
	"context"
	"fmt"
	"io"

	computepb "cloud.google.com/go/compute/apiv1/computepb"
	"google.golang.org/protobuf/proto"
)

// Creates shared reservation from given template in particular zone
func createSharedReservation(w io.Writer, client ClientInterface, projectID, baseProjectId, zone, reservationName, sourceTemplate string) error {
	// client, err := compute.NewReservationsRESTClient(ctx)
	// projectID := "your_project_id". Destination of sharing.
	// baseProjectId := "your_project_id2". Project where the reservation will be created.
	// zone := "us-west3-a"
	// reservationName := "your_reservation_name"
	// sourceTemplate: existing template path. Following formats are allowed:
	//  	- projects/{project_id}/global/instanceTemplates/{template_name}
	//  	- projects/{project_id}/regions/{region}/instanceTemplates/{template_name}
	//  	- https://www.googleapis.com/compute/v1/projects/{project_id}/global/instanceTemplates/instanceTemplate
	//  	- https://www.googleapis.com/compute/v1/projects/{project_id}/regions/{region}/instanceTemplates/instanceTemplate

	ctx := context.Background()

	shareSettings := map[string]*computepb.ShareSettingsProjectConfig{
		projectID: {ProjectId: proto.String(projectID)},
	}

	req := &computepb.InsertReservationRequest{
		Project: baseProjectId,
		ReservationResource: &computepb.Reservation{
			Name: proto.String(reservationName),
			Zone: proto.String(zone),
			SpecificReservation: &computepb.AllocationSpecificSKUReservation{
				Count:                  proto.Int64(2),
				SourceInstanceTemplate: proto.String(sourceTemplate),
			},
			ShareSettings: &computepb.ShareSettings{
				ProjectMap: shareSettings,
				ShareType:  proto.String("SPECIFIC_PROJECTS"),
			},
		},
		Zone: zone,
	}

	op, err := client.Insert(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to create reservation: %w", err)
	}

	if op != nil {
		if err = op.Wait(ctx); err != nil {
			return fmt.Errorf("unable to wait for the operation: %w", err)
		}
	}

	fmt.Fprintf(w, "Reservation created\n")

	return nil
}

Java

import com.google.cloud.compute.v1.AllocationSpecificSKUReservation;
import com.google.cloud.compute.v1.Operation;
import com.google.cloud.compute.v1.Reservation;
import com.google.cloud.compute.v1.ReservationsClient;
import com.google.cloud.compute.v1.ShareSettings;
import com.google.cloud.compute.v1.ShareSettingsProjectConfig;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateSharedReservation {
  private final ReservationsClient reservationsClient;

  // Constructor to inject the ReservationsClient
  public CreateSharedReservation(ReservationsClient reservationsClient) {
    this.reservationsClient = reservationsClient;
  }

  public static void main(String[] args)
      throws IOException, ExecutionException, InterruptedException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    // The ID of the project where you want to reserve resources
    // and where the instance template exists.
    // By default, no projects are allowed to create or modify shared reservations
    // in an organization. Add projects to the Shared Reservations Owner Projects
    // (compute.sharedReservationsOwnerProjects) organization policy constraint
    // to allow them to create and modify shared reservations.
    // For more information visit this page:
    // https://cloud.google.com/compute/docs/instances/reservations-shared#shared_reservation_constraint
    String projectId = "YOUR_PROJECT_ID";
    // Zone in which the reservation resides.
    String zone = "us-central1-a";
    // Name of the reservation to be created.
    String reservationName = "YOUR_RESERVATION_NAME";
    // The URI of the global instance template to be used for creating the reservation.
    String instanceTemplateUri = String.format(
        "projects/%s/global/instanceTemplates/YOUR_INSTANCE_TEMPLATE_NAME", projectId);
    // Number of instances for which capacity needs to be reserved.
    int vmCount = 3;
    // In your main method, create ReservationsClient
    ReservationsClient client = ReservationsClient.create();
    // Create an instance of your class, passing in the client
    CreateSharedReservation creator = new CreateSharedReservation(client);

    creator.createSharedReservation(projectId, zone, reservationName, instanceTemplateUri, vmCount);
  }

  // Creates a shared reservation with the given name in the given zone.
  public void createSharedReservation(
      String projectId, String zone,
      String reservationName, String instanceTemplateUri, int vmCount)
      throws ExecutionException, InterruptedException, TimeoutException {

    ShareSettings shareSettings = ShareSettings.newBuilder()
        .setShareType(String.valueOf(ShareSettings.ShareType.SPECIFIC_PROJECTS))
        // The IDs of projects that can consume this reservation. You can include up to 100
        // consumer projects. These projects must be in the same organization as
        // the owner project. Don't include the owner project. By default, it is already allowed
        // to consume the reservation.
        .putProjectMap("CONSUMER_PROJECT_ID_1", ShareSettingsProjectConfig.newBuilder().build())
        .putProjectMap("CONSUMER_PROJECT_ID_2", ShareSettingsProjectConfig.newBuilder().build())
        .build();

    // Create the reservation.
    Reservation reservation =
        Reservation.newBuilder()
            .setName(reservationName)
            .setZone(zone)
            .setSpecificReservationRequired(true)
            .setShareSettings(shareSettings)
            .setSpecificReservation(
                AllocationSpecificSKUReservation.newBuilder()
                    .setCount(vmCount)
                    .setSourceInstanceTemplate(instanceTemplateUri)
                    .build())
            .build();

    // Wait for the create reservation operation to complete.
    Operation response =
        this.reservationsClient.insertAsync(projectId, zone, reservation).get(3, TimeUnit.MINUTES);

    if (response.hasError()) {
      System.out.println("Reservation creation failed!" + response);
      return;
    }
    System.out.println("Reservation created. Operation Status: " + response.getStatus());
  }
}

Node.js

// Import the Compute library
const computeLib = require('@google-cloud/compute');
const compute = computeLib.protos.google.cloud.compute.v1;

/**
 * TODO(developer): Uncomment reservationsClient and zoneOperationsClient before running the sample.
 */
// Instantiate a reservationsClient
// reservationsClient = new computeLib.ReservationsClient();
// Instantiate a zoneOperationsClient
// zoneOperationsClient = new computeLib.ZoneOperationsClient();

/**
 * TODO(developer): Update these variables before running the sample.
 */
// The ID of the project where you want to reserve resources and where the instance template exists.
const projectId = await reservationsClient.getProjectId();
// The zone in which to reserve resources.
const zone = 'us-central1-a';
// The name of the reservation to create.
const reservationName = 'reservation-01';
// The number of VMs to reserve.
const vmsNumber = 3;
// The name of an existing instance template.
const instanceTemplateName = 'global-instance-template-name';
// The location of the instance template.
const location = 'global';

async function callCreateComputeSharedReservation() {
  // Create reservation for 3 VMs in zone us-central1-a by specifying a instance template.
  const specificReservation = new compute.AllocationSpecificSKUReservation({
    count: vmsNumber,
    sourceInstanceTemplate: `projects/${projectId}/${location}/instanceTemplates/${instanceTemplateName}`,
  });

  // Create share settings. Share reservation with one customer project.
  const shareSettings = new compute.ShareSettings({
    shareType: 'SPECIFIC_PROJECTS',
    projectMap: {
      // The IDs of projects that can consume this reservation. You can include up to 100 consumer projects.
      // These projects must be in the same organization as the owner project.
      // Don't include the owner project. By default, it is already allowed to consume the reservation.
      consumer_project_id: {
        projectId: 'consumer_project_id',
      },
    },
  });

  // Create a reservation.
  const reservation = new compute.Reservation({
    name: reservationName,
    specificReservation,
    specificReservationRequired: true,
    shareSettings,
  });

  const [response] = await reservationsClient.insert({
    project: projectId,
    reservationResource: reservation,
    zone,
  });

  let operation = response.latestResponse;

  // Wait for the create reservation operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await zoneOperationsClient.wait({
      operation: operation.name,
      project: projectId,
      zone: operation.zone.split('/').pop(),
    });
  }

  console.log(`Reservation: ${reservationName} created.`);
  return response;
}

return await callCreateComputeSharedReservation();

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1


def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result


def create_compute_shared_reservation(
    project_id: str,
    zone: str = "us-central1-a",
    reservation_name="your-reservation-name",
    shared_project_id: str = "shared-project-id",
) -> compute_v1.Reservation:
    """Creates a compute reservation in GCP.
    Args:
        project_id (str): The ID of the Google Cloud project.
        zone (str): The zone to create the reservation.
        reservation_name (str): The name of the reservation to create.
        shared_project_id (str): The ID of the project that the reservation is shared with.
    Returns:
        Reservation object that represents the new reservation.
    """

    instance_properties = compute_v1.AllocationSpecificSKUAllocationReservedInstanceProperties(
        machine_type="n1-standard-1",
        # Optional. Specifies amount of local ssd to reserve with each instance.
        local_ssds=[
            compute_v1.AllocationSpecificSKUAllocationAllocatedInstancePropertiesReservedDisk(
                disk_size_gb=375, interface="NVME"
            ),
        ],
    )

    reservation = compute_v1.Reservation(
        name=reservation_name,
        specific_reservation=compute_v1.AllocationSpecificSKUReservation(
            count=3,  # Number of resources that are allocated.
            # If you use source_instance_template, you must exclude the instance_properties field.
            # It can be a full or partial URL.
            # source_instance_template="projects/[PROJECT_ID]/global/instanceTemplates/my-instance-template",
            instance_properties=instance_properties,
        ),
        share_settings=compute_v1.ShareSettings(
            share_type="SPECIFIC_PROJECTS",
            project_map={
                shared_project_id: compute_v1.ShareSettingsProjectConfig(
                    project_id=shared_project_id
                )
            },
        ),
    )

    # Create a client
    client = compute_v1.ReservationsClient()

    operation = client.insert(
        project=project_id,
        zone=zone,
        reservation_resource=reservation,
    )
    wait_for_extended_operation(operation, "Reservation creation")

    reservation = client.get(
        project=project_id, zone=zone, reservation=reservation_name
    )
    shared_project = next(iter(reservation.share_settings.project_map.values()))

    print("Name: ", reservation.name)
    print("STATUS: ", reservation.status)
    print("SHARED PROJECT: ", shared_project)
    # Example response:
    # Name:  your-reservation-name
    # STATUS:  READY
    # SHARED PROJECT:  project_id: "123456789012"

    return reservation

REST

Untuk membuat pemesanan bersama, buat permintaan POST ke metode reservations.insert. Dalam isi permintaan, sertakan hal berikut:

  • Kolom projectMap.

  • Kolom shareType ditetapkan ke SPECIFIC_PROJECTS.

Misalnya, untuk membuat reservasi bersama dengan menentukan template instance tanpa menyertakan kolom opsional, dan membagikan reservasi dengan dua project konsumen, buat permintaan POST berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat Anda ingin memesan resource dan tempat template instance berada.

  • ZONE: zona tempat memesan resource.

  • RESERVATION_NAME: nama pemesanan yang akan dibuat.

  • CONSUMER_PROJECT_ID_1 dan CONSUMER_PROJECT_ID_2: ID project yang dapat menggunakan pemesanan ini. Anda dapat menyertakan hingga 100 project konsumen. Project ini harus berada dalam organisasi yang sama dengan project pemilik. Jangan sertakan project pemilik. Secara default, project sudah diizinkan untuk menggunakan pemesanan.

  • NUMBER_OF_VMS: jumlah VM yang akan dipesan.

  • LOCATION: lokasi template instance. Tentukan salah satu nilai berikut:

    • Untuk template instance global: global.

    • Untuk template instance regional: regions/REGION. Ganti REGION dengan region tempat template instance berada. Jika menentukan template instance regional, Anda hanya dapat memesan VM dalam region yang sama dengan region template.

  • INSTANCE_TEMPLATE_NAME: nama template instance yang ada. Jika template instance menentukan jenis mesin A3, Anda harus menyertakan kolom specificReservationRequired dalam isi permintaan, dan menetapkan kolom tersebut ke true. Hal ini menunjukkan bahwa hanya VM yang secara khusus menargetkan reservasi ini yang dapat menggunakannya. Untuk mengetahui informasi selengkapnya, lihat Menggunakan VM dari reservasi tertentu.

Misalnya, untuk membuat reservasi sepuluh VM di zona us-central1-a dengan menentukan template instance global, dan membagikan reservasi dengan project project-1 dan project-2, buat permintaan POST berikut:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "project-1": {
        "projectId": "project-1"
      },
      "project-2": {
        "projectId": "project-2"
      }
    }
  },
  "specificReservation": {
    "count": "10",
    "sourceInstanceTemplate": "projects/example-project/global/instanceTemplates/example-instance-template"
  }
}

Secara opsional, Anda dapat melakukan satu atau beberapa hal berikut:

  • Untuk menentukan bahwa hanya VM yang secara khusus menargetkan pemesanan ini yang dapat menggunakannya, sertakan kolom specificReservationRequired dalam isi permintaan, dan tetapkan kolom ke true.

    Misalnya, untuk membuat pemesanan tertentu dengan menentukan template instance, dan membagikan pemesanan dengan dua project konsumen, buat permintaan sebagai berikut:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
      },
      "specificReservationRequired": true
    }
    
  • Untuk mengizinkan reservasi VM GPU digunakan oleh tugas pelatihan kustom atau tugas prediksi di Vertex AI, buat permintaan POST ke metode beta.reservations.insert. Dalam isi permintaan, sertakan kolom serviceShareType dan tetapkan ke ALLOW_ALL.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "reservationSharingPolicy": {
        "serviceShareType": "ALLOW_ALL"
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
      }
    }
    
  • Agar Compute Engine dapat otomatis menghapus reservasi, pilih salah satu metode berikut:

    • Untuk menghapus pemesanan pada tanggal dan waktu tertentu, buat permintaan POST ke metode beta.reservations.insert. Dalam isi permintaan, sertakan kolom deleteAtTime.

      Misalnya, untuk membuat pemesanan dengan menentukan template instance, menghapus pemesanan secara otomatis pada tanggal dan waktu tertentu, serta membagikan pemesanan dengan dua project konsumen, buat permintaan sebagai berikut:

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAtTime": "DELETE_AT_TIME",
        "name": "RESERVATION_NAME",
        "shareSettings": {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap": {
            "CONSUMER_PROJECT_ID_1": {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2": {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        },
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        }
      }
      

      Ganti DELETE_AT_TIME dengan tanggal dan waktu yang diformat sebagai stempel waktu RFC 3339, yang harus seperti berikut:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ganti kode berikut:

      • YYYY-MM-DD: tanggal yang diformat sebagai tahun 4 digit, bulan 2 digit, dan hari 2 digit dalam sebulan, dipisahkan oleh tanda hubung (-).

      • HH:MM:SS: waktu yang diformat sebagai jam 2 digit menggunakan waktu 24 jam, menit 2 digit, dan detik 2 digit, yang dipisahkan oleh titik dua (:).

      • OFFSET: zona waktu yang diformat sebagai offset Waktu Universal Terkoordinasi (UTC). Misalnya, untuk menggunakan Waktu Standar Pasifik (PST), tentukan -08:00. Atau, untuk tidak menggunakan penyeimbang, tentukan Z.

    • Untuk menghapus pemesanan setelah durasi tertentu, buat permintaan POST ke metode beta.reservations.insert. Dalam isi permintaan, sertakan kolom deleteAfterDuration.

      Misalnya, untuk membuat pemesanan dengan menentukan template instance, menghapus pemesanan secara otomatis setelah durasi tertentu, dan membagikan pemesanan dengan dua project konsumen, buat permintaan sebagai berikut:

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        "name": "RESERVATION_NAME",
        "shareSettings": {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap": {
            "CONSUMER_PROJECT_ID_1": {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2": {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        },
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME"
        }
      }
      

      Ganti DELETE_AFTER_DURATION dengan durasi dalam detik. Misalnya, tentukan 86400 selama 86.400 detik (1 hari).

Menentukan VM yang ada

Anda hanya dapat membuat reservasi bersama berdasarkan VM yang ada di project dan zona yang sama dengan VM.

Setelah membuat reservasi, Anda dapat menggunakannya dengan membuat VM dengan properti yang cocok dengan VM referensi. Anda dapat melakukannya dengan melakukan salah satu hal berikut:

  • Buat dan gunakan template instance sebagai berikut:

    1. Buat template instance berdasarkan VM referensi tanpa mengganti properti VM referensi.

    2. Buat VM menggunakan template yang baru dibuat dengan melakukan salah satu atau kedua hal berikut:

  • Buat VM dengan properti yang sama persis dengan VM referensi sebagai berikut:

    • Di project pemilik, buat VM berdasarkan VM referensi tanpa mengubah properti VM yang Anda buat.

    • Dalam project konsumen, buat VM sambil memastikan secara manual bahwa propertinya dan properti VM referensi cocok.

Untuk membuat reservasi bersama yang menggunakan properti VM yang ada, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Reservations.

    Buka Pemesanan

  2. Di tab Pemesanan sesuai permintaan (default), klik Buat pemesanan.

    Halaman Create a reservation akan terbuka.

  3. Untuk Nama, masukkan nama untuk pemesanan Anda.

  4. Untuk Region dan Zone, pilih tempat Anda ingin memesan resource.

  5. Di bagian Share type, lakukan tindakan berikut:

    1. Untuk menentukan pemesanan bersama, pilih Shared.

    2. Klik Add projects, lalu pilih project dari organisasi project saat ini yang ingin Anda gunakan dalam pemesanan bersama. Anda dapat memilih hingga 100 project konsumen.

  6. Di bagian Gunakan dengan instance VM, pilih salah satu opsi berikut:

    • Untuk mengizinkan VM yang cocok menggunakan pemesanan ini secara otomatis, pilih Gunakan pemesanan secara otomatis jika belum dipilih.

    • Untuk menggunakan resource pemesanan ini hanya saat membuat VM yang sama persis yang secara khusus menargetkan pemesanan ini berdasarkan nama, pilih Pilih pemesanan tertentu.

  7. Untuk Number of VM instances, masukkan jumlah VM yang ingin Anda pesan.

  8. Di bagian Machine configuration, lakukan hal berikut:

    1. Pilih Gunakan VM yang ada.

    2. Untuk VM yang Ada, pilih VM yang propertinya ingin Anda gunakan untuk membuat reservasi.

  9. Di bagian Auto-delete, Anda dapat mengaktifkan opsi hapus otomatis agar Compute Engine otomatis menghapus pemesanan pada tanggal dan waktu tertentu. Menghapus otomatis pemesanan dapat berguna untuk menghindari biaya yang tidak perlu saat Anda berhenti menggunakan pemesanan.

  10. Untuk membuat pemesanan, klik Buat.

    Halaman Reservations akan terbuka. Mungkin perlu waktu hingga satu menit untuk menyelesaikan pembuatan pemesanan.

Menentukan properti secara langsung

Untuk membuat reservasi bersama dengan menentukan properti secara langsung, pilih salah satu opsi berikut:

Konsol

  1. Di Konsol Google Cloud, buka halaman Pemesanan.

    Buka Pemesanan

  2. Di tab Pemesanan sesuai permintaan (default), klik Buat pemesanan.

  3. Klik Create reservation.

    Halaman Create a reservation akan muncul.

  4. Untuk Nama, masukkan nama untuk pemesanan Anda.

  5. Untuk Region dan Zone, pilih tempat Anda ingin memesan resource.

  6. Di bagian Share type, lakukan tindakan berikut:

    1. Untuk menentukan pemesanan bersama, pilih Shared.

    2. Klik Add projects, lalu pilih project dari organisasi project saat ini yang ingin Anda gunakan dalam pemesanan bersama. Anda dapat memilih hingga 100 project konsumen.

  7. Opsional: Untuk mengizinkan reservasi VM GPU digunakan oleh tugas pelatihan kustom atau tugas prediksi di Vertex AI, di bagian Layanan Google Cloud, pilih Bagikan reservasi.

  8. Di bagian Gunakan dengan instance VM, pilih salah satu opsi berikut:

    • Untuk mengizinkan VM yang cocok menggunakan reservasi ini secara otomatis, pilih Gunakan pemesanan secara otomatis (default).

    • Untuk menggunakan resource pemesanan ini hanya saat membuat VM yang sama persis yang secara khusus menargetkan pemesanan ini berdasarkan nama, pilih Pilih pemesanan tertentu.

  9. Untuk Number of VM instances, masukkan jumlah VM yang ingin Anda pesan.

  10. Di bagian Konfigurasi mesin, pilih Tentukan jenis mesin, lalu tentukan hal berikut:

    1. Untuk Machine family, Series, dan Machine type, pilih kelompok mesin, seri, dan jenis mesin.

    2. Opsional: Untuk menentukan platform CPU minimum atau memasang GPU ke VM N1, lakukan hal berikut:

      1. Untuk meluaskan bagian CPU Platform and GPU, klik peluas .

      2. Opsional: Untuk menentukan platform CPU minimum, untuk CPU Platform, pilih salah satu opsi.

      3. Opsional: Untuk memasang GPU ke VM N1, klik Tambahkan GPU. Kemudian, untuk GPU type dan Number of GPUs, pilih jenis dan jumlah GPU yang akan dilampirkan ke setiap VM N1.

    3. Opsional: Untuk menambahkan disk SSD Lokal, lakukan hal berikut:

      1. Untuk Jumlah disk, pilih jumlah disk SSD Lokal untuk setiap VM.

      2. Untuk Jenis antarmuka, pilih antarmuka untuk disk SSD Lokal.

  11. Di bagian Auto-delete, Anda dapat mengaktifkan opsi hapus otomatis agar Compute Engine otomatis menghapus reservasi pada tanggal dan waktu tertentu. Menghapus otomatis pemesanan dapat berguna untuk menghindari biaya yang tidak perlu saat Anda berhenti menggunakan pemesanan.

  12. Untuk membuat pemesanan, klik Buat.

    Halaman Reservations akan terbuka. Pembuatan pemesanan bersama mungkin memerlukan waktu hingga satu menit untuk diselesaikan.

gcloud

Untuk membuat pemesanan bersama, gunakan perintah gcloud compute reservations create dengan flag --share-setting=projects dan --share-with.

Untuk membuat reservasi bersama dengan menentukan properti secara langsung dan tanpa menyertakan flag opsional, jalankan perintah berikut:

gcloud compute reservations create RESERVATION_NAME \
    --machine-type=MACHINE_TYPE \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --vm-count=NUMBER_OF_VMS \
    --zone=ZONE

Ganti kode berikut:

  • RESERVATION_NAME: nama pemesanan yang akan dibuat.

  • MACHINE_TYPE: jenis mesin yang akan digunakan untuk setiap VM. Jika menentukan jenis mesin A3, Anda harus menyertakan flag --require-specific-reservation. Hal ini menunjukkan bahwa hanya VM yang secara khusus menargetkan pemesanan yang dapat menggunakannya. Untuk mengetahui informasi selengkapnya, lihat Menggunakan VM dari reservasi tertentu.

  • CONSUMER_PROJECT_IDS: daftar yang dipisahkan koma untuk ID project yang dapat menggunakan reservasi ini—misalnya, project-1,project-2. Anda dapat menyertakan hingga 100 project konsumen. Project ini harus berada dalam organisasi yang sama dengan project pemilik. Jangan sertakan project pemilik. Secara default, project sudah diizinkan untuk menggunakan pemesanan.

  • NUMBER_OF_VMS: jumlah VM yang akan dipesan.

  • ZONE: zona tempat memesan resource.

Misalnya, untuk membuat reservasi di zona us-central1-a untuk sepuluh VM yang masing-masing menggunakan jenis mesin standar N2 dengan 4 vCPU, dan membagikan pemesanan dengan project project-1 dan project-2, jalankan perintah berikut:

gcloud compute reservations create my-reservation \
    --machine-type=n2-standard-4 \
    --share-setting=projects \
    --share-with=project-1,project-2 \
    --vm-count=10 \
    --zone=us-central1-a

Secara opsional, Anda dapat melakukan satu atau beberapa hal berikut:

  • Untuk memasang GPU ke VM N1 yang dipesan, sertakan flag --accelerator.

    gcloud compute reservations create RESERVATION_NAME \
        --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
        --machine-type=MACHINE_TYPE \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ganti kode berikut:

    • NUMBER_OF_ACCELERATORS: jumlah GPU yang akan ditambahkan per VM yang dipesan.

    • ACCELERATOR_TYPE: model GPU yang didukung untuk VM N1. Pastikan model GPU yang Anda pilih tersedia di zona tempat Anda ingin memesan resource. Jika tidak, pembuatan pemesanan akan gagal.

  • Untuk menambahkan satu atau beberapa disk SSD Lokal ke setiap VM yang direservasi, sertakan satu atau beberapa flag --local-ssd. Anda dapat menentukan hingga 24 disk SSD Lokal. Ukuran setiap disk SSD Lokal adalah 375 GB.

    Misalnya, untuk menentukan dua disk SSD Lokal saat membuat reservasi bersama, sertakan dua flag --local-ssd sebagai berikut:

    gcloud compute reservations create RESERVATION_NAME \
        --local-ssd=size=375,interface=INTERFACE_1 \
        --local-ssd=size=375,interface=INTERFACE_2 \
        --machine-type=MACHINE_TYPE \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ganti INTERFACE_1 dan INTERFACE_2 dengan jenis antarmuka yang ingin digunakan setiap disk SSD Lokal. Tentukan salah satu nilai berikut:

    • Antarmuka disk NVME: nvme

    • Antarmuka disk SCSI: scsi

    Pastikan jenis mesin yang Anda tentukan untuk VM yang dicadangkan mendukung antarmuka disk yang dipilih. Jika tidak, pembuatan pemesanan akan gagal. Untuk informasi selengkapnya, lihat cara memilih antarmuka disk.

  • Agar VM yang dipesan menggunakan platform CPU minimum tertentu, bukan platform CPU default zona, sertakan flag --min-cpu-platform.

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --min-cpu-platform="MIN_CPU_PLATFORM" \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    

    Ganti MIN_CPU_PLATFORM dengan platform CPU minimum. Untuk memastikan platform CPU tersedia di zona tempat Anda menyimpan resource, lihat platform CPU yang tersedia berdasarkan zona.

  • Untuk menentukan bahwa hanya VM yang secara khusus menargetkan pemesanan ini yang dapat menggunakannya, sertakan flag --require-specific-reservation.

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --require-specific-reservation \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Untuk mengizinkan pemesanan VM GPU digunakan oleh tugas pelatihan kustom atau tugas prediksi di Vertex AI, gunakan perintah gcloud beta compute reservations create dengan flag --reservation-sharing-policy=ALLOW_ALL.

    gcloud beta compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE \
        --reservation-sharing-policy=ALLOW_ALL \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --vm-count=NUMBER_OF_VMS \
        --zone=ZONE
    
  • Agar Compute Engine dapat otomatis menghapus reservasi, pilih salah satu metode berikut:

    • Untuk menghapus reservasi pada tanggal dan waktu tertentu, gunakan perintah gcloud beta compute reservations create dengan flag --delete-at-time.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-at-time=DELETE_AT_TIME \
          --machine-type=MACHINE_TYPE \
          --share-setting=projects \
          --share-with=CONSUMER_PROJECT_IDS \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ganti DELETE_AT_TIME dengan tanggal dan waktu yang diformat sebagai stempel waktu RFC 3339, yang harus seperti berikut:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ganti kode berikut:

      • YYYY-MM-DD: tanggal yang diformat sebagai tahun 4 digit, bulan 2 digit, dan hari 2 digit dalam sebulan, dipisahkan oleh tanda hubung (-).

      • HH:MM:SS: waktu yang diformat sebagai jam 2 digit menggunakan waktu 24 jam, menit 2 digit, dan detik 2 digit, yang dipisahkan oleh titik dua (:).

      • OFFSET: zona waktu yang diformat sebagai offset Waktu Universal Terkoordinasi (UTC). Misalnya, untuk menggunakan Waktu Standar Pasifik (PST), tentukan -08:00. Atau, untuk tidak menggunakan penyeimbang, tentukan Z.

    • Untuk menghapus pemesanan setelah durasi tertentu, gunakan perintah gcloud beta compute reservations create dengan flag --delete-after-duration.

      gcloud beta compute reservations create RESERVATION_NAME \
          --delete-after-duration=DELETE_AFTER_DURATION \
          --machine-type=MACHINE_TYPE \
          --share-setting=projects \
          --share-with=CONSUMER_PROJECT_IDS \
          --vm-count=NUMBER_OF_VMS \
          --zone=ZONE
      

      Ganti DELETE_AFTER_DURATION dengan durasi dalam hari, jam, menit, atau detik. Misalnya, tentukan 30m selama 30 menit, atau 1d2h3m4s untuk 1 hari, 2 jam, 3 menit, dan 4 detik.

Terraform

Untuk membuat pemesanan, gunakan resource Terraform google_compute_reservation. Untuk menetapkan pemesanan bersama, tentukan blok share_settings:

  • Tetapkan kolom share_type ke SPECIFIC_PROJECTS.
  • Di blok project_map, tentukan project ID dari project yang ingin Anda gunakan dalam pemesanan bersama.

Untuk informasi selengkapnya tentang cara menggunakan Terraform, baca artikel Menggunakan Terraform dengan Google Cloud.

REST

Untuk membuat pemesanan bersama, buat permintaan POST ke metode reservations.insert. Dalam isi permintaan, sertakan hal berikut:

  • Kolom projectMap.

  • Kolom shareType ditetapkan ke SPECIFIC_PROJECTS.

Misalnya, untuk membuat pemesanan bersama tanpa menyertakan kolom opsional apa pun dan membagikan pemesanan dengan dua project konsumen, buat permintaan POST berikut:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations

{
  "name": "RESERVATION_NAME",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "CONSUMER_PROJECT_ID_1": {
        "projectId": "CONSUMER_PROJECT_ID_1"
      },
      "CONSUMER_PROJECT_ID_2": {
        "projectId": "CONSUMER_PROJECT_ID_2"
      }
    }
  },
  "specificReservation": {
    "count": "NUMBER_OF_VMS",
    "instanceProperties": {
      "machineType": "MACHINE_TYPE"
    }
  }
}

Ganti kode berikut:

  • PROJECT_ID: ID project tempat Anda ingin memesan resource.

  • ZONE: zona tempat memesan resource.

  • RESERVATION_NAME: nama pemesanan yang akan dibuat.

  • CONSUMER_PROJECT_ID_1 dan CONSUMER_PROJECT_ID_2: ID project yang dapat menggunakan pemesanan ini. Anda dapat menyertakan hingga 100 project konsumen. Project ini harus berada dalam organisasi yang sama dengan project pemilik. Jangan sertakan project pemilik. Secara default, project sudah diizinkan untuk menggunakan pemesanan.

  • NUMBER_OF_VMS: jumlah VM yang akan dipesan.

  • MACHINE_TYPE: jenis mesin yang akan digunakan untuk setiap VM. Jika menentukan jenis mesin A3, Anda harus menyertakan kolom specificReservationRequired dalam isi permintaan, dan menetapkan kolom ke true. Hal ini menunjukkan bahwa hanya VM yang secara khusus menargetkan reservasi yang dapat menggunakannya.

Misalnya, untuk membuat reservasi dengan menentukan template instance global di zona us-central1-a, bagikan reservasi dengan project project-1 dan project-2, dan pesan sepuluh VM yang masing-masing menggunakan jenis mesin yang telah ditetapkan N2 dengan 4 vCPU, buat permintaan POST berikut:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations

{
  "name": "my-reservation",
  "shareSettings": {
    "shareType": "SPECIFIC_PROJECTS",
    "projectMap": {
      "project-1": {
        "projectId": "project-1"
      },
      "project-2": {
        "projectId": "project-2"
      }
    }
  },
  "specificReservation": {
    "count": "10",
    "instanceProperties": {
      "machineType": "n2-standard-4",
    }
  }
}

Secara opsional, Anda dapat melakukan satu atau beberapa hal berikut:

  • Untuk memasang GPU ke VM N1 yang dipesan, sertakan kolom guestAccelerators dalam isi permintaan.

    Misalnya, untuk membuat reservasi yang dibagikan dengan dua project konsumen, dan memasang GPU ke VM N1 yang direservasi, buat permintaan sebagai berikut:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "guestAccelerators": [
            {
              "acceleratorCount": NUMBER_OF_ACCELERATORS,
              "acceleratorType": "ACCELERATOR_TYPE"
            }
          ],
          "machineType": "MACHINE_TYPE"
        }
      }
    }
    

    Ganti kode berikut:

    • NUMBER_OF_ACCELERATORS: jumlah GPU yang akan ditambahkan per VM yang dipesan.

    • ACCELERATOR_TYPE: model GPU yang didukung untuk VM N1. Pastikan model GPU yang Anda pilih tersedia di zona tempat Anda ingin memesan resource. Jika tidak, pembuatan pemesanan akan gagal.

  • Untuk menambahkan satu atau beberapa Disk SSD Lokal ke setiap VM yang dicadangkan, sertakan kolom localSsds dalam isi permintaan. Anda dapat menentukan hingga 24 disk SSD Lokal. Setiap disk SSD Lokal berukuran 375 GB.

    Misalnya, untuk membuat reservasi bersama sekaligus menentukan dua disk SSD Lokal dan dua project konsumen, buat permintaan sebagai berikut:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_1"
            },
            {
              "diskSizeGb": "375",
              "interface": "INTERFACE_2"
            }
          ],
          "machineType": "MACHINE_TYPE"
        }
      }
    }
    

    Ganti INTERFACE_1 dan INTERFACE_2 dengan jenis antarmuka yang ingin digunakan setiap disk SSD Lokal. Tentukan salah satu nilai berikut:

    • Antarmuka disk NVME: NVME

    • Antarmuka disk SCSI: SCSI

    Pastikan jenis mesin yang Anda tentukan untuk VM yang direservasi mendukung antarmuka disk yang dipilih. Jika tidak, pembuatan pemesanan akan gagal. Untuk informasi selengkapnya, lihat cara memilih antarmuka disk.

  • Agar VM yang direservasi menggunakan platform CPU minimum tertentu, bukan platform CPU default zona, sertakan kolom minCpuPlatform dalam isi permintaan.

    Misalnya, untuk membuat reservasi bersama sekaligus menentukan platform CPU minimum dan dua project konsumen, buat permintaan sebagai berikut:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE",
          "minCpuPlatform": "MIN_CPU_PLATFORM"
        }
      }
    }
    

    Ganti MIN_CPU_PLATFORM dengan platform CPU minimum. Untuk memastikan platform CPU tersedia di zona tempat Anda menyimpan resource, lihat platform CPU yang tersedia berdasarkan zona.

  • Untuk menentukan bahwa hanya VM yang secara khusus menargetkan pemesanan ini yang dapat menggunakannya, sertakan kolom specificReservationRequired dalam isi permintaan, dan tetapkan kolom ke true.

    Misalnya, untuk membuat reservasi tertentu dan membagikannya dengan dua project konsumen, buat permintaan sebagai berikut:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE"
        }
      },
      "specificReservationRequired": true
    }
    
  • Untuk mengizinkan reservasi VM GPU digunakan oleh tugas pelatihan kustom atau tugas prediksi di Vertex AI, buat permintaan POST ke metode beta.reservations.insert. Dalam isi permintaan, sertakan kolom serviceShareType dan tetapkan ke ALLOW_ALL.

    POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
    
    {
      "name": "RESERVATION_NAME",
      "reservationSharingPolicy": {
        "serviceShareType": "ALLOW_ALL"
      },
      "shareSettings": {
        "shareType": "SPECIFIC_PROJECTS",
        "projectMap": {
          "CONSUMER_PROJECT_ID_1": {
            "projectId": "CONSUMER_PROJECT_ID_1"
          },
          "CONSUMER_PROJECT_ID_2": {
            "projectId": "CONSUMER_PROJECT_ID_2"
          }
        }
      },
      "specificReservation": {
        "count": "NUMBER_OF_VMS",
        "instanceProperties": {
          "machineType": "MACHINE_TYPE"
        }
      }
    }
    
  • Agar Compute Engine dapat otomatis menghapus reservasi, pilih salah satu metode berikut:

    • Untuk menghapus pemesanan pada tanggal dan waktu tertentu, buat permintaan POST ke metode beta.reservations.insert. Dalam isi permintaan, sertakan kolom deleteAtTime.

      Misalnya, untuk membuat reservasi sekaligus menentukan tanggal dan waktu untuk menghapus reservasi, serta membagikan reservasi dengan dua project konsumen, buat permintaan sebagai berikut:

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAtTime": "DELETE_AT_TIME",
        "name": "RESERVATION_NAME",
        "shareSettings": {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap": {
            "CONSUMER_PROJECT_ID_1": {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2": {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        },
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "instanceProperties": {
            "machineType": "MACHINE_TYPE"
          }
        }
      }
      

      Ganti DELETE_AT_TIME dengan tanggal dan waktu yang diformat sebagai stempel waktu RFC 3339, yang harus seperti berikut:

      YYYY-MM-DDTHH:MM:SSOFFSET
      

      Ganti kode berikut:

      • YYYY-MM-DD: tanggal yang diformat sebagai tahun 4 digit, bulan 2 digit, dan hari 2 digit dalam sebulan, dipisahkan oleh tanda hubung (-).

      • HH:MM:SS: waktu yang diformat sebagai jam 2 digit menggunakan waktu 24 jam, menit 2 digit, dan detik 2 digit, yang dipisahkan oleh titik dua (:).

      • OFFSET: zona waktu yang diformat sebagai offset Waktu Universal Terkoordinasi (UTC). Misalnya, untuk menggunakan Waktu Standar Pasifik (PST), tentukan -08:00. Atau, untuk tidak menggunakan penyeimbang, tentukan Z.

    • Untuk menghapus pemesanan setelah durasi tertentu, buat permintaan POST ke metode beta.reservations.insert. Dalam isi permintaan, sertakan kolom deleteAfterDuration.

      Misalnya, untuk membuat reservasi yang dihapus Compute Engine setelah durasi tertentu, dan membagikan reservasi dengan dua project konsumen, buat permintaan sebagai berikut:

      POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/reservations
      
      {
        "deleteAfterDuration": {
          "seconds": "DELETE_AFTER_DURATION"
        },
        "name": "RESERVATION_NAME",
        "shareSettings": {
          "shareType": "SPECIFIC_PROJECTS",
          "projectMap": {
            "CONSUMER_PROJECT_ID_1": {
              "projectId": "CONSUMER_PROJECT_ID_1"
            },
            "CONSUMER_PROJECT_ID_2": {
              "projectId": "CONSUMER_PROJECT_ID_2"
            }
          }
        },
        "specificReservation": {
          "count": "NUMBER_OF_VMS",
          "instanceProperties": {
            "machineType": "MACHINE_TYPE"
          }
        }
      }
      

      Ganti DELETE_AFTER_DURATION dengan durasi dalam detik. Misalnya, tentukan 86400 selama 86.400 detik (1 hari).

Pemecahan masalah

Pelajari cara memecahkan masalah pembuatan pemesanan.

Langkah selanjutnya