Kubevirtを試してみた

投稿者: | 10月 26, 2022

ひょんなことで。。。「ひょんなことで」って言葉はどこからきた?調べてみたらアブラムシから来ているらしい。へぇー。(https://www.fujiseishin-jh.ed.jp/field_diary/2013/01/5175/ )

「竹の花が咲くと竹が枯れる」のを知ったくらいびっくりしたよw

もとい。

ひょんなことで、kubevirtを試すことに。kubevirtのクラスタリソースを確認したいだけなので、簡単に立ててみた。

 

閑話休題

 

環境

 Ubuntu Server 20.04.5 amd64  / Docker / Kind 0.16

VMで建てたが、VMでKVMが動かせるようにNestの設定をしている。

UntitledImage

DockerやKindのインストール方法は割愛。後でK3sでも試してみたが動作した。

Kubevirtなので、KVMがいる。

cat /proc/cpuinfo | grep vmx
apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils ; apt clean ; apt update
reboot

KVMの環境確認

kvm-ok
lsmod | grep kvm
virt-host-validate qemu

UntitledImage

クラスタは以下のコマンドで立てた。

kind create cluster --name demo --image kindest/node:v1.23.12 --wait 600s

Kubevirtを以下のページを参考にして、kubevirtをインストール

https://kubevirt.io/quickstart_kind/

export VERSION=$(curl -s https://api.github.com/repos/kubevirt/kubevirt/releases | grep tag_name | grep -v -- '-rc' | sort -r | head -1 | awk -F': ' '{print $2}' | sed 's/,//' | xargs)
echo $VERSION
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-operator.yaml
kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/kubevirt-cr.yaml
kubectl -n kubevirt wait kv kubevirt --for condition=Available

しかし、一向にインストールができない。

UntitledImage

pod/virt-handlerがCrashLoopBackOffになってしまう。

さらに kubectl get kubevirts -n kubevirt を実行すると、ずっとDeployingのままで、一向にDeployedにならない。

UntitledImage

また kubectl api-resources を実行すると

UntitledImage

error: unable to retrieve the complete list of server APIs: subresources.kubevirt.io/v1: the server is currently unable to handle the request, subresources.kubevirt.io/v1alpha3: the server is currently unable to handle the request
と表示されてしまう。

 

解決方法

vi /etc/apparmor.d/usr.sbin.libvirtd

/usr/libexec/qemu-kvm PUx, を追加する。

UntitledImage

その後、apparmerをリロード

systemctl reload apparmor.service

治った。

UntitledImage

解決の際に参考にしたページ

https://github.com/kubevirt/kubevirt/issues/7771#issuecomment-1131213000
https://github.com/kubevirt/kubevirt/issues/4303#issuecomment-830365183

どうやら、Ubuntu 20.04特有の問題だった様子。再度やったときは、Kubevirtの構築前にこれをやれば、問題なく進んだ。

これで以下のコマンドが通り、クライアントがインストールできる。

kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.phase}"
kubectl -n kubevirt get pod,daemonsets,deployments.apps
VERSION=$(kubectl get kubevirt.kubevirt.io/kubevirt -n kubevirt -o=jsonpath="{.status.observedKubeVirtVersion}")
ARCH=$(uname -s | tr A-Z a-z)-$(uname -m | sed 's/x86_64/amd64/') || windows-amd64.exe
echo ${ARCH}
curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/${VERSION}/virtctl-${VERSION}-${ARCH}
chmod +x virtctl
sudo install virtctl /usr/local/bin

 

 

動作確認

以下のページで動作確認ができる。

https://kubevirt.io/labs/kubernetes/lab1

kubectl apply -f https://kubevirt.io/labs/manifests/vm.yaml

cirrosが動いた。cirrosを触ったのは、OpenStack以来だw

と言うわけで動作確認完了。

コメントを残す