🖥️
KubeVirt を試してみた
下準備
今回検証に使った Kubernetes クラスターは Hyper-V 環境上の仮想マシンなので、あらかじめ Nested Virtualizaiton をオンにしておきます。
Set-VMProcessor -VMName dualstack_k8s_worker -ExposeVirtualizationExtensions $true
Get-VMProcessor -VMName dualstack_k8s_worker | Format-List VMName,ExposeVirtualizationExtensions
VMName : dualstack_k8s_worker
ExposeVirtualizationExtensions : True
KubeVirt のセットアップ
Installation - KubeVirt User-Guide に沿ってセットアップをしていきます。
2023/1/8 時点の最新バージョンは v0.58.0 でした。
$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
$ echo $RELEASE
v0.58.0
$ curl -O -s -L https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-operator.yaml
$ curl -O -s -L https://github.com/kubevirt/kubevirt/releases/download/${RELEASE}/kubevirt-cr.yaml
$ kubectl apply -f kubevirt-operator.yaml
$ kubectl apply -f kubevirt-cr.yaml
$ kubectl -n kubevirt wait kv kubevirt --for condition=Available --timeout 300s
$ kubectl -n kubevirt get pod
NAME READY STATUS RESTARTS AGE
virt-api-598b86c466-b4mdv 1/1 Running 0 2m50s
virt-api-598b86c466-lmrkc 1/1 Running 0 2m50s
virt-controller-5d7747c4d9-z5bkr 1/1 Running 0 2m25s
virt-controller-5d7747c4d9-z779n 1/1 Running 0 2m25s
virt-handler-2mf5g 1/1 Running 0 2m25s
virt-operator-66c966d959-2pjj9 1/1 Running 0 3m26s
virt-operator-66c966d959-fzk4t 1/1 Running 0 3m26s
ついでに virtctl コマンドを Krew 経由で入れておきます。
( Krew のインストール方法は [Installing · Krew](https://krew.sigs.k8s.io/docs/user-guide/setup/install/#bash を参照)
$ kubectl krew install virt
$ kubectl virt
Available Commands:
addvolume add a volume to a running VM
completion generate the autocompletion script for the specified shell
console Connect to a console of a virtual machine instance.
expose Expose a virtual machine instance, virtual machine, or virtual machine instance replica set as a new service.
fslist Return full list of filesystems available on the guest machine.
guestfs Start a shell into the libguestfs pod
guestosinfo Return guest agent info about operating system.
help Help about any command
image-upload Upload a VM image to a DataVolume/PersistentVolumeClaim.
memory-dump Dump the memory of a running VM to a pvc
migrate Migrate a virtual machine.
migrate-cancel Cancel migration of a virtual machine.
pause Pause a virtual machine
permitted-devices List the permitted devices for vmis.
port-forward Forward local ports to a virtualmachine or virtualmachineinstance.
removevolume remove a volume from a running VM
restart Restart a virtual machine.
scp SCP files from/to a virtual machine instance.
soft-reboot Soft reboot a virtual machine instance
ssh Open a SSH connection to a virtual machine instance.
start Start a virtual machine.
stop Stop a virtual machine.
unpause Unpause a virtual machine
usbredir Redirect a usb device to a virtual machine instance.
userlist Return full list of logged in users on the guest machine.
version Print the client and server version information.
vnc Open a vnc connection to a virtual machine instance.
Use "kubectl virt <command> --help" for more information about a given command.
Use "kubectl virt options" for a list of global command-line options (applies to all commands).
テスト用の VM を起動してみる
KubeadmでKubernetesクラスターを作ってKubeVirtでVMを動かす - 仮想化通信 を参考にさせてもらい、CirrOS というテスト用の仮想マシンを起動してみます。
まずは仮想マシンを作ります。
$ curl -O -s -L https://raw.githubusercontent.com/kubevirt/kubevirt.github.io/master/labs/manifests/vm.yaml
$ kubectl apply -f vm.yaml
virtualmachine.kubevirt.io/testvm created
$ kubectl get vm
NAME AGE STATUS READY
testvm 7s Stopped False
仮想マシンを作っただけだと起動していないので kubectl virt
= virtctl
コマンドで起動してみます。
$ kubectl virt start testvm
VM testvm was scheduled to start
$ kubectl get vm
NAME AGE STATUS READY
testvm 48s Starting False
$ kubectl get vm
NAME AGE STATUS READY
testvm 64s Running True
$ kubectl get vmi
NAME AGE PHASE IP NODENAME READY
testvm 55s Running 172.24.2.145 dsk8snode1 True
起動してきたらおもむろに SSH 接続してみます。
$ ssh cirros@172.24.2.145
cirros@172.24.2.145's password: gocubsgo
$ uname -a
Linux testvm 4.4.0-28-generic #47-Ubuntu SMP Fri Jun 24 10:09:13 UTC 2016 x86_64 GNU/Linux
$ uptime
08:05:46 up 1 min, 1 users, load average: 0.00, 0.00, 0.00
出来ましたヽ(^。^)丿
CDI はまた次のタイミングで……
とりあえずはここまで。
続きは別記事にまとめておきます。
参考にしている URL
次にやること
Discussion