🍣
KubeVirt を試してみた (2)
KubeVirt を試してみた の続きです。
CDI のインストール
$ export VERSION=$(basename $(curl -s -w %{redirect_url} https://github.com/kubevirt/containerized-data-importer/releases/latest))
$ echo $VERSION
v1.55.2
$ curl -O -s -L https://github.com/kubevirt/containerized-data-importer/releases/download/$VERSION/cdi-operator.yaml
$ curl -O -s -L https://github.com/kubevirt/containerized-data-importer/releases/download/$VERSION/cdi-cr.yaml
$ kubectl apply -f cdi-operator.yaml
$ kubectl apply -f cdi-cr.yaml
Ubuntu 22.10 のイメージをインポートしてみる
CDI のインストールが出来たので、早速 Ubuntu 22.10 (kinetic) の Cloud image を PVC としてインポートしてみます。
pvc_ubuntu-22.10.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ubuntu-22.10
labels:
app: containerized-data-importer
annotations:
cdi.kubevirt.io/storage.import.endpoint: "https://cloud-images.ubuntu.com/kinetic/current/kinetic-server-cloudimg-amd64.img"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
$ kubectl apply -f pvc_ubuntu-22.10.yaml
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
ubuntu-22.10 Bound pvc-14d5bee1-8dbe-4eb2-a213-6a71bfa5e005 8Gi RWO truenas-iscsi-csi 7s
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
importer-ubuntu-22.10 1/1 Running 0 32s
ubuntu 1/1 Running 1 (19h ago) 2d21h
virt-launcher-testvm-6h44t 2/2 Running 0 18h
virt-launcher-ubuntu-mhxp5 2/2 Running 0 18h
PVC が確保されて、イメージのインポート処理用の Pod が作られています。
インポート処理の経過はログに出力されているので importer
で始まる Pod の出力を眺めてみます。
$ kubectl logs -f importer-ubuntu-22.10
I0109 02:25:51.607169 1 importer.go:104] Starting importer
I0109 02:25:51.607195 1 importer.go:171] begin import process
I0109 02:25:57.564548 1 data-processor.go:379] Calculating available size
I0109 02:25:57.564586 1 data-processor.go:391] Checking out file system volume size.
I0109 02:25:57.564594 1 data-processor.go:399] Request image size not empty.
I0109 02:25:57.564603 1 data-processor.go:404] Target size 7904002048.
I0109 02:25:57.564674 1 util.go:39] deleting file: /data/lost+found
I0109 02:25:57.630760 1 nbdkit.go:303] Waiting for nbdkit PID.
I0109 02:25:58.131279 1 nbdkit.go:324] nbdkit ready.
I0109 02:25:58.131300 1 data-processor.go:282] New phase: Convert
I0109 02:25:58.131336 1 data-processor.go:288] Validating image
I0109 02:26:00.805783 1 qemu.go:259] 0.00
インポート処理には約2時間ぐらいかかりました。。。
永続化ボリュームを持った仮想マシンを立ててみる
インポートした PVC をそのまま使うと、また別な仮想マシンを立てるときに最初からインポート処理をし直さないと行けなくなるので、複製してから KubeVirt の仮想マシンを生成してみます。
参考: kubevirt を試す の 「追記 2022-09-29」のやり方
ubuntu-vm.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ubuntu-vm-root
spec:
dataSource:
name: ubuntu-22.10
kind: PersistentVolumeClaim
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
---
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
generation: 1
labels:
kubevirt.io/os: linux
name: ubuntu-vm
spec:
running: true
template:
spec:
domain:
cpu:
cores: 2
devices:
disks:
- disk:
bus: virtio
name: disk0
cache: writethrough
- cdrom:
bus: sata
readonly: true
name: cloudinitdisk
machine:
type: q35
resources:
requests:
memory: 1024M
volumes:
- dataVolume:
name: ubuntu-vm-root
name: disk0
- cloudInitNoCloud:
userData: |
#cloud-config
hostname: ubuntu-vm
ssh_pwauth: true
chpasswd:
list: |
ubuntu:ubuntu
expire: false
name: cloudinitdisk
仮想マシン画面に接続する
virtctl
コマンドを用いると仮想マシンの画面に VNC 接続することが出来ます。
$ kubectl virt vnc [仮想マシン名] --proxy-only --address 0.0.0.0
実は、上記の手順で起動すると sshd が無効化されている & シリアルコンソール接続が使えない 状態になってるので、VNC 接続で一度手で直してあげる必要があるのでした。
仮想マシンのブートに時間がかかる
仮想マシンを起動すると qemu の SeaBIOS 画面で最初 1 分ぐらいタイムアウト待ちのような感じで止まってしまっています。この辺は、あとで原因を追いかけようと思います。
Discussion