Mengedit konfigurasi VM di Runtime VM di GDC

Dokumen ini ditujukan bagi pemilik aplikasi yang menggunakan VM Runtime di GDC untuk menjalankan virtual machine (VM) di GKE pada Bare Metal. Dokumen ini menunjukkan cara mengedit VM yang berjalan di GKE pada cluster Bare Metal. Misalnya, Anda dapat mengedit alokasi resource, seperti CPU dan memori, atau mengubah jaringan tempat VM terhubung.

Anda dapat mengubah kolom apa pun di bagian spec pada referensi VirtualMachine. Anda juga dapat mengedit label untuk VM. Kolom lain, seperti nama VM (metadata.name), tidak dapat diedit. Secara default, VM harus dalam status Stopped sebelum Anda mengedit resource. Namun, mulai dari GKE pada Bare Metal versi 1.13.0, Anda dapat mengonfigurasi resource VirtualMachine agar dimulai ulang secara otomatis setiap kali konfigurasi diubah.

Jika pengeditan Anda pada resource VirtualMachine berisi error saat menyimpannya, perubahan akan ditolak dan Anda akan melihat notifikasi. Perbaiki error dan coba simpan resource VirtualMachine lagi. Jika VM tidak dimulai setelah Anda melakukan perubahan, gunakan perintah kubectl describe gvm VM_NAME untuk melihat informasi pemecahan masalah dan memperbaiki error.

Sebelum memulai

Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke referensi berikut:

Edit resource komputasi

Jika tuntutan workload komputasi berubah, Anda dapat memperbarui jumlah CPU virtual dan jumlah memori virtual yang Anda tetapkan ke VM. Untuk mengedit workload komputasi, selesaikan langkah-langkah berikut:

  1. Hentikan VM yang ingin Anda edit:

    kubectl virt stop VM_NAME
    

    Ganti VM_NAME dengan nama VM yang ingin Anda hentikan.

  2. Gunakan kubectl untuk mengedit VM:

    kubectl edit gvm VM_NAME
    

    Ganti VM_NAME dengan nama VM yang ingin Anda edit.

  3. Di editor, perbarui nilai resource komputasi yang ingin Anda ubah.

    Misalnya, contoh manifes VirtualMachine berikut menunjukkan bahwa resource VM memiliki 2 vCPU yang ditetapkan:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 2
    ...
    

    Jika Anda ingin memperbarui jumlah vCPU yang ditetapkan, ubah nilai di editor, seperti yang ditunjukkan dalam contoh berikut:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 4
    ...
    
  4. Simpan dan tutup manifes VM.

  5. Mulai VM yang Anda edit:

    kubectl virt start VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda edit.

  6. Periksa STATUS pada VM Anda:

    kubectl get gvm VM_NAME
    

    Pastikan VM Anda dalam status Running. Jika VM meminta lebih banyak resource komputasi daripada yang dapat disediakan host, VM Anda tidak dapat dimulai. Jika VM tidak dalam status Running, periksa manifes resource VirtualMachine dan ketersediaan resource komputasi di host.

    Contoh output berikut menampilkan VM dalam status Running:

    NAME   STATUS    AGE   IP
    vm1    Running   1m    192.168.2.72
    
  7. Lihat informasi mendetail tentang VM yang menggunakan kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda edit.

    Contoh output berikut menunjukkan informasi ringkas untuk VM, dengan perubahan pada jumlah vCPU yang berhasil diterapkan:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
        Cpu:
          Vcpus:  4
    ...
    

Untuk mengetahui informasi selengkapnya, lihat cara membuat VM dengan konfigurasi vCPU dan memori komputasi tertentu.

Mengedit resource disk

Jika persyaratan penyimpanan Anda berubah, Anda dapat menambahkan atau menghapus disk virtual ke VM. Untuk mengedit disk yang terpasang ke VM Anda, selesaikan langkah-langkah berikut:

  1. Hentikan VM yang ingin Anda edit:

    kubectl virt stop VM_NAME
    

    Ganti VM_NAME dengan nama VM yang ingin Anda hentikan.

  2. Gunakan kubectl untuk mengedit VM:

    kubectl edit gvm VM_NAME
    

    Ganti VM_NAME dengan nama VM yang ingin Anda edit.

  3. Di editor Anda, perbarui bagian spec.disks untuk memasang atau melepas disk.

    Misalnya, contoh manifes VirtualMachine berikut menunjukkan bahwa hanya boot disk yang terpasang ke VM:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
      ...
    

    Jika ingin menambahkan disk kosong yang ada, perbarui konfigurasi disk di editor Anda, seperti yang ditunjukkan dalam contoh berikut:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
        - virtualMachineDiskName: DISK_NAME
      ...
    

    Ganti DISK_NAME dengan nama disk yang akan dipasang.

  4. Simpan dan tutup manifes VM.

  5. Mulai VM yang Anda edit:

    kubectl virt start VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda edit.

  6. Periksa STATUS pada VM Anda:

    kubectl get gvm VM_NAME
    

    Pastikan VM Anda dalam status Running. Jika VM meminta StorageClass atau penetapan disk yang tidak dapat diberikan oleh host, VM tidak dapat dimulai. Jika VM tidak dalam status Running, periksa manifes resource VirtualMachine dan VirtualMachineDisk Anda, serta dukungan penyimpanan host.

  7. Lihat informasi mendetail tentang VM yang menggunakan kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda edit.

    Contoh output berikut menunjukkan informasi yang dipadatkan untuk VM, dengan perubahan pada disk yang terpasang yang berhasil diterapkan:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Disks:
        Name:  vm1-boot-dv
        Name:  data-disk-01
    ...
    

Untuk mengetahui informasi selengkapnya, lihat cara membuat dan mengelola disk.

Edit resource jaringan

Saat infrastruktur berubah, Anda mungkin ingin mengubah konfigurasi jaringan untuk VM. Misalnya, Anda mungkin ingin menghubungkan VM ke jaringan virtual yang berbeda atau menetapkan alamat IP secara manual. Untuk mengedit konfigurasi jaringan untuk VM, selesaikan langkah-langkah berikut:

  1. Hentikan VM yang ingin Anda edit:

    kubectl virt stop VM_NAME
    

    Ganti VM_NAME dengan nama VM yang ingin Anda hentikan.

  2. Gunakan kubectl untuk mengedit VM:

    kubectl edit gvm VM_NAME
    

    Ganti VM_NAME dengan nama VM yang ingin Anda edit.

  3. Di editor, perbarui setelan konfigurasi jaringan yang ingin Anda ubah.

    Misalnya, contoh manifes VirtualMachine berikut menunjukkan bahwa VM terhubung ke jaringan bernama backend-vlan100 dan menggunakan DHCP karena tidak ada alamat IP yang ditentukan:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: backend-vlan100
          default: true
    ...
    

    Jika Anda ingin mengubah jaringan yang terhubung ke VM atau menetapkan alamat IP manual, perbarui konfigurasi jaringan di editor Anda, seperti yang ditunjukkan dalam contoh berikut:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: NETWORK_NAME
            ipAddresses:
              - IP_ADDRESS
          default: true
    ...
    

    Ganti NETWORK_NAME dengan nama jaringan yang akan terhubung, atau tambahkan bagian ipAddresses dan tentukan IP_ADDRESS yang akan digunakan oleh VM Anda.

  4. Simpan dan tutup manifes VM.

  5. Mulai VM yang Anda edit:

    kubectl virt start VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda edit.

  6. Periksa STATUS pada VM Anda:

    kubectl get gvm VM_NAME
    

    Pastikan VM Anda dalam status Running. Jika VM meminta koneksi jaringan yang tidak dapat disediakan oleh host, VM Anda tidak dapat dimulai. Jika VM tidak dalam status Running, periksa manifes resource VirtualMachine dan dukungan jaringan host Anda.

  7. Lihat informasi mendetail tentang VM yang menggunakan kubectl describe gvm:

    kubectl describe gvm VM_NAME
    

    Ganti VM_NAME dengan nama VM yang Anda edit.

    Contoh output berikut menunjukkan informasi ringkas untuk VM, dengan perubahan pada konfigurasi alamat IP dan jaringan yang berhasil diterapkan:

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
      Interfaces:
        Name:          eth0
        Network Name:  backend-vlan200
    ...
    Status:
      ...
      Interfaces:
        Dns Config:
          Nameservers:
            8.8.8.8
        gateway4:  10.200.0.9
        Ip Addresses:
          10.200.0.22/24
        Mac Address:    22:b4:e3:d2:ef:fb
        Name:           eth0
        Resource Name:  vm1-eth0-f2468
    ...
    

Untuk mengetahui informasi selengkapnya, lihat cara membuat dan mengelola jaringan virtual.

Mengonfigurasi VM untuk memulai ulang otomatis

Banyak perubahan konfigurasi VM, seperti perubahan pada setelan compute, mengharuskan VM dihentikan dan dimulai ulang agar perubahan dapat disinkronkan dengan instance VM yang sesuai (VirtualMachineInstance). VM yang berjalan di GKE pada Bare Metal versi 1.13.0 atau yang lebih tinggi dapat dikonfigurasi untuk dimulai ulang secara otomatis setiap kali Anda membuat perubahan pada konfigurasinya. Saat mengonfigurasi VM untuk menggunakan fitur ini, Anda tidak perlu menghentikan dan memulai ulang VM saat mengedit resource kustomnya. Runtime VM di GDC memantau VM dan, jika mendeteksi perubahan konfigurasi, VM akan otomatis dimulai ulang untuk menyinkronkan perubahan.

Jika Anda menggunakan Config Sync untuk mengelola file konfigurasi YAML, fitur ini sangat berguna. Tanpa fitur ini, Anda harus menghentikan VM secara manual sebelum membuat perubahan pada resource kustom VirtualMachine dan memulai VM secara manual setelah Anda menyelesaikan perubahan.

Untuk mengaktifkan mulai ulang otomatis:

  1. Gunakan kubectl untuk mengedit VM:

    kubectl edit gvm VM_NAME
    
  2. Di editor Anda, tambahkan kolom autoRestartOnConfigurationChange dan tetapkan ke true.

    Anda dapat membuat perubahan tambahan pada VM, seperti memperbarui nilai vcpus. Jika Anda mengedit setelan compute, Runtime VM di GDC akan memulai ulang VM secara otomatis saat Anda menyimpan perubahan.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      ...
      name: vm-sample-01
      namespace: default
      resourceVersion: "16711824"
      uid: ed623879-0cfa-52de-ad2c-b63308e6116c
    spec:
      autoRestartOnConfigurationChange: true
      compute:
        cpu:
          vcpus: 2
          ...
    
  3. Simpan dan tutup manifes VM.

    Jika Anda telah membuat perubahan lain pada VM yang perlu disinkronkan dengan instance VM yang sesuai, Runtime VM di GDC akan memulai ulang VM. Jika Anda hanya melakukan perubahan untuk mengaktifkan mulai ulang otomatis, mulai ulang VM tidak diperlukan.

  4. Periksa status pada VM Anda:

    kubectl get gvm VM_NAME
    

    Bergantung pada seberapa cepat Anda mendapatkan VM, Anda mungkin melihat state: Starting saat VM dimulai ulang. Setelah VM berhasil dimulai ulang, Anda akan melihat state: Running. Perubahan konfigurasi berikutnya pada resource kustom VirtualMachine tidak mengharuskan Anda berhenti dan memulai VM secara manual. Perubahan berikutnya pada resource kustom akan tercermin dalam instance VM secara konsisten.

Perhatikan perilaku fitur situasional berikut:

  • Jika Anda menghentikan VM secara manual sebelum mengedit resource kustom VirtualMachine, perubahan konfigurasi tidak akan memicu mulai ulang. Status VM yang dihentikan sebelum perubahan konfigurasi dipertahankan.

  • Jika Anda telah membuat perubahan label atau penjadwalan untuk VM sebelum mengaktifkan fitur mulai ulang otomatis, menambahkan autoRestartOnConfigurationChange sekarang tanpa perubahan lainnya tidak akan memicu mulai ulang. Idealnya, fitur ini menjaga instance VM tetap konsisten dengan konfigurasi VM. Namun, VM Runtime di GDC tidak dapat mendeteksi inkonsistensi sebelumnya.

Langkah selanjutnya