Mengelola virtual machine di server yang terhubung dengan Distributed Cloud

Halaman ini menjelaskan cara mengelola virtual machine di server yang terhubung ke Google Distributed Cloud yang menjalankan VM Runtime di Google Distributed Cloud. Anda harus memahami VM Runtime di GDC sebelum menyelesaikan langkah-langkah di halaman ini. Untuk mengetahui daftar sistem operasi tamu yang didukung, lihat Sistem operasi tamu yang terverifikasi untuk VM Runtime di GDC.

Untuk mempelajari cara virtual machine berfungsi sebagai komponen penting platform Distributed Cloud terhubung, lihat Memperluas GKE Enterprise untuk mengelola VM edge lokal.

Cluster Distributed Cloud yang terhubung mendukung webhook mesin virtual. Hal ini memungkinkan Distributed Cloud terhubung untuk memvalidasi permintaan pengguna yang dibuat ke server Kubernetes API lokal. Permintaan yang ditolak menghasilkan informasi mendetail tentang alasan penolakan.

Mengonfigurasi Penyimpanan Symcloud

Server Google Distributed Cloud yang terhubung menggunakan Rakuten Symcloud Storage, sebagai solusi penyimpanan mereka. Symcloud Storage adalah solusi pihak ketiga yang berfungsi sebagai lapisan abstraksi penyimpanan lokal di setiap node yang terhubung ke Distributed Cloud dan membuat penyimpanan lokalnya tersedia untuk beban kerja yang berjalan di node lain yang terhubung ke Distributed Cloud.

Symcloud Storage di-deploy dari Google Cloud Marketplace dan tunduk pada persyaratan yang dinyatakan di dalamnya. Google memberikan dukungan terbatas untuk penggunaan Symcloud Storage dengan Distributed Cloud yang terhubung dan dapat menghubungi penyedia pihak ketiga untuk mendapatkan bantuan. Update software untuk Symcloud Storage disertakan dalam update software Distributed Cloud yang terhubung.

Konfigurasi cluster Google Distributed Cloud terhubung Anda sebagai berikut untuk mengaktifkan Symcloud Storage untuk virtual machine:

  1. Buat namespace robinio dengan perintah berikut:

    kubectl create ns robinio
    
  2. Dapatkan file lisensi Symcloud Storage dan terapkan ke cluster dengan perintah berikut:

    kubectl apply LICENSE_FILE
    
  3. Pastikan Symcloud Storage sudah aktif dan berjalan dengan perintah berikut:

    kubectl apply LICENSE_FILE
    

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

     Name:         robin
     Namespace:
     Labels:       app.kubernetes.io/instance=robin
                   app.kubernetes.io/managed-by=robin.io
                   app.kubernetes.io/name=robin
     Annotations:  <none>
     API Version:  manage.robin.io/v1
     Kind:         RobinCluster
     Metadata:
       
     Spec:
       
     Status:
       
       Phase:             Ready
       
    
  4. Buat class penyimpanan robin-block-immediate dengan menerapkan konfigurasi berikut ke cluster:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: robin-block-immediate
    parameters:
      faultdomain: host
      replication: "3"
      blocksize:   "512"
    provisioner: robin
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    
  5. Buat class snapshot volume robin-snapshotclass dengan menerapkan konfigurasi berikut ke cluster:

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: robin-snapshotclass
      labels:
        app.kubernetes.io/instance: robin
        app.kubernetes.io/managed-by: robin.io
        app.kubernetes.io/name: robin
      annotations:
        snapshot.storage.kubernetes.io/is-default-class: "true"
    driver: robin
    deletionPolicy: Delete
    

Mengaktifkan dukungan VM Runtime di GDC pada Distributed Cloud terhubung

Secara default, dukungan VM Runtime di mesin virtual GDC diaktifkan di Distributed Cloud terhubung. Jika Anda perlu mengaktifkannya secara manual, selesaikan langkah-langkah di bagian ini. Petunjuk di bagian ini mengasumsikan bahwa Anda memiliki cluster yang terhubung Distributed Cloud yang berfungsi sepenuhnya. Untuk menonaktifkan dukungan mesin virtual VM Runtime di GDC pada cluster Anda, urungkan perubahan yang dijelaskan di bagian ini.

Untuk mengaktifkan VM Runtime di subsistem virtual machine GDC, selesaikan langkah-langkah berikut:

  1. Ubah resource kustom VMRuntime dengan konten berikut dan terapkan ke cluster Anda:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      annotations:
        baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
        vm.cluster.gke.io/enable-vm-backup: "true"
    spec:
      enabled: true
      storage:
        defaultStorageClass: robin-block-immediate
    haPolicy:
      defaultRecoveryStrategy: Reschedule
      nodeHeartbeatInterval: 15s
      nodeMonitorGracePeriod: 55s

    Proses ini biasanya membutuhkan waktu beberapa menit hingga selesai.

  2. Gunakan perintah berikut untuk memverifikasi bahwa resource kustom VMRuntime telah diterapkan ke cluster Anda:

    kubectl get vmruntime
    

    Perintah ini menampilkan output yang mirip dengan contoh berikut:

    NAME        AGE   ENABLED   READY   PREFLIGHTCHECK
    vmruntime   5m   true      true    true
    
  3. Ubah storageprofile untuk kelas penyimpanan robin-block-immediate dengan konten berikut dan terapkan ke cluster Anda:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: robin-block-immediate
    spec:
      claimPropertySets:
        accessModes:
          ReadWriteMany
      volumeMode: Block

Instal alat pengelolaan virtctl

Anda memerlukan alat klien virtctl untuk mengelola virtual machine di cluster Distributed Cloud yang terhubung. Untuk menginstal alat, selesaikan langkah-langkah berikut:

  1. Instal alat klien virtctl sebagai plugin kubectl:

    export VERSION=v0.59.0-anthos1.28-gke.8
    gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl/usr/local/bin/virtctl
    cd /usr/local/bin
    sudo ln -s virtctl kubectl-virt
    sudo chmod a+x virtctl
    cd -
  2. Pastikan plugin virt telah diinstal:

    kubectl plugin list

    Jika plugin berhasil diinstal, output perintah akan mencantumkan kubectl-virt sebagai salah satu plugin.

Membuat bucket Cloud Storage untuk image virtual machine

Selesaikan langkah-langkah di bagian ini untuk membuat bucket Cloud Storage bagi image mesin virtual Anda. Jika Anda sudah memiliki repositori image yang ditetapkan, lewati bagian ini.

  1. Selesaikan langkah-langkah di Membuat bucket untuk membuat bucket.

  2. Konfigurasi akun layanan dan kunci untuk mengakses bucket dengan perintah berikut:

    export PROJECT_ID=$(gcloud config get-value project)
    gcloud iam service-accounts create image-access
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:image-access@${PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/storage.objectViewer" \
    gcloud iam service-accounts keys create ./image-access-gcr.json \
      --iam-account="image-access@${PROJECT_ID}.iam.gserviceaccount.com"
  3. Buat secret di cluster untuk mengakses bucket. Jika bucket Anda bersifat publik, lewati langkah ini. Secret ini harus ada di namespace yang sama dengan disk mesin virtual Anda. Anda harus membuat secret di setiap namespace yang terpengaruh.

    kubectl create secret generic gcs-image-sa --from-file=creds-gcp.json=./image-access-gcr.json -n NAMESPACE

    Ganti CLUSTER_ID dengan nama namespace target.

  4. Simpan gambar Anda di bucket.

Membuat disk virtual machine dari image virtual machine

Selesaikan langkah-langkah di bagian ini untuk membuat disk mesin virtual dari image mesin virtual.

Membuat disk dari image yang disimpan di Cloud Storage

Buat disk virtual machine dari virtual machine yang disimpan di bucket Cloud Storage Anda dengan menerapkan konfigurasi berikut ke cluster Anda:

 apiVersion: vm.cluster.gke.io/v1
 kind: VirtualMachineDisk
 metadata:
   name: DISK_NAME
   namespace: NAMESPACE
 spec:
   source:
     gcs:
       url: gs://{PROJECT_ID}-vm-images/IMAGE_FILE
       secretRef: gcs-image-sa
   size: DISK_SIZE
   storageClassName: robin-block-immediate

Ganti kode berikut:

  • DISK_NAME: nama disk virtual machine ini.
  • NAMESPACE: namespace target.
  • IMAGE_FILE: nama file image mesin virtual.
  • DISK_SIZE: ukuran disk yang diinginkan. Nilai ini harus lebih besar dari nilai virtual-size file image virtual machine. Anda dapat menemukan nilai ini dengan perintah qemu-img info DISK_SIZE.

Jika Anda tidak menentukan nilai storageClassName, nilai default yang ditentukan dalam resource VMRuntime akan digunakan.

Membuat disk dari image disk yang ada

Buat disk mesin virtual dari file image atau disk mesin virtual yang ada di cluster Anda sebagai berikut.

  1. Buat disk target dengan menerapkan konfigurasi berikut ke cluster Anda:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: IMAGE_DISK_NAME
      namespace: NAMESPACE
    spec:
      source:
        virtualMachineDisk:
          name: EXISTING_DISK_NAME
      size: DISK_SIZE
      storageClassName: robin-block-immediate

    Ganti kode berikut:

    • IMAGE_DISK_NAME: nama disk virtual machine ini.
    • NAMESPACE: namespace target.
    • EXISTING_DISK_NAME: nama disk mesin virtual yang ada.
    • DISK_SIZE: ukuran disk yang diinginkan. Ukuran ini harus sama dengan atau lebih besar dari ukuran file disk atau image yang ada.

    Anda dapat memperoleh ukuran file disk atau image yang ada menggunakan alat qemu-img sebagai berikut:

    qemu-img info EXISTING_DISK_NAME

    Jika Anda tidak menentukan nilai storageClassName, nilai default yang ditentukan dalam resource VMRuntime akan digunakan.

  2. Buat disk baru dari file image yang ada dengan menerapkan konfigurasi berikut ke cluster Anda:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
      namespace: NAMESPACE
    spec:
      source:
        virtualMachineDisk:
          name: IMAGE_DISK_NAME
      size: DISK_SIZE
      storageClassName: robin-block-immediate

    Ganti kode berikut:

    • IMAGE_DISK_NAME: nama disk mesin virtual yang Anda buat di langkah sebelumnya.
    • NAMESPACE: namespace target.
    • DISK_SIZE: ukuran disk yang diinginkan. Harus sama dengan ukuran disk virtual machine yang Anda buat di langkah sebelumnya.
  3. Ubah ukuran disk target ke ukuran yang diinginkan menggunakan perintah berikut:

    kubectl edit gdisk DISK_NAME -n NAMESPACE

    Ganti kode berikut:

    • DISK_NAME: nama disk mesin virtual yang Anda buat di langkah sebelumnya.
    • NAMESPACE: namespace target.
  4. Ubah nilai spec.size dalam konfigurasi disk dan terapkan ke cluster Anda.

Membuat disk kosong

Buat disk virtual machine kosong dengan menerapkan konfigurasi berikut ke cluster Anda:

 apiVersion: vm.cluster.gke.io/v1
 kind: VirtualMachineDisk
 metadata:
   name: DISK_NAME
   namespace: NAMESPACE
 spec:
   size: DISK_SIZE
   storageClassName: robin-block-immediate

Ganti kode berikut:

  • DISK_NAME: nama disk virtual machine ini.
  • NAMESPACE: namespace target.
  • DISK_SIZE: ukuran disk yang diinginkan dalam gibibyte. Nilai ini harus lebih besar dari nilai virtual-size file image virtual machine. Anda dapat menemukan nilai ini dengan perintah qemu-img info DISK_SIZE.

Jika Anda tidak menentukan nilai storageClassName, nilai default yang ditentukan dalam resource VMRuntime akan digunakan.

Mengonfigurasi jaringan virtual

Ikuti langkah-langkah di Networking untuk mengonfigurasi jaringan virtual bagi mesin virtual Anda.

Membuat virtual machine

Selesaikan langkah-langkah di bagian ini untuk membuat virtual machine di deployment server yang terhubung ke Distributed Cloud. Petunjuk di bagian ini adalah contoh yang dimaksudkan untuk mengilustrasikan konfigurasi untuk berbagai skenario. Untuk mengetahui informasi mendetail tentang cara mengonfigurasi mesin virtual, lihat Membuat VM dengan resource CPU dan memori tertentu menggunakan VM Runtime di GDC.

Membuat virtual machine menggunakan konsol Google Cloud

Untuk membuat virtual machine menggunakan konsol Google Cloud , lakukan hal berikut:

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

  2. Pilih project Google Cloud target.

  3. (Opsional) Jika Anda belum melakukannya, login ke cluster target:

    1. Di panel navigasi kiri, klik Cluster.

    2. Di daftar Anthos Managed Clusters, klik target cluster.

    3. Di panel informasi di sisi kanan, klik LOGIN.

    4. Pada dialog pop-up yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.

  4. Buka halaman Virtual Machines.

    Buka Virtual Machines

  5. Klik BUAT.

  6. Di bagian Dasar-Dasar, lakukan hal berikut:

    1. Di kolom Name, masukkan nama yang bermakna untuk mesin virtual.

    2. Di kolom Select cluster, pilih cluster target untuk mesin virtual.

    3. Di kolom Namespace, pilih namespace target.

    4. Di kolom OS Type, pilih sistem operasi target.

    5. (Opsional) Jika Anda ingin menambahkan satu atau beberapa label ke konfigurasi virtual machine ini, klik TAMBAHKAN LABEL.

  7. Di bagian Machine Configuration, lakukan salah satu hal berikut:

    • Jika Anda ingin menentukan jumlah vCPU dan jumlah memori untuk virtual machine ini, pilih Konfigurasi Kustom dan masukkan nilai target, lalu klik BERIKUTNYA.

    • Jika Anda ingin menggunakan sejumlah vCPU dan jumlah memori yang telah ditentukan untuk mesin virtual ini, pilih Konfigurasi Standar dan pilih konfigurasi mesin dari daftar drop-down Jenis Mesin, lalu klik BERIKUTNYA.

  8. Di bagian Storage, lakukan salah satu hal berikut:

    • Jika Anda ingin membuat disk virtual baru untuk mesin virtual ini, pilih Tambahkan disk baru, lalu masukkan nama yang bermakna di kolom Nama, ukuran dalam gigabyte di kolom GiB, dan URL di kolom Image.

    • Jika Anda ingin menggunakan disk virtual yang ada untuk mesin virtual ini, pilih Pilih disk yang ada, lalu pilih image disk target dari menu drop-down Pilih disk.

    • Tentukan apakah Anda ingin disk bersifat hanya baca dan apakah disk akan otomatis dihapus saat mesin virtual ini dihapus menggunakan kotak centang Hanya baca dan Hapus otomatis.

    • Tentukan driver disk virtual di menu drop-down Driver.

    • Untuk menambahkan disk lain ke mesin virtual ini, klik TAMBAHKAN DISK di bagian Disk tambahan.

    • Klik NEXT.

  9. Di bagian Network, lakukan hal berikut:

    1. Di subbagian Default network interface, tentukan nama antarmuka jaringan utama untuk mesin virtual ini di kolom Interface name.

    2. Pilih jenis jaringan yang sesuai dari daftar drop-down Network type.

    3. Tentukan apakah akan mengizinkan akses eksternal ke antarmuka jaringan ini menggunakan kotak centang Izinkan akses eksternal. Jika mengaktifkan opsi ini, Anda harus memasukkan daftar port yang dipisahkan koma untuk diekspos secara eksternal di kolom Exposed ports.

    4. Jika Anda ingin menambahkan satu atau beberapa antarmuka jaringan sekunder ke mesin virtual ini, klik TAMBAHKAN ANTARMUKA JARINGAN.

    5. Klik NEXT.

  10. Di bagian Advanced options, gunakan kotak Auto-restart on update untuk menentukan apakah akan memulai ulang mesin virtual ini setelah software yang terhubung ke Distributed Cloud di cluster target diupdate.

  11. Di bagian Firmware, lakukan hal berikut:

    1. Pilih jenis firmware target di kolom Bootloader type. Jika memilih firmware UEFI, Anda memiliki opsi untuk mengaktifkan booting aman menggunakan kotak centang Booting aman.

    2. Tentukan nomor seri untuk virtual machine ini di kolom Serial.

    3. Tentukan ID Unik Universal (UUID) untuk virtual machine ini di kolom UUID.

  12. Di bagian Cloud-init, lakukan hal berikut:

    • Tentukan nilai rahasia data jaringan di kolom Rahasia data jaringan.

    • Tentukan nilai rahasia data pengguna di kolom Rahasia data pengguna.

  13. Klik CREATE VM untuk membuat virtual machine.

Membuat virtual machine dari file YAML

Untuk membuat virtual machine dari file konfigurasi YAML, lakukan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

  2. Pilih project Google Cloud target.

  3. (Opsional) Jika Anda belum melakukannya, login ke cluster target:

    1. Di panel navigasi kiri, klik Cluster.

    2. Di daftar Anthos Managed Clusters, klik target cluster.

    3. Di panel informasi di sisi kanan, klik LOGIN.

    4. Pada dialog pop-up yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.

  4. Buka halaman Virtual Machines.

    Buka Virtual Machines

  5. Klik BUAT DENGAN YAML.

  6. Di kolom Select cluster, pilih cluster target untuk mesin virtual.

  7. Tempelkan konfigurasi mesin virtual dalam format YAML ke kolom YAML.

  8. Klik BUAT.

Membuat virtual machine dari image disk yang dapat di-boot

Untuk membuat mesin virtual dari disk image yang dapat di-boot, terapkan konfigurasi berikut ke cluster Anda:

kind: VirtualMachine
metadata:
  name: my-virtual-machine
  namespace: my-vm-namespace
spec:
  osType: Linux/Windows
  guestEnvironment: {} // comment out this line to enable guest environment for access management
  autoRestartOnConfigurationChange: true 
  compute:
    cpu:
      vcpus: 6
    memory:
      capacity: 8Gi
  interfaces:
      - name: eth0
        networkName: network-410
        ipAddresses:
        - 10.223.237.10/25
  disks:
    - virtualMachineDiskName: my-boot-disk
      boot: true
    - virtualMachineDiskName: my-data-disk

Ganti kode berikut:

  • DISK_NAME: nama disk virtual machine ini.
  • NAMESPACE: namespace target.

Membuat mesin virtual dari image disk optik ISO

Untuk membuat mesin virtual dari image disk optik ISO, selesaikan langkah-langkah di bagian Membuat VM Windows dari image ISO di Google Distributed Cloud.

Membuat mesin virtual dengan dukungan GPU

Selesaikan langkah-langkah yang dijelaskan di halaman ini untuk membuat virtual machine yang dikonfigurasi agar memenuhi persyaratan bisnis Anda, lalu selesaikan langkah-langkah di Mengonfigurasi virtual machine untuk menggunakan resource GPU.

Mengakses virtual machine

Selesaikan langkah-langkah di bagian ini untuk mengakses virtual machine yang berjalan di deployment server yang terhubung ke Distributed Cloud Anda.

Mendapatkan kredensial akses

Selesaikan langkah-langkah di bagian ini untuk mendapatkan kredensial yang diperlukan guna mengakses virtual machine menggunakan fitur lingkungan tamu Linux.

  1. Aktifkan lingkungan tamu Linux untuk mesin virtual target dengan menerapkan konfigurasi berikut ke cluster Anda:

    kind: VirtualMachine
    metadata:
     name: my-virtual-machine
     namespace: my-vm-namespace
    spec:
     osType: Linux
     guestEnvironment: {}
     autoRestartOnConfigurationChange: true 
  2. Buat file id_rsa.pub yang berisi pasangan kunci SSH dengan perintah berikut:

    ssh-keygen -t rsa
  3. Buat resource VirtualMachineAccessRequest dengan menerapkan konfigurasi berikut ke cluster Anda:

    apiVersion: vm.cluster.gke.io/v1alpha1
    kind: VirtualMachineAccessRequest
    metadata:
     name: RESOURCE_NAME
     namespace: NAMESPACE
    spec:
      vm: VM_NAME
      user: USER_NAME
      ssh:
        key: RSA_KEY
        ttl: 2h

Ganti kode berikut:

  • RESOURCE_NAME: nama deskriptif untuk resource permintaan akses mesin virtual ini.
  • NAMESPACE: namespace target.
  • VM_NAME: nama virtual machine target.
  • USER_NAME: nama pengguna yang diberi akses.
  • RSA_KEY: konten file id_rsa.pub yang Anda buat pada langkah sebelumnya.
  1. Periksa status permintaan akses dengan perintah berikut:

    kubectl get vmar
    

    Saat perintah menampilkan status Configured, lanjutkan ke langkah berikutnya.

  2. Akses virtual machine dengan SSH atau Desktop Jarak Jauh:

    • Jika mesin virtual terhubung ke jaringan lokal, Anda dapat mengaksesnya secara langsung.
    • Jika mesin virtual terhubung ke jaringan Pod, Anda harus membuat layanan load balancer untuk mengakses port yang diperlukan.

Memulai, memulai ulang, atau menghentikan virtual machine

Gunakan perintah berikut untuk memulai, memulai ulang, atau menghentikan virtual machine:

  • Mulai virtual machine: kubectl virt start vmVM_NAME-nNAMESPACE
  • Mulai ulang virtual machine: kubectl virt restart vmVM_NAME-nNAMESPACE
  • Menghentikan virtual machine: kubectl virt stop vmVM_NAME-nNAMESPACE

Ganti kode berikut:

  • VM_NAME: nama virtual machine target.
  • NAMESPACE: namespace target.

Memulai atau menghentikan virtual machine menggunakan konsol Google Cloud

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

  2. Pilih project Google Cloud target.

  3. (Opsional) Jika Anda belum melakukannya, login ke cluster target:

    1. Di panel navigasi kiri, klik Cluster.

    2. Di daftar Anthos Managed Clusters, klik target cluster.

    3. Di panel informasi di sisi kanan, klik LOGIN.

    4. Pada dialog yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.

  4. Buka halaman Virtual Machines.

    Buka Virtual Machines

  5. Dalam daftar mesin virtual, centang kotak untuk mesin virtual target.

  6. Di bagian atas halaman, klik MULAI atau HENTIKAN sesuai kebutuhan.

Melihat status virtual machine menggunakan konsol Google Cloud

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

  2. Pilih project Google Cloud target.

  3. (Opsional) Jika Anda belum melakukannya, login ke cluster target:

    1. Di panel navigasi kiri, klik Cluster.

    2. Di daftar Anthos Managed Clusters, klik target cluster.

    3. Di panel informasi di sisi kanan, klik LOGIN.

    4. Pada dialog pop-up yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.

  4. Buka halaman Virtual Machines.

    Buka Virtual Machines

  5. Klik virtual machine target.

  6. Di halaman yang muncul, klik tab Details, Events, dan YAML untuk melihat informasi yang sesuai tentang mesin virtual ini.

Mengubah mesin virtual

Untuk mengubah virtual machine, Anda harus menghapusnya dan membuatnya ulang dengan konfigurasi yang telah diupdate.

Menghapus virtual machine menggunakan konsol Google Cloud

  1. Di konsol Google Cloud , buka halaman Clusters.

    Buka Cluster

  2. Pilih project Google Cloud target.

  3. (Opsional) Jika Anda belum melakukannya, login ke cluster target:

    1. Di panel navigasi kiri, klik Cluster.

    2. Di daftar Anthos Managed Clusters, klik target cluster.

    3. Di panel informasi di sisi kanan, klik LOGIN.

    4. Pada dialog yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.

  4. buka halaman Virtual Machines.

    Buka Virtual Machines

  5. Dalam daftar virtual machine, centang kotak untuk virtual machine target.

  6. Di bagian atas halaman, klik HAPUS.

  7. Pada dialog konfirmasi yang muncul, masukkan nama mesin virtual, lalu klik DELETE.

Mencadangkan mesin virtual

Bagian ini menjelaskan cara mengonfigurasi lingkungan untuk mencadangkan workload virtual machine dan cara mengelola cadangan Anda. Untuk mengaktifkan fitur ini, hubungi perwakilan Google Anda.

Prasyarat

  1. Jika belum melakukannya, buat resource kustom robin-block-immediate berjenis StorageClass dengan konten berikut dan terapkan ke cluster Anda:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
     name: robin-block-immediate
     annotations:
       storageclass.kubernetes.io/is-default-class: "true"
    parameters:
     faultdomain: host
     replication: "3"
     blocksize:   "512"
    provisioner: robin
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
  2. Jika Anda belum melakukannya, buat resource kustom robin-snapshotclass berjenis VolumeSnapshotClass dengan konten berikut dan terapkan ke cluster Anda:

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
     name: robin-snapshotclass
     labels:
       app.kubernetes.io/instance: robin
       app.kubernetes.io/managed-by: robin.io
       app.kubernetes.io/name: robin
     annotations:
       snapshot.storage.kubernetes.io/is-default-class: "true"
    driver: robin
    deletionPolicy: Delete

Membuat repositori pencadangan online

Repositori pencadangan online adalah lokasi penyimpanan online yang kompatibel dengan S3 untuk cadangan virtual machine Anda. Layanan ini juga menyimpan catatan pencadangan, rencana pencadangan, rencana pemulihan, dan berfungsi sebagai tujuan untuk memulihkan cadangan virtual machine.

Selesaikan langkah-langkah berikut untuk membuat repositori pencadangan online bagi mesin virtual Anda:

  1. Buat bucket Cloud Storage seperti yang dijelaskan dalam Membuat bucket.

  2. Buat akun layanan dan kunci untuk mengakses bucket menggunakan perintah berikut:

    export PROJECT_ID=$(gcloud config get-value project)
    export SVC_ACCOUNT=backup-access
    gcloud iam service-accounts create $SVC_ACCOUNT
    gcloud projects add-iam-policy-binding $PROJECT_ID \ 
       --member="serviceAccount:${SVC_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
       --role="roles/backupdr.cloudStorageOperator"
    gcloud storage hmac create  ${SVC_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com > hmac_temp_key_file
    awk 'NR==1{print "ACCESS_ID=" $NF} NR==2{print "SECRET=" $NF}' < hmac_temp_key_file > hmac_key_file
  3. Konfigurasi secret untuk mengakses bucket cadangan menggunakan perintah berikut:

    source ./hmac_key_file
    kubectl create secret generic SECRET_NAME \
       --from-literal=access-key=$SECRET \
       --from-literal=access-key-id=$ACCESS_ID -n NAMESPACE
    

    Ganti kode berikut:

    • SECRET_NAME: nama deskriptif untuk secret ini.
    • NAMESPACE: namespace target.
  4. Buat resource BackupRepository dengan menerapkan konfigurasi berikut ke cluster Anda:

    apiVersion: backup.gdc.goog/v1
    kind: BackupRepository
    metadata:
      name: "REPOSITORY_NAME"
    spec:
      secretReference:
        namespace: NAMESPACE
        name: gcs-hmac-secret
      endpoint: "https://storage.googleapis.com"
      type: "S3"
      s3Options:
        bucket: "BUCKET_NAME"
        region: "REGION"
        forcePathStyle: true
      importPolicy: "ReadWrite"
    # Force attachment for convenience.
    force: true

    Ganti kode berikut:

    • REPOSITORY_NAME: nama deskriptif untuk repositori.
    • BUCKET_NAME: nama bucket cadangan.
    • NAMESPACE: namespace target.
    • REGION: Google Cloud region tempat cluster Distributed Cloud target dibuat.
  5. Verifikasi bahwa cluster dapat mengakses repositori cadangan menggunakan perintah berikut:

    kubectl get BackupRepository
    

Membuat repositori cadangan lokal

Repositori cadangan lokal adalah lokasi penyimpanan yang kompatibel dengan S3 untuk cadangan virtual machine Anda yang berada secara lokal di cluster yang terhubung ke Distributed Cloud Anda. Repositori cadangan lokal secara fungsional identik dengan repositori cadangan online.

  1. Buat kunci enkripsi AES256 untuk digunakan dalam enkripsi konfigurasi tingkat aplikasi:

    openssl rand -base64 32
    

    Perintah ini menghasilkan kunci acak 256-bit yang dienkode base64. Contoh:

    aBcD_eFgH1iJkLmN0pQrStUvWxFyZgAhIjKlMnOpQ=
    
  2. Encode ganda kunci untuk digunakan sebagai payload dalam konfigurasi YAML untuk resource BackupRepository:

    echo -n "AES_KEY" | base64
    

    Ganti AES_KEY dengan kunci AES256 yang dienkode base64 yang Anda buat di langkah sebelumnya. Simpan kunci ini dalam file lokal.

  3. Konfigurasi secret untuk mengakses repositori cadangan menggunakan perintah berikut:

    kubectl create secret generic SECRET_NAME \
       --from-literal=access-key=ENCODED_AES_KEY \
       --namespace NAMESPACE
    

    Ganti kode berikut:

    • ENCODED_AES_KEY: kunci AES256 berenkode ganda yang Anda buat pada langkah sebelumnya.
    • SECRET_NAME: nama deskriptif untuk secret ini.
    • NAMESPACE: namespace target.
  4. Konfigurasi BackupRepository dengan menerapkan konfigurasi berikut ke cluster Anda:

    apiVersion: backup.gdc.goog/v1
    kind: BackupRepository
    metadata:
      name: REPOSITORY_NAME
    spec:
      force: true
      importPolicy: ReadWrite
      localOptions:
        encryptionKey:
          name: SECRET_NAME
          namespace: NAMESPACE
      type: Local
  5. Verifikasi bahwa cluster dapat mengakses repositori cadangan menggunakan perintah berikut:

    kubectl get BackupRepository
    

    Ganti kode berikut:

    • REPOSITORY_NAME: nama deskriptif untuk repositori.
    • SECRET_NAME: nama secret Kubernetes yang Anda buat di langkah sebelumnya.
    • NAMESPACE: namespace tempat Anda membuat secret Kubernetes.

Buat rencana cadangan

Rencana cadangan menentukan penjadwalan otomatis untuk menjalankan pencadangan mesin virtual Anda. Buat resource VirtualMachineBackupPlan dengan konten berikut dan terapkan ke cluster Anda:

apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachineBackupPlan
metadata:
  name: BACKUP_PLAN_NAME
  namespace: NAMESPACE
spec:
  backupConfig:
    backupRepository: REPOSITORY_NAME
    backupScope:
      selectedVirtualMachines:
      - resourceName: VM_NAME
    volumeStrategy: LocalSnapshotOnly
  backupSchedule:
    cronSchedule: "CRON_SCHEDULE"
    paused: PAUSED
  retentionPolicy:
    backupDeleteLockDays: PLAN_LOCK_LENGTH
    backupRetainDays: 4
    locked: RETENTION_POLICY_LOCKED
  numBackupsToRetain: BACKUPS_RETAINED

Ganti kode berikut:

  • BACKUP_PLAN_NAME: nama deskriptif untuk rencana cadangan.
  • NAMESPACE: nama namespace target.
  • REPOSITORY_NAME: repositori cadangan target.
  • CRON_SCHEDULE: Jadwal standar cron untuk menjalankan pencadangan. Interval minimum yang diizinkan antar-pencadangan adalah 10 menit.
  • PAUSED: menentukan apakah rencana cadangan ini dijeda. Nilai yang valid adalah true dan false.
  • VM_NAME: menentukan beban kerja virtual machine yang akan dicadangkan melalui rencana pencadangan ini. Anda dapat menentukan beberapa resource virtual machine per rencana pencadangan.
  • * BACKUP_LOCK_LENGTH: menentukan jumlah hari setelah pembuatan cadangan selama cadangan tidak dapat dihapus.
  • * BACKUP_RETENTION_LENGTH: menentukan jumlah hari untuk menyimpan cadangan ini. Saat periode retensi berakhir, cadangan akan dihapus. Jika dihilangkan, setelan defaultnya adalah 4.
  • * RETENTION_POLICY_LOCKED: menentukan apakah kebijakan retensi rencana cadangan ini dikunci. Nilai yang valid adalah true dan false.
  • * BACKUPS_RETAINED/var>: menentukan jumlah cadangan yang akan dipertahankan dalam rencana cadangan ini. Jika batas ini tercapai, cadangan akan dihapus dalam urutan dari yang terlama hingga terbaru.

Mencantumkan rencana pencadangan yang ada

Untuk mencantumkan rencana cadangan yang ada, gunakan perintah berikut:

kubectl get VirtualMachineBackupPlans -A

Perintah ini akan menampilkan output yang mirip dengan berikut ini:

NAMESPACE      NAME                                LASTBACKUPTIME   LASTBACKUPSTATE   NEXTBACKUPTIME   PAUSED
vm-workloads   bkp-template-vm-windows-vm-local
vm-workloads   sched-snapshotonly-bkp-plan-10min                                                       false

Membuat cadangan manual mesin virtual

Selesaikan langkah-langkah di bagian ini untuk membuat pencadangan manual virtual machine.

  1. Buat resource VirtualMachineBackupPlanTemplate di namespace tempat virtual machine target berada dengan menerapkan konfigurasi berikut ke cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineBackupPlanTemplate
    metadata:
      name: TEMPLATE_NAME
      namespace: NAMESPACE
    spec:
      backupRepository: REPOSITORY_NAME

    Ganti kode berikut:

    • TEMPLATE_NAME: nama deskriptif untuk template cadangan ini.
    • REPOSITORY_NAME: nama repositori cadangan target.
    • NAMESPACE: namespace target.
  2. Picu pencadangan dengan membuat resource VirtualMachineBackupRequest dengan konfigurasi berikut dan menerapkannya ke cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineBackupRequest
    metadata:
      name: BACKUP_REQUEST_NAME
      namespace: NAMESPACE
    spec:
      vmBackupPlanTemplate: TEMPLATE_NAME
      virtualMachine: VM_NAME
      vmBackupName: BACKUP_NAME

    Ganti kode berikut:

    • BACKUP_REQUEST_NAME: nama deskriptif untuk permintaan pencadangan ini.
    • TEMPLATE_NAME: nama template cadangan yang Anda buat di langkah sebelumnya.
    • NAMESPACE: nama namespace target.
    • VM_NAME: nama virtual machine target.
    • BACKUP_NAME: nama deskriptif untuk cadangan ini.
  3. Verifikasi integritas cadangan dengan perintah berikut:

    kubectl get vmbackup BACKUP_NAME -n NAMESPACE
    

    Ganti kode berikut:

    • BACKUP_NAME: nama cadangan target.
    • NAMESPACE: namespace target.

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineBackup
    metadata:
      creationTimestamp: "2024-04-09T17:57:44Z"
      finalizers:
      - vm.cluster.gke.io/virtual-machine-backup-finalizer
      generation: 1
      name: vmt13-backup-0409-2
      namespace: default
      ownerReferences:
      - apiVersion: backup.gdc.goog/v1
        kind: Backup
        name: vmt13-backup-0409-2
        uid: 0ee0b92c-1e27-48cc-8f8f-5606ea925e88
      resourceVersion: "36192759"
      uid: e471f8c7-637c-485f-acda-108017a5638f
    spec:
      backupConfig:
        backupRepository: default
        backupScope:
          selectedVirtualMachines:
          - resourceName: vm-t13
        volumeStrategy: Portable
      vmBackupPlan: MyVmPlan-vm-vm-t13-portable
    status:
      backedUpVirtualMachineDisks:
      - vm-t13-boot-disk
      - vm-t13-data-disk
      backedUpVirtualMachines:
      - vm-t13
      backup: vmt13-backup-0409-2
      backupStatus:
        clusterMetadata:
          k8sVersion: "1.28"
        completeTime: "2024-04-09T18:07:36Z"
        createTime: "2024-04-09T17:57:44Z"
        jobCreated: true
        resourceCount: 849
        sizeBytes: 1948672
        state: Succeeded
    

Mencantumkan cadangan virtual machine

Untuk melihat cadangan mesin virtual yang ada, gunakan perintah berikut:

kubectl get VirtualMachineBackups -A

Perintah ini akan menampilkan output yang mirip dengan berikut ini:

NAMESPACE      NAME        STATE       CREATETIME
vm-workloads   vm-backup   Succeeded   2025-04-08T04:37:32Z

Memulihkan virtual machine dari cadangan

Selesaikan langkah-langkah di bagian ini untuk memulihkan virtual machine dari cadangan.

  1. Picu proses pemulihan dengan membuat resource VirtualMachineRestoreRequest dengan konfigurasi berikut dan menerapkannya ke cluster Anda:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineRestoreRequest
    metadata:
      name: restore-req
      namespace: NAMESPACE
    spec:
      vmBackup: BACKUP_NAME
      restoreName: RESTORE_NAME
      restoredResourceName: RESTORED_VM_NAME
      restoredResourceDescription: RESTORE_DESCRIPTION

    Ganti kode berikut:

    • BACKUP_NAME: nama cadangan target.
    • RESTORE_NAME: nama deskriptif untuk operasi pemulihan ini.
    • NAMESPACE: namespace target.
    • RESTORED_VM_NAME: nama yang diberikan ke mesin virtual selama pemulihan. Nama ini tidak boleh bertentangan dengan virtual machine yang sudah ada di cluster.
    • RESTORE_DESCRIPTION: deskripsi untuk operasi pemulihan ini.
  2. Gunakan perintah berikut untuk memeriksa progres operasi pemulihan:

    kubectl get virtualmachinerestores.vm.cluster.gke.io RESTORE_NAME -n NAMESPACE
    

    Ganti kode berikut:

    • RESTORE_NAME: nama operasi pemulihan target.
    • NAMESPACE: namespace target.

    Perintah ini akan menampilkan output yang mirip dengan berikut ini:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineRestore
    metadata:
      creationTimestamp: "2024-04-09T18:09:51Z"
      finalizers:
      - vm.cluster.gke.io/virtual-machine-restore-finalizer
      generation: 1
      name: vmt13-restore-0409-2-1
      namespace: default
      ownerReferences:
      - apiVersion: backup.gdc.goog/v1
        kind: Restore
        name: vmt13-restore-0409-2-1
        uid: 4ce1ca83-eba0-4cc3-bad3-af6cf9185d7d
      resourceVersion: "36194596"
      uid: aba50b59-e18d-4687-ad11-47baa45478b4
    spec:
      targetVirtualMachineDisks:
      - vm-t13-boot-disk
      - vm-t13-data-disk
      targetVirtualMachines:
      - vm-t13
      vmBackup: vmt13-backup-0409-2
    status:
      restore: vmt13-restore-0409-2-1
      restoreStatus:
        completeTime: "2024-04-09T18:10:00Z"
        jobCreated: true
        resourcesRestoredCount: 5
        restoredVolumesCount: 2
        startTime: "2024-04-09T18:09:51Z"
        state: Succeeded
        stateReason: restore is successful
    

Melihat operasi pemulihan

Untuk melihat operasi pemulihan yang dimulai hingga saat ini, gunakan perintah berikut:

kubectl get VirtualMachineRestore.vm.cluster.gke.io -A

Perintah ini akan menampilkan output yang mirip dengan berikut ini:

NAMESPACE      NAME        STARTTIME              RESTORE     STATE
vm-workloads   restore-1   2025-04-08T04:41:04Z   restore-1   Succeeded

Menghapus cadangan virtual machine

Untuk menghapus cadangan mesin virtual, buat resource VirtualMachineDeleteBackupRequest dengan konfigurasi berikut dan terapkan ke cluster Anda:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDeleteBackupRequest
    metadata:
      name: vmdbr
      namespace: BACKUP_NAME
    spec:
      vmBackup: NAMESPACE
   

Ganti kode berikut:

  • NAMESPACE: nama namespace target.
  • BACKUP_NAME: nama cadangan target.

Melihat log audit pengujian AppArmor

Distributed Cloud yang terhubung secara otomatis melakukan sandbox pada beban kerja virtual machine dengan kebijakan AppArmor di audit-mode. Pelanggaran kebijakan akan memunculkan entri log audit. Contoh:

{
  "jsonPayload": {
    "_SOURCE_REALTIME_TIMESTAMP": "1734596844149104",
    "SYSLOG_TIMESTAMP": "Dec 19 08:27:24 ",
    "MESSAGE": "type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"",
    "PRIORITY": "6",
    ...
    "SYSLOG_RAW": "<14>Dec 19 08:27:24 audisp-syslog: type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"\n",
    "SYSLOG_IDENTIFIER": "audisp-syslog",
    "_GID": "0",
  },
  "timestamp": "2024-12-19T08:27:24.149109Z",
  "labels": {
    "gke.googleapis.com/log_type": "system"
  },
  "receiveTimestamp": "2024-12-19T08:27:24.721842807Z"
  ...
  ...
}

Langkah berikutnya