Open4

win11のWSL2&Nested VMでKVM/QEMUを使ってminikubeを動かす

ピン留めされたアイテム
ほなふくほなふく

kvm と cockpit のセットアップなら以下を実行

sudo apt install qemu-kvm virt-manager cockpit cockpit-machines

sudo chmod a+rw /dev/kvm
virt-host-validate
# 結果が FAIL になってなければ動く

sudo systemctl enable --now cockpit.socket
ほなふくほなふく

とりあえずWSLを入れる

wsl --install

minikubeを入れる

https://minikube.sigs.k8s.io/docs/start/

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

qemu-kvmを入れる

https://ascii.jp/elem/000/004/039/4039729/2/

sudo apt-get update
sudo apt install qemu-kvm 

# 起動確認
sudo qemu-system-x86_64 -nographic -enable-kvm

Ctrl+Aの後Cキーを押とQEMUのコマンドが入力できるのでinfo kvmと入力する。

kvm support: enabled

となっていれば問題ないのでquitで終了する

/var/run/libvirt/libvirt-sockが見つからない問題を解決する

https://stackoverflow.com/questions/62768439/cannot-instantiate-qemu-kvm-vm-inside-wsl2-windows-subsystem-for-linux-2-on-wi

このままでは '/var/run/libvirt/libvirt-sock': No such file or directoryと言われるので以下を実行する

sudo apt install virt-manager

# シェル再起動
exec $SHELL -l

# 環境チェック
virt-host-validate

QEMU: Checking if device /dev/kvm is accessibleがFAILになっているかもしれない
その場合は以下を実行

sudo chmod a+rw /dev/kvm
# 再度チェック
virt-host-validate

# それでもできなかったら
sudo chown root:kvm /dev/kvm
sudo chmod 660 /dev/kvm

kube系のCLIツールを入れる

minikubeを起動する前にkubectlがないとcheckでコケます

必須

  • kubectl
    何らかの方法で入れてください。私はaquaを使ってます。

任意

任意ですが合ったほうが幸せになれます

  • k9s
    kubectlの拡張です。TUIでいろいろできる
スクリーンショット

  • kubectx
    クラスタに接続するための認証情報を切り替えるやつです。

kvmを使ってminikubeを立ち上げる

https://minikube.sigs.k8s.io/docs/drivers/kvm2/

minikube start --driver=kvm2
ほなふくほなふく

トラブルシューティング

# 権限周り
sudo chmod a+rw /dev/kvm

# Install virt-manager
sudo apt install -y virt-manager
 
# Add youself to kvm and libvirt group
sudo usermod --append --groups kvm,libvirt "${USER}"
 
# Fix-up permission to avoid "Could not access KVM kernel module: Permission denied" error
sudo chown root:kvm /dev/kvm
sudo chmod 660 /dev/kvm
 
# Stat required services
sudo libvirtd &
sudo virtlogd &
 
# Launch virt-manager
virt-manager &