VM pada Kubernetes (kubevirt)
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.
Untuk mengaktifkan kubevirt, perbarui bidang
action
dengan nilaienable
dan terapkan file spesifikasi /usr/share/diamanti/manifests/examples/k8scrs/feature-kubevirt-cr.yaml seperti yang ditunjukkan di bawah iniapiVersion: 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
Untuk memeriksa apakah fitur KubeVirt diaktifkan pada tingkat klaster, gunakan perintah berikut:
$ kubectl get features.spektra.diamanti.io NAME AGE kubevirt 2m17s
Untuk mengaktifkan Kubevirt pada node, perbarui fitur kubevirt dengan perintah berikut:
Catatan
Perbarui
nodeList
dengan daftar node tempat kubevirt akan diaktifkan,operation
would beadd
danaction
would beupdate
.$ 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
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>
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
nodeName
jalur yang ditentukan dalamimagePath
.action
Kolom dalam file harus memiliki nilaiimage-upload
.virtualMachineName
adalah nama tempat virtualMachine harus dibuat. Jika ini adalah drive pertama,dataDrive
kolom akan menjadifalse
. Untuk mendapatkan ukuran pvc, silakan lihat Hitung ukuran pvc yang akan diunggah .Catatan
nama pada Kind VirtualMachine harus sama dengan VirtualMachineName.
- 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
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>
Untuk mengunggah citra qcow berikutnya untuk VirtualMachine yang sama, salin spesifikasi di atas dengan perubahan berikut,
name
akan berbeda, Anda dapat menggunakan konvensi penamaannya sebagai centos-data<angka> misalnyacentos-data-0
,action
akan menjadiimage-upload
,VirtualMachineName
akan samacentos
, modifikasivirtualMachiMachineConfig
tergantung 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
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
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.
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
firmware
kunci.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
Untuk Menggunakan PVC yang Ada di VM.
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.
Buat objek Mesin Virtual diamanti menggunakan spesifikasi berikut.
Catatan
name
bidang dalam metadata danvirtualMachineName
bidang akan memiliki nilai yang sama dengan nama Mesin Virtual yang dibuat pada langkah (1).dataDrive
lapangan akan menjadifalse
.namespace
bidang 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
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.
Untuk memverifikasi bahwa pod Mesin Virtual sedang berjalan
$ kubectl get vm NAME AGE VOLUME centos 10s
Untuk mendapatkan informasi terperinci tentang Mesin Virtual
$ kubectl get vmi NAME AGE PHASE IP NODENAME centos 7m32s Running 172.16.153.11/24 appserv66
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
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.
Untuk menghapus node dari fitur Kubevirt, edit objek feature.spektra.diamanti.io/kubevirt dan hapus node dari bidang nodeList .
Catatan
nodeList
akan memiliki node tempat kubevirt akan dinonaktifkan,operation
would bedelete
danaction
would beupdate
.$ 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
Untuk menonaktifkan fitur Kubevirt, edit objek feature.spektra.diamanti.io/kubevirt dan tentukan nilai bidang “action” sebagai Disable .
Catatan
Semua node
nodeList
perlu 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.
Untuk mengaktifkan KubeVirt, pilih Pengaturan Lanjutan , dan di Fitur geser tombol untuk memilih KubeVirt .
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.
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.
Untuk mengunggah/menambahkan disk tambahan Pilih Data Disk-> Buat PVC, isi kolom yang diperlukan.
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.
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.
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.
Konsol VM terbuka di tab baru di browser.
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.
Konfirmasikan operasi dengan memilih Hentikan Mesin Virtual .
Status operasi Stop ditampilkan di sudut kanan atas.
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
Edit bidang yang diperlukan dan pilih opsi REDEPLOY, maka Mesin Virtual akan di-deploy ulang.
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.
Konfirmasikan penghapusan.
Status operasi ditampilkan di sudut kanan atas.
Penghapusan dapat diverifikasi dalam daftar VM.
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.
Status operasi ditampilkan di sudut kanan atas.
Untuk Menonaktifkan KubeVirt, buka Pengaturan Lanjutan dan di bawah Fitur, hapus pilihan KubeVirt.
Untuk menonaktifkan Kubevirt, semua node harus dihapus dari fitur Kubevirt.
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: falseCatatan
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
Untuk mengaktifkan kubevirt dan menjadwalkan VM kubevirt pada node, rujuk VM di Kubernetes (kubevirt) .
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.
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.
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.
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
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
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.
Gunakan perintah kubectl create -f windows-iso-dynamic-endpoint.yaml untuk membuat mesin virtual berdasarkan spesifikasi yang dimodifikasi.
Mulai mesin Virtual dengan mengikuti langkah 9 Menggunakan KubeVirt CLI .
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.
Untuk instalasi Windows
Pada dialog instalasi Windows, masukkan bahasa Anda dan preferensi lainnya lalu pilih Berikutnya .
Pilih sistem operasi yang akan diinstal dan pilih Berikutnya .
Pilih Muat Driver untuk menginstal driver penyimpanan dan jaringan.
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**
Pilih driver lalu pilih Berikutnya untuk menginstal Redhat Virtio Ethernet Adaptor .
- Pilih Browse dan navigasikan ke folder untuk menginstal driver penyimpanan.
Telusuri ke virtio cdrom dan pilih cdrom->viostor->2k19->amd64
Pilih driver dan kemudian pilih Berikutnya untuk menginstal Redhat Virtio Scsi Controller .
Untuk instalasi linux
Pada dialog instalasi Linux, pilih Instal .
Pada dialog instalasi Linux, pilih bahasa untuk instalasi dan pilih Lanjutkan .
Buat Pengguna dan masukkan Kata Sandi Root dan pilih Mulai Instalasi .
Catatan
Driver Virtio sudah terinstal di Linux, jadi tidak perlu menginstalnya.
Jika jaringan belum diaktifkan setelah instalasi, Navigasi ke Pengaturan - Jaringan , lalu Aktifkan Koneksi Kabel .
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
Tidak ada komentar:
Posting Komentar