Menjalankan Windows Server Dengan Kubevirt

April 15, 2023

Menjalankan Windows Server Dengan Kubevirt

Pada artikel ini, saya akan menunjukkan bagaimaan cara memenuhi kebutuhan server Windows Kita dengan KubeVirt. Saya juga akan menjelaskan beberapa kasus di mana Kita bisa memilih Kubevirt sebagai pilihan yang tepat.


Latar Belakang

Saya bekerja untuk perusahaan yang memiliki applikasi yang berjalan di Server Windows, dan biaya menggunakan windows di Public Cloud cukup tinggi. Untuk mengatasi tantangan ini, saya mengusulkan solusi untuk menjalankan server Windows pada BMAAS yang sudah kita sewa (sudah menjadi cluster kubernetes). Pendekatan ini tidak hanya memberikan latensi yang lebih baik karena server ada di Indonesia, tetapi juga signifikan mengurangi biaya.

Persyaratan

1. Virtualisasi Diaktifkan

Pastikan node kubernetes Kita sudah mengaktifkan mode virtualisasi.

2. Penyimpanan Backend Yang Persisten

Kita membutuhkan storageclass kubernetes dengan penyimpanan backend persisten seperti CEPH, Longhorn, vSAN, atau apa pun.

3. Pahami Apa yang Dilakukan Kubevirt

Jika Anda belum memahami apa yang dilakukan kubevirt, kubevirt pada dasarnya melakukan automasi terhadap operasional kvm dan qemu dengan YAML kubernetes. Lihat kubevirt.io

4. Menginstal KubeVirt dan Container Data Importer Engine

Ikuti panduan dari dokumen resmi, atau baca artikel saya sebelumnya tentang kubevirt.

5. Plugin Virt Kubectl

Kita memerlukan plugin ini untuk memudahkan hidup kita, instal dengan krew.sigs.k8s.io

$ kubectl krew install virt                  

Mari Buat Windows Kita

Dalam blog ini, saya akan menggunakan image base dari cloudbase.it, karena image tersebut sudah terdapat cloudinit atau beberapa orang mungkin mengatakan "Cloud Native".

1. Unduh Image Base

Unduh image base dari tempat di mana kita dapat mengakses cluster kita dengan kubectl.

2. Forward Service CDI Upload Proxy ke Local

Container data Importer Engine mempunyai proxy yang dapat kita gunakan untuk mengunggah file image base kita mejadi PVC. Di sini saya melakukan forwarding port 6969 di localhost saya menuju service cdi-uploadproxy

kubectl port-forward svc/cdi-uploadproxy -n cdi 6969:443

3. Unggah Image Base Dengan Virt Plugin

kubectl virt image-upload \
--image-path=./windows_server_2012_kvm.qcow2 \
--pvc-name=iso-winserver-r12 \
--access-mode=ReadWriteOnce \
--pvc-size=20G \
--storage-class=kind-local \
--uploadproxy-url=https://localhost:6969 \
--insecure

4. Buat Spesifikasi Perangkat Windows Kita

apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
  creationTimestamp: 2023-04-10T15:03:08Z
  generation: 1
  labels:
    kubevirt.io/os: windows
  name: windowsvm1
spec:
  running: true
  template:
    metadata:
      creationTimestamp: null
      labels:
        kubevirt.io/domain: windowsvm1
    spec:
      domain:
        cpu:
          cores: 4
        devices:
          disks:
          - disk:
              bus: virtio
            name: disk0
          - cdrom:
              bus: sata
              readonly: true
            name: cloudinitdisk
        machine:
          type: q35
        resources:
          requests:
            memory: 4096M
      volumes:
      - name: disk0
        persistentVolumeClaim:
          claimName: iso-winserver-r12
      - cloudInitConfigDrive:
          userData: |
            #ps1
            net user Administrator THizisMypzzzowrd
        name: cloudinitdisk

5. Verifikasi VM Running State

Verify VM Running State


Profile picture

Written by Nicolas Julian Seseorang yang mencoba berkarya. Chit Chat with me in Twitter