學編程做網站網絡推廣員的前景
本文將將介紹如何安裝 KubeVirt 和使用 KubeVirt 配置 Windows 虛擬機。
前置條件
-
準備 Ubuntu 操作系統(tǒng),一定要安裝圖形化界面。
-
安裝 Docker(最新版本)
-
安裝
libvirt
和TigerVNC
:apt install libvirt-daemon-system libvirt-clients tigervnc-viewer
-
準備一個 Kubernetes 集群,可以參考此鏈接
-
在 Kubernetes 集群上準備存儲,可以參考此鏈接
安裝 KubeVirt
-
導出最新的 KubeVirt 發(fā)行版本:
export RELEASE=$(curl -s https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
-
部署 KubeVirt Operator:
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
-
創(chuàng)建 KubeVirt 自定義資源 (CR) 以觸發(fā)安裝:
kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml
-
加載虛擬化所需的內核模塊:
modprobe kvm modprobe kvm_intel #如果執(zhí)行失敗,排查是否支持嵌套虛擬化
安裝容器化數(shù)據導入 (CDI)
安裝最新的 CDI 發(fā)行版本:
VERSION=$(basename $(curl -s -w %{redirect_url} https://github.com/kubevirt/containerized-data-importer/releases/latest))
kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/$VERSION/cdi-operator.yaml
kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/$VERSION/cdi-cr.yaml
安裝 Virtctl
下載 virtctl
的最新 KubeVirt 版本:
export VERSION=$(curl -s https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
wget https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-linux-amd64
上傳 Windows 鏡像
- 使用
kubectl get svc -ncdi
獲取 uploadproxy-url 的地址,輸出如下:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cdi-api ClusterIP 10.233.33.110 <none> 443/TCP 46h
cdi-prometheus-metrics ClusterIP 10.233.15.23 <none> 8080/TCP 46h
cdi-uploadproxy ClusterIP 10.233.49.108 <none> 443/TCP 46h
使用 virtctl
上傳 Windows 鏡像:
virtctl image-upload dv win10 --size=10Gi --image-path=./WinSvr2022_2024.0617.iso --storage-class openebs-hostpath --access-mode=ReadWriteOnce --uploadproxy-url=https://10.233.49.108 --insecure --force-bind
創(chuàng)建 vmi
準備以下 vmi.yaml 文件,并執(zhí)行 kubectl apply -f vmi.yaml
命令來創(chuàng)建 vmi 虛擬機:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: disk-windows
spec:accessModes:- ReadWriteOnceresources:requests:storage: 15GistorageClassName: hostpath
---
apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:labels:special: vmi-windowsname: vmi-windows
spec:domain:clock:timer:hpet:present: falsehyperv: {}pit:tickPolicy: delayrtc:tickPolicy: catchuputc: {}cpu:cores: 2devices:disks:- disk:bus: sataname: pvcdisk- cdrom:bus: sataname: winisointerfaces:- masquerade: {}model: e1000name: defaulttpm: {}features:acpi: {}apic: {}hyperv:relaxed: {}spinlocks:spinlocks: 8191vapic: {}smm: {}firmware:bootloader:efi:secureBoot: trueuuid: 5d307ca9-b3ef-428c-8861-06e72d69f223resources:requests:memory: 4Ginetworks:- name: defaultpod: {}terminationGracePeriodSeconds: 0volumes:- name: pvcdiskpersistentVolumeClaim:claimName: disk-windows- name: winisopersistentVolumeClaim:claimName: win11cd-pvc
通過 kubectl get vmi
命令可以看到當前虛擬機的狀態(tài):
NAME AGE PHASE IP NODENAME READY
vmi-windows 23h Running 10.233.127.122 ubuntu True
通過 VNC 訪問 Windows 虛擬機
使用 VNC 訪問虛擬機:
virtctl vnc vmi-windows
就可以在界面上看到以下輸出:
有關更詳細的步驟,請參考官方指南:使用 KubeVirt 從 ISO 安裝 Microsoft Windows 11