VM pada Kubernetes (kubevirt)

https://docs.diamanti.com/docs-dvx/3.6.2/kubevirt.html

KubeVirt adalah proyek sumber terbuka untuk mendukung VM berbasis KVM pada kluster Kubernetes.

Diamanti mendukung pengoperasian mesin virtual pada klaster Kubernetes dengan semua layanan jaringan dan penyimpanan Diamanti yang tersedia untuk sumber daya Kubernetes seperti penerapan, pod, dsb. Panduan ini menjelaskan metode CLI dan GUI untuk menggunakan kubevirt.

Prasyarat

Gambar VM harus memiliki driver jaringan virtio yang terpasang agar jaringan dapat berfungsi. Kita dapat memasang driver virtio saat membuat VM yang ditentukan di bagian “Untuk meluncurkan Mesin Virtual”

Menggunakan KubeVirt CLI

Anda dapat menggunakan Diamanti CLI untuk melakukan operasi KubeVirt.

  1. Untuk mengaktifkan kubevirt, perbarui bidang actiondengan nilai enabledan terapkan file spesifikasi /usr/share/diamanti/manifests/examples/k8scrs/feature-kubevirt-cr.yaml seperti yang ditunjukkan di bawah ini

    apiVersion: spektra.diamanti.io/v1alpha1
    kind: Feature
    metadata:
    name: kubevirt
    spec:
      action: enable
      kubevirtConfig: {}
    
    $ kubectl create -f /usr/share/diamanti/manifests/examples/k8scrs/feature-kubevirt-cr.yaml
    
  2. Untuk memeriksa apakah fitur KubeVirt diaktifkan pada tingkat klaster, gunakan perintah berikut:

    $ kubectl get features.spektra.diamanti.io
      NAME       AGE
      kubevirt   2m17s
    
  3. Untuk mengaktifkan Kubevirt pada node, perbarui fitur kubevirt dengan perintah berikut:

    Catatan

    Perbarui nodeListdengan daftar node tempat kubevirt akan diaktifkan, operationwould be adddan actionwould be update.

    $ kubectl edit features.spektra.diamanti.io kubevirt
      feature.spektra.diamanti.io/kubevirt edited
    
      # Please edit the object below. Lines beginning with a '#' will be ignored,
      # and an empty file will abort the edit. If an error occurs while saving this file will be
      # reopened with the relevant failures.
      #
    
      apiVersion: spektra.diamanti.io/v1alpha1
      kind: Feature
      metadata:
      creationTimestamp: "2021-06-08T06:48:10Z"
      finalizers:
      - diamanti-controller
      generation: 4
      name: kubevirt
      resourceVersion: "4195"
      selfLink: /apis/spektra.diamanti.io/v1alpha1/features/kubevirt
      uid: b1323522-d808-4316-9703-d4b1e56f5989
      spec:
        KubevirtConfig:
          nodeList:
          - appserv64
          - appserv65
          operation: add
        action: update
      status:
        kubevirtStatus:
          nodeList:
          - appserv64
          - appserv65
          state: enable
          phase: Success
    
  4. Verifikasi bahwa semua pod yang terkait dengan Kubevirt dan post CDI dimulai pada node tempat Kubevirt diaktifkan.

    $ kubectl get pods -n kubevirt && kubectl get pods -n cdi
    NAMESPACE         NAME                                             READY   STATUS    RESTARTS   AGE    IP              NODE        NOMINATED NODE   READINESS GATES
    cdi               cdi-apiserver-78ddcf9dbf-w8cvc                   1/1     Running   0          76s    172.16.153.12   appserv66   <none> <none>
    cdi               cdi-deployment-9c88fc958-lrbrn                   1/1     Running   0          69s    172.16.153.15   appserv66   <none> <none>
    cdi               cdi-operator-6f7f5b9654-v8mwx                    1/1     Running   0          86s    172.16.153.8    appserv66   <none> <none>
    cdi               cdi-uploadproxy-f7756dc78-vn4ch                  1/1     Running   0          64s    172.16.153.16   appserv66   <none> <none>
    kube-system       mutating-webhook-57746d4dc8-dr2nk                1/1     Running   0          84s    172.16.153.10   appserv66   <none> <none>
    kubevirt          virt-api-f8c579d56-dktbc                         1/1     Running   0          74s    172.16.153.13   appserv66   <none> <none>
    kubevirt          virt-api-f8c579d56-zbg5c                         1/1     Running   0          74s    172.16.153.14   appserv66   <none> <none>
    kubevirt          virt-controller-7b5b4b6d48-5jw2t                 1/1     Running   0          51s    172.16.153.19   appserv66   <none> <none>
    kubevirt          virt-controller-7b5b4b6d48-msl8s                 1/1     Running   0          51s    172.16.153.17   appserv66   <none> <none>
    kubevirt          virt-handler-l6fjc                               1/1     Running   0          51s    172.16.153.18   appserv66   <none> <none>
    kubevirt          virt-operator-5d6544596c-kt2vp                   1/1     Running   0          101s   172.16.153.7    appserv66   <none> <none>
    kubevirt          virt-operator-5d6544596c-s5thn                   1/1     Running   0          101s   172.16.153.6    appserv66   <none> <none>
    kubevirt          virtvnc-786f689959-jlmz4                         1/1     Running   0          86s    172.16.153.9    appserv66   <none> <none>
    
  5. Untuk membuat VM, pertama-tama citra qcow2 yang berisi OS perlu diunggah ke PVC, lalu VM dapat dibuat menggunakan PVC yang sama. Untuk mengunggah VM, ubah file CR /usr/share/diamanti/manifests/examples/k8scrs/virtual-machine-cr.yaml. File qcow2 harus tersedia pada node yang ditentukan oleh di nodeNamejalur yang ditentukan dalam imagePathactionKolom dalam file harus memiliki nilai image-uploadvirtualMachineNameadalah nama tempat virtualMachine harus dibuat. Jika ini adalah drive pertama, dataDrivekolom akan menjadi false. Untuk mendapatkan ukuran pvc, silakan lihat Hitung ukuran pvc yang akan diunggah .

    Catatan

    1. nama pada Kind VirtualMachine harus sama dengan VirtualMachineName.

    2. Dalam VM dengan beberapa disk dan mirroring diaktifkan, semua pleksus dari semua disk mungkin tidak dibuat pada node yang sama. Saat Anda memindahkan mesin virtual dari satu node ke node lain, beberapa pleksus disk akan dipasang dari jarak jauh karena tidak semua disk akan berada di node baru.

      Karena pleksus tidak dapat dilampirkan dari jarak jauh, kita perlu menggunakan penyeleksi dalam kelas penyimpanan dan menambahkannya sebagai label pada node tempat pleksus harus dibuat untuk memastikan bahwa semua pleksus dari semua disk dibuat pada node yang sama. Untuk informasi lebih lanjut, lihat, Membuat Objek StorageClass Kustom .

    apiVersion: spektra.diamanti.io/v1alpha1
    kind: VirtualMachine
    metadata:
      name: centos
    spec:
      action: image-upload
      virtualMachineName: centos
      virtualMachineConfig:
        pvcName: centos-os
        pvcSize: 100Gi
        nodeName: appserv65
        storageClass: “”
        namespace: default
        imagePath: /home/diamanti/centos-os.qcow2
        insecure: true
        dataDrive: false
    

    Terapkan spesifikasi CR

    $ kubectl create -f /usr/share/diamanti/manifests/examples/k8scrs/virtual-machine-cr.yaml
    
  6. Jalankan perintah berikut untuk memeriksa status unggahan

    $ kubectl describe virtualmachines.spektra.diamanti.io  centos | grep Status -A 2
    
         Status:
               Phase:   Pending
               Reason:  image-upload in progressing.
    
         The image upload is progressing
    

    Pengunggahan gambar yang berhasil akan menampilkan nilai Fase Sukses, sedangkan pengunggahan gambar yang gagal akan menampilkan nilai Fase Tertunda dan Alasan Kegagalan akan menyebutkan alasannya.

    $ kubectl describe virtualmachine.spektra.diamanti.io/centos7 | grep Phase -A 2
    
         Phase:  Success
         Events:   <none>
    
  7. Untuk mengunggah citra qcow berikutnya untuk VirtualMachine yang sama, salin spesifikasi di atas dengan perubahan berikut, nameakan berbeda, Anda dapat menggunakan konvensi penamaannya sebagai centos-data<angka> misalnya centos-data-0actionakan menjadi image-uploadVirtualMachineNameakan sama centos, modifikasi virtualMachiMachineConfigtergantung pada nama dan ukuran pvc dan lokasi citra qcow2 yang akan diunggah.

    Catatan

    bidang dataDrive akan bernilai true dalam kasus ini.

    apiVersion: spektra.diamanti.io/v1alpha1
    kind: VirtualMachine
    metadata:
      name: centos-data-0
    spec:
      action: image-upload
      virtualMachineName: centos
      virtualMachineConfig:
        pvcName: centos-data-0
        pvcSize: 5Gi
        nodeName: appserv65
        storageClass: “”
        namespace: default
        imagePath: /home/diamanti/centos-data-0.qcow2
        insecure: true
        dataDrive: true
    

    Terapkan spesifikasi CR

    $ kubectl create -f /usr/share/diamanti/manifests/examples/k8scrs/virtual-machine-cr-data-0.yaml
    
  8. Untuk meluncurkan Mesin Virtual, gunakan spesifikasi berikut dan terapkan. Ini adalah contoh file spesifikasi dengan satu drive OS, centos-os, satu drive data yang diunggah, centos-data-0, dan satu volume data, centos1-data. Spesifikasi PVC volume data disertakan sebagai bagian dari file YAML ini demi kenyamanan.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: centos-data-1
    spec:
     accessModes:
     - ReadWriteOnce
     volumeMode: Block
     resources:
       requests:
         storage: 80Gi
       storageClassName: high
    ------
    
    apiVersion: kubevirt.io/v1alpha3
    kind: VirtualMachine
    metadata:
     name: centos
     annotations:
        diamanti.com/endpoint0: '{"network":"default","perfTier":"high"}'
    spec:
     running: false
     template:
       metadata:
         labels:
           kubevirt.io/domain: centos
       spec:
         domain:
           ioThreadsPolicy: auto
           cpu:
             cores: 8
           devices:
             blockMultiQueue: true
             disks:
             - disk:
                 bus: virtio
               name: harddrive
             - disk:
                 bus: virtio
               name: harddrive1
             - disk:
                 bus: virtio
               name: harddrive2
               dedicatedIOThread: true
             - cdrom:
                 bus: sata
               name: virtiocontainerdisk
            firmware:
              bootloader:
                efi:
                  secureBoot: false
           machine:
             type: q35
           resources:
             requests:
               memory: 16G
         volumes:
         - name: harddrive
           persistentVolumeClaim:
             claimName: centos1-os
         - name: harddrive1
           persistentVolumeClaim:
             claimName: centos1-data-0
         - name: harddrive2
           persistentVolumeClaim:
             claimName: centos1-data-1
         - name: virtiocontainerdisk
           containerDisk:
             image: kubevirt/virtio-container-disk
             imagePullPolicy: IfNotPresent
    

    Catatan

    1. virtiocontainerdisk digunakan untuk menginstal driver virtio untuk VM Windows. Ia akan dipasang sebagai cdrom dalam sebuah VM. Linux umumnya memiliki driver virtio yang terpasang di dalamnya. Silakan lihat petunjuk instalasi untuk menginstal driver virtio di Windows.

    2. Firmware BIOS yang ditentukan adalah efi karena beberapa image qcow dapat dibuat menggunakan BIOS efi. Jika BIOS adalah lawas, hapus semua kolom di bawah firmware, termasuk kata firmwarekunci.

    3. Bus untuk disk digunakan sebagai virtio, dengan asumsi bahwa driver virtio merupakan bagian dari image dan bagian dari initrd untuk Linux. Nilai bus lainnya dapat berupa “sata” atau “scsi”.

    Jika bios atau jenis bus disk tidak ditentukan dengan benar, Anda mungkin mendapatkan pesan perangkat boot tidak ditemukan di terminal setelah VM dimulai. Coba ubah jenis bus dan bios ke nilai yang didukung.

    Terapkan spesifikasi

    $ kubectl apply -f centos.yaml
    

    Contoh spesifikasi

    /usr/share/diamanti/manifests/examples/kubevirt-vm-spec/centos-ue-efi-endpoint.yaml
    
    /usr/share/diamanti/manifests/examples/kubevirt-vm-spec/windows-qcow2-ue-efi-endpoint.yaml
    
    /usr/share/diamanti/manifests/examples/kubevirt-vm-spec/centos-ue-endpoint.yaml
    
    /usr/share/diamanti/manifests/examples/kubevirt-vm-spec/windows-qcow2-ue-endpoint.yaml
    
  9. Untuk Menggunakan PVC yang Ada di VM.

    1. Buat VM menggunakan spesifikasi dari langkah di atas dengan PVC yang ada sebagai disk. Ubah kolom yang diperlukan sesuai dengan persyaratan VM dan jenis disk yang digunakan.

    2. Buat objek Mesin Virtual diamanti menggunakan spesifikasi berikut.

    Catatan

    1. namebidang dalam metadata dan virtualMachineNamebidang akan memiliki nilai yang sama dengan nama Mesin Virtual yang dibuat pada langkah (1).

    2. dataDrivelapangan akan menjadi false.

    3. namespacebidang akan menjadi namespace VM.

    Karena tidak perlu mengunggah qcow2 ke PVC karena kami menggunakan PVC yang ada, bidang lain tidak diperlukan.

    apiVersion: spektra.diamanti.io/v1alpha1
    kind: VirtualMachine
    metadata:
      name: centos
    spec:
      action: start
      virtualMachineName: centos
      virtualMachineConfig:
        namespace: default
        dataDrive: false
    

    Terapkan spesifikasi CR

    $ kubectl create -f /usr/share/diamanti/manifests/examples/k8scrs/virtual-machine-cr-os.yaml
    
  10. Untuk memulai Virutal Machine edit centos CR berikut dan tentukan “stop” dalam tindakan .

    $kubectl edit virtualmachines.spektra.diamanti.io centos
     virtualmachine.spektra.diamanti.io/centos edited
    
    
     # Please edit the object below. Lines beginning with a '#' will be ignored,
     # and an empty file will abort the edit. If an error occurs while saving this file will be
     # reopened with the relevant failures.
     #
    
      apiVersion: spektra.diamanti.io/v1alpha1
      kind: VirtualMachine
      metadata:
        creationTimestamp: "2021-04-07T05:50:50Z"
        finalizers:
        - diamanti-controller
        generation: 4
        name: centos
        resourceVersion: "396968"
        selfLink: /apis/spektra.diamanti.io/v1alpha1/virtualmachines/centos
        uid: 0b4ad372-670a-4d60-be68-2f755ad4bae7
      spec:
        action: start
        virtualMachineName: centos
        virtualMachineConfig:
          pvcName: centos-os
          pvcSize: 100Gi
          nodeName: appserv65
          storageClass: “”
          namespace: default
          imagePath: /home/diamanti/centos-os.qcow2
          insecure: true
          dataDrive: false
    

    Jalankan perintah berikut dan periksa output untuk memeriksa status operasi awal.

    kubectl describe virtualmachines.spektra.diamanti.io  centos | grep Status -A 2
    

    Bidang yang disebut Fase dan Alasan mengindikasikan apakah permulaan berhasil atau gagal, serta alasan kegagalannya.

  11. Untuk memverifikasi bahwa pod Mesin Virtual sedang berjalan

    $ kubectl get vm
    NAME      AGE   VOLUME
    centos   10s
    
  12. Untuk mendapatkan informasi terperinci tentang Mesin Virtual

    $ kubectl get vmi
    NAME      AGE     PHASE     IP                 NODENAME
    centos    7m32s   Running   172.16.153.11/24   appserv66
    
  13. Untuk mengakses Mesin Virtual

    • Untuk VM berbasis Linux dengan SSH

      $ssh <VMI IP ADDRESS>
      

      Catatan

      nama pengguna dan kata sandi dikonfigurasi selama pembuatan citra OS qcow2.

    • Akses VM melalui konsol (Windows dan Linux)

      [diamanti@diamanti-node1]$ kubectl get svc -n kubevirt virtvnc
      NAME      TYPE       CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
      virtvnc   NodePort   10.0.0.120   <none> 8001:32597/TCP 9m22s
      
      Then visit the following url in browser:
      http://NODEIP:NODEPORT
      
      e.g http://diamanti-node1:32597
      
  14. Untuk menghentikan Virutal Machine edit centos CR berikut dan tentukan “stop” dalam tindakan .

       $kubectl edit virtualmachines.spektra.diamanti.io centos
        virtualmachine.spektra.diamanti.io/centos edited
    
    
        # Please edit the object below. Lines beginning with a '#' will be ignored,
        # and an empty file will abort the edit. If an error occurs while saving this file will be
        # reopened with the relevant failures.
        #
    
         apiVersion: spektra.diamanti.io/v1alpha1
         kind: VirtualMachine
         metadata:
           creationTimestamp: "2021-04-07T05:50:50Z"
           finalizers:
           - diamanti-controller
           generation: 4
           name: centos
           resourceVersion: "396968"
           selfLink: /apis/spektra.diamanti.io/v1alpha1/virtualmachines/centos
           uid: 0b4ad372-670a-4d60-be68-2f755ad4bae7
         spec:
           action: stop
           virtualMachineName: centos
           virtualMachineConfig:
             pvcName: centos-os
             pvcSize: 100Gi
             nodeName: appserv65
             storageClass: “”
             namespace: default
             imagePath: /home/diamanti/centos-os.qcow2
             insecure: true
             dataDrive: false
    
    Run the following command and check the output to check the start operation status.
    
    .. code::
    
        kubectl describe virtualmachines.spektra.diamanti.io  centos | grep Status -A 2
    
    A field called Phase and Reason indicates whether a start succeeded or failed, as well as the reason for the failure.
    
  15. Untuk menghapus node dari fitur Kubevirt, edit objek feature.spektra.diamanti.io/kubevirt dan hapus node dari bidang nodeList .

    Catatan

    nodeListakan memiliki node tempat kubevirt akan dinonaktifkan, operationwould be deletedan actionwould be update.

    $  kubectl edit features.spektra.diamanti.io kubevirt
       feature.spektra.diamanti.io/kubevirt edited
    
       # Please edit the object below. Lines beginning with a '#' will be ignored,
       # and an empty file will abort the edit. If an error occurs while saving this file will be
       # reopened with the relevant failures.
       #
    
       apiVersion: spektra.diamanti.io/v1alpha1
       kind: Feature
       metadata:
       creationTimestamp: "2021-06-08T06:48:10Z"
       finalizers:
       - diamanti-controller
       generation: 4
       name: kubevirt
       resourceVersion: "4195"
       selfLink: /apis/spektra.diamanti.io/v1alpha1/features/kubevirt
       uid: b1323522-d808-4316-9703-d4b1e56f5989
       spec:
         KubevirtConfig:
           nodeList:
           - appserv64
           - appserv65
           operation: delete
         action: update
       status:
         kubevirtStatus:
           nodeList:
           - []
           state: enable
           phase: Success
    
  16. Untuk menonaktifkan fitur Kubevirt, edit objek feature.spektra.diamanti.io/kubevirt dan tentukan nilai bidang “action” sebagai Disable .

    Catatan

    Semua node nodeListperlu dihapus agar kubevirt dinonaktifkan di cluster

    $  kubectl edit features.spektra.diamanti.io kubevirt
       feature.spektra.diamanti.io/kubevirt edited
    
       # Please edit the object below. Lines beginning with a '#' will be ignored,
       # and an empty file will abort the edit. If an error occurs while saving this file will be
       # reopened with the relevant failures.
       #
    
       apiVersion: spektra.diamanti.io/v1alpha1
       kind: Feature
       metadata:
       creationTimestamp: "2021-06-08T06:48:10Z"
       finalizers:
       - diamanti-controller
       generation: 4
       name: kubevirt
       resourceVersion: "4195"
       selfLink: /apis/spektra.diamanti.io/v1alpha1/features/kubevirt
       uid: b1323522-d808-4316-9703-d4b1e56f5989
       spec:
         action: disable
         kubevirtConfig:{}
    

Menggunakan UI KubeVirt

Anda dapat menggunakan UI Diamanti untuk melakukan operasi KubeVirt.

  1. Untuk mengaktifkan KubeVirt, pilih Pengaturan Lanjutan , dan di Fitur geser tombol untuk memilih KubeVirt .

    _gambar/kubevirt_enable.png
  2. Untuk menambahkan node guna menghosting VM Kubevirt, pilih Pengaturan Lanjutan –> Fitur –> Kubevirt –> Perbarui Node, dari daftar turun bawah pilih node yang ingin Anda tambahkan, pilih Simpan untuk memperbarui pilihan.

    _gambar/kubevirt_tambahkan_simpul_1.png _gambar/kubevirt_tambahkan_simpul_2.png
  3. Untuk Membuat Mesin Virtual, Pilih Aplikasi -> Mesin Virtual -> Buat Mesin Virtual, isi semua kolom yang diperlukan. Untuk mendapatkan ukuran pvc, silakan lihat bagian Menghitung ukuran pvc yang akan diunggah

    Catatan

    Dalam VM dengan beberapa disk dan mirroring diaktifkan, semua pleksus dari semua disk mungkin tidak dibuat pada node yang sama. Saat Anda memindahkan mesin virtual dari satu node ke node lain, beberapa pleksus disk akan dipasang dari jarak jauh karena tidak semua disk akan berada di node baru. Karena pleksus tidak dapat dipasang dari jarak jauh, kita perlu menggunakan penyeleksi di kelas penyimpanan dan menambahkannya sebagai label pada node tempat pleksus harus dibuat untuk memastikan bahwa semua pleksus dari semua disk dibuat pada node yang sama. Navigasi ke Storage Administration->Storage Classes untuk membuat kelas penyimpanan guna menentukan penyeleksi sebagai parameter.

    _gambar/kubevirt_create_1.png
  4. Untuk mengunggah/menambahkan disk tambahan Pilih Data Disk-> Buat PVC, isi kolom yang diperlukan.

    _gambar/kubevirt_create_2.png
  5. Setelah semua kolom terisi, pilih Buat Opsi untuk membuat Mesin Virtual. Setelah pembuatan, VM akan dicantumkan, dan Status akan menjadi 'Unggahan sedang berlangsung'. Setelah pengunggahan selesai, status akan berubah menjadi Dihentikan.

    _gambar/kubevirt_create_3.png
  6. Untuk memulai VM, pertama-tama daftarkan VM dengan memilih Aplikasi dan kemudian Administrasi Mesin Virtual , pilih opsi mulai di tab Tindakan pada VM yang perlu dimulai.

    _gambar/kubevirt_start_1.png _gambar/kubevirt_start_2.png _gambar/kubevirt_start_3.png
  7. Untuk mengakses konsol VM, pertama-tama buat daftar VM dengan memilih Aplikasi lalu Administrasi Mesin Virtual , pilih buka terminal di tab Tindakan pada VM. Di tab Lain di browser, Anda akan melihat terminal.

    _gambar/kubevirt_terminal_1.png

    Konsol VM terbuka di tab baru di browser.

    _gambar/kubevirt_terminal_2.png
  8. Untuk menghentikan VM, pertama-tama daftarkan VM dengan memilih Aplikasi dan kemudian Administrasi Mesin Virtual , pilih opsi berhenti di tab Tindakan pada VM yang perlu dihentikan.

    _gambar/kubevirt_stop_1.png
  9. Konfirmasikan operasi dengan memilih Hentikan Mesin Virtual .

    _gambar/kubevirt_stop_2.png

    Status operasi Stop ditampilkan di sudut kanan atas.

    _gambar/kubevirt_stop_3.png
  10. Untuk Mengedit spesifikasi VM, pertama-tama daftarkan VM dengan memilih Aplikasi dan kemudian Administrasi Mesin Virtual , pilih opsi Edit di tab Tindakan pada VM yang perlu diedit

    _gambar/kubevirt_edit_1.png
  11. Edit bidang yang diperlukan dan pilih opsi REDEPLOY, maka Mesin Virtual akan di-deploy ulang.

    _gambar/kubevirt_edit_2.png
  12. Untuk menghapus VM, pertama-tama buat daftar VM dengan memilih Aplikasi , lalu Administrasi Mesin Virtual , pilih opsi Hapus pada tab Tindakan pada VM yang perlu dihapus.

    _gambar/kubevirt_delete_1.png
  13. Konfirmasikan penghapusan.

    _gambar/kubevirt_delete_2.png
  14. Status operasi ditampilkan di sudut kanan atas.

    _gambar/kubevirt_delete_3.png
  15. Penghapusan dapat diverifikasi dalam daftar VM.

    _gambar/kubevirt_delete_4.png
  16. Untuk menghapus node dari hosting VM Kubevirt, pilih Pengaturan Lanjutan -> Fitur -> Kubevirt -> Perbarui node, lalu dari daftar turun bawah hapus pilihan node yang ingin dihapus dari daftar, pilih Simpan untuk menghapus node yang tidak dipilih.

    _gambar/kubevirt_remove_1.png
  17. Status operasi ditampilkan di sudut kanan atas.

    _gambar/kubevirt_remove_2.png
  18. Untuk Menonaktifkan KubeVirt, buka Pengaturan Lanjutan dan di bawah Fitur, hapus pilihan KubeVirt.

  19. Untuk menonaktifkan Kubevirt, semua node harus dihapus dari fitur Kubevirt.

    _gambar/kubevirt_nonaktifkan.png

Hitung ukuran pvc yang akan di upload

  • Perintah berikut memberikan informasi tentang gambar qcow.

$ qemu-img info centos-os.qcow2

image: centos-os.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 17G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false

Catatan

Ukuran virtual adalah ukuran sebenarnya dari disk dan tambahkan 10% overhead di atasnya dan gunakan ukuran tersebut untuk pvc, jadi dalam contoh kita akan menjadi sekitar 45G.

Instalasi VM Kubevirt menggunakan ISO

  1. Untuk mengaktifkan kubevirt dan menjadwalkan VM kubevirt pada node, rujuk VM di Kubernetes (kubevirt) .

  2. Untuk menginstal OS pada salah satu node kluster, salin ISO dan unggah ke PVC. Lihat langkah 5 Menggunakan KubeVirt CLI .

    Misalnya, ISO yang diunggah pada PVC dapat diberi nama win2019-iso pada Windows dan linux-iso pada Linux.

  3. Setelah pengunggahan selesai, masuk ke salah satu node dan gunakan berkas spesifikasi untuk konfigurasi titik akhir dinamis Windows dan Linux dari berkas /usr/share/diamanti/manifests/examples/kubevirt-vm-spec/windows-iso-dynamic-endpoint.yaml . Spesifikasi yang sama juga dapat digunakan untuk Linux dan Windows.

  4. Untuk mengubah nama dan jumlah disk di VM, edit spesifikasi yang disalin pada langkah 3. Untuk menginstal OS, kita memerlukan setidaknya satu PVC selain PVC ISO.

    1. Saat ISO diunggah, PVC digunakan untuk membuat CD-ROM. Ubah nama disk dari win2019-os menjadi win2019-iso/linux-iso karena itu adalah nama pvc kita. Ini menunjukkan bahwa urutan boot adalah 2, yang menunjukkan bahwa ini adalah disk kedua yang dapat di-boot. Karena tidak ada konten pada hard drive saat startup, maka boot akan dilakukan dari CDROM.

      - cdrom:
        bus: sata
      bootOrder: 2
      name: cdromiso
       volumes:
      - name: cdromiso
        persistentVolumeClaim:
          claimName: win2019-os
      
    Setelah Diedit:
    - name: cdromiso
        persistentVolumeClaim:
          claimName: win2019-iso
    
    1. Ada beberapa disk dalam instalasi ini, tetapi dengan hanya satu hard drive Anda masih dapat menggunakannya sebagai perangkat boot pertama. Ketika bios pertama kali menemukan perangkat ini, ia akan beralih ke CDROM, namun setelah OS diinstal pada perangkat ini, ia akan melakukan boot langsung dari perangkat ini setelah melakukan boot ulang.

      - disk:
        bus: virtio
        name: harddrive
        bootOrder: 1
      - disk:
        bus: virtio
        name: harddrive2
      - disk:
        bus: virtio
        name: harddrive3
      
    2. Sebagai bagian dari proses instalasi Windows, kita akan membuat CDROM baru yang disebut virtio-drivers, yang merupakan disk kontainer yang berisi driver virtio untuk Windows. muat driver ini selama instalasi Windows. Anda harus memuat driver ini selama instalasi Windows.

      - cdrom:
              bus: sata
              readonly: true
              name: virtio-drivers
      
      - name: virtio-drivers
                 containerDisk:
                        image: kubevirt/virtio-container-disk
                        imagePullPolicy: IfNotPresent
      

      Catatan

      • Untuk VM Windows, virtio-container-disk digunakan untuk menginstal driver virtio yang dipasang sebagai cdrom pada VM. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan driver virtio?

      • Untuk VM Linux, driver virtio sudah diinstal.

  5. Gunakan perintah kubectl create -f windows-iso-dynamic-endpoint.yaml untuk membuat mesin virtual berdasarkan spesifikasi yang dimodifikasi.

  6. Mulai mesin Virtual dengan mengikuti langkah 9 Menggunakan KubeVirt CLI .

  7. Luncurkan konsol GUI VM untuk instalasi Windows atau Linux. Untuk mengakses konsol VM, pilih Aplikasi -> Administrasi Mesin Virtual , pilih buka terminal di tab Tindakan VM, dan konsol akan muncul di tab lain di browser Anda.

    1. Untuk instalasi Windows

      1. Pada dialog instalasi Windows, masukkan bahasa Anda dan preferensi lainnya lalu pilih Berikutnya .

        _gambar/win_inst_iso1.png
      2. Pilih sistem operasi yang akan diinstal dan pilih Berikutnya .

        _gambar/win_inst_iso2.png
      3. Pilih Muat Driver untuk menginstal driver penyimpanan dan jaringan.

        _gambar/win_inst_iso3.png
      4. Pilih Browse dan navigasikan ke folder untuk menginstal driver ethernet. Telusuri ke cdrom tempat disk kontainer driver virtio dipasang dan pilih cdrom ->**NetKvm**->**2k19**->**amd64**

        _gambar/win_inst_iso4.png
      5. Pilih driver lalu pilih Berikutnya untuk menginstal Redhat Virtio Ethernet Adaptor .

        _gambar/win_inst_iso5.png
      6. Pilih Browse dan navigasikan ke folder untuk menginstal driver penyimpanan.

        Telusuri ke virtio cdrom dan pilih cdrom->viostor->2k19->amd64

        _gambar/win_inst_iso6.png _gambar/win_inst_iso7.png
      7. Pilih driver dan kemudian pilih Berikutnya untuk menginstal Redhat Virtio Scsi Controller .

        _gambar/win_inst_iso8.png _gambar/win_inst_iso9.png _gambar/win_inst_iso10.png
    2. Untuk instalasi linux

      1. Pada dialog instalasi Linux, pilih Instal .

        _gambar/lin_inst_iso1.png
      2. Pada dialog instalasi Linux, pilih bahasa untuk instalasi dan pilih Lanjutkan .

        _gambar/lin_inst_iso2.png
      3. Buat Pengguna dan masukkan Kata Sandi Root dan pilih Mulai Instalasi .

        Catatan

        Driver Virtio sudah terinstal di Linux, jadi tidak perlu menginstalnya.

        _gambar/lin_inst_iso3.png _gambar/lin_inst_iso4.png _gambar/lin_inst_iso5.png _gambar/lin_inst_iso6.png
      4. Jika jaringan belum diaktifkan setelah instalasi, Navigasi ke Pengaturan - Jaringan , lalu Aktifkan Koneksi Kabel .

        _gambar/lin_inst_iso7.png

      Tutup dialog, dan sekarang Anda dapat mengakses VM.

File spesifikasi untuk Windows dan Linux

  • Spesifikasi untuk instalasi ISO Windows

    vagserv1:~/kubevirt-vm-spec> cat windows-iso-dynamic-endpoint.yaml
    
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: win2019-disk0
     spec:
       accessModes:
         - ReadWriteOnce
       volumeMode: Block
       resources:
         requests:
           storage: 100Gi
       storageClassName: sc-high-m3
     ---
    
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: win2019-disk1
     spec:
       accessModes:
         - ReadWriteOnce
       volumeMode: Block
       resources:
         requests:
           storage: 100Gi
       storageClassName: sc-high-m3
     ---
    
     apiVersion: v1
     kind: PersistentVolumeClaim
     metadata:
       name: win2019-disk2
     spec:
       accessModes:
         - ReadWriteOnce
       volumeMode: Block
       resources:
         requests:
           storage: 100Gi
       storageClassName: sc-high-m3
    
     ---
    
     apiVersion: kubevirt.io/v1alpha3
    
     kind: VirtualMachine
     metadata:
       name: win2019-mssql
     spec:
       running: false
       template:
         metadata:
           annotations:
             diamanti.com/endpoint0: '{"network":"blue","perfTier":"high"}'
           labels:
             kubevirt.io/domain: win2019-mssql
         spec:
           domain:
             cpu:
               cores: 4
             devices:
               disks:
    
               - cdrom:
                   bus: sata
                 bootOrder: 2
                 name: cdromiso
    
               - disk:
                   bus: virtio
                 name: harddrive
                 bootOrder: 1
    
               - disk:
                   bus: virtio
                 name: harddrive2
    
               - disk:
                  bus: virtio
                 name: harddrive3
    
               - cdrom:
                   bus: sata
                   readonly: true
                 name: virtio-drivers
             machine:
               type: q35
             resources:
               requests:
                 memory: 8Gi
           volumes:
           - name: cdromiso
             persistentVolumeClaim:
               claimName: win2019-os
           - name: harddrive
             persistentVolumeClaim:
               claimName: win2019-disk0
           - name: harddrive2
             persistentVolumeClaim:
               claimName: win2019-disk1
           - name: harddrive3
             persistentVolumeClaim:
               claimName: win2019-disk2
           - name: virtio-drivers
             containerDisk:
               image: kubevirt/virtio-container-disk
               imagePullPolicy: IfNotPresent
    
  • Spesifikasi fie untuk instalasi ISO Linux

    vagserv1:~/kubevirt-vm-spec> cat linux-iso-dynamic-endpoint.yaml
    
    apiVersion: v1
    kind: PersistentVolumeClaim
    
    metadata:
      name: centos-disk1
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Block
      resources:
        requests:
          storage: 30Gi
      storageClassName: best-effort
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: centos-disk2
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Block
      resources:
        requests:
          storage: 30Gi
      storageClassName: best-effort
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: centos-disk3
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Block
      resources:
        requests:
          storage: 30Gi
      storageClassName: best-effort
    ---
    apiVersion: kubevirt.io/v1alpha3
    kind: VirtualMachine
    metadata:
      name: centos
    spec:
      running: false
      template:
        metadata:
          labels:
            kubevirt.io/domain: centos
        spec:
          domain:
            cpu:
              cores: 4
            devices:
              disks:
              - cdrom:
                  bus: sata
                bootOrder: 2
                name: cdromiso
              - disk:
                  bus: virtio
                name: harddrive
                bootOrder: 1
              - disk:
                  bus: virtio
                name: harddrive2
              - disk:
                 bus: virtio
                name: harddrive3
            machine:
              type: q35
            resources:
              requests:
                memory: 8Gi
          volumes:
          - name: cdromiso
            persistentVolumeClaim:
              claimName: centos-os
          - name: harddrive
            persistentVolumeClaim:
              claimName: centos-disk1
          - name: harddrive2
            persistentVolumeClaim:
              claimName: centos-disk2
          - name: harddrive3
            persistentVolumeClaim:
              claimName: centos-disk3