kubernetes + kubevirt 安装 CDI
CDI 是什么
1 containerized data importer 数据导入到 kubenetes 服务,并改进了管理KubeVirtualt及其存储的工作流程
2 CDI 为了用于 kubevirt 并用于导入虚拟机映像
3 可以通过创建 PVC, 自动以通过导入指定的声明,创建 raw 镜像,关联到对应 PVC
4 通过 DataVolumes 用作 KubeVirt VM 的磁盘的设备
5 DataVolumes是Kubernetes资源PVC(Persistent Volume Claim)的抽象,它还利用其他CDI特性来简化将数据导入Kubernete集群的过程。
DataVolumes可以自己定义或嵌入VirtualMachine资源定义中第一种方法可以用于根据 DataVolume 状态阶段编排事件
第二种方法可以简化为 VM 提供存储的过程6 CDI 主要三个功能
将 images 映像从 web服务器 或 registry 导入到 DataVolume
将本地 images 映像上载到DataVolume
将现有PVC克隆到DataVolume
目的
在 kubernetes 部署 kubevirt ( 参考 kubernetes + kubevirt-0.58.0 部署 )
部署 cdi
参考
镜像
| 名称 | 版本 |
|---|---|
| quay.io/kubevirt/cdi-controller | v1.55.2 |
| quay.io/kubevirt/cdi-importer | v1.55.2 |
| quay.io/kubevirt/cdi-cloner | v1.55.2 |
| quay.io/kubevirt/cdi-apiserver | v1.55.2 |
| quay.io/kubevirt/cdi-uploadserver | v1.55.2 |
| quay.io/kubevirt/cdi-uploadproxy | v1.55.2 |
| quay.io/kubevirt/cdi-operator | v1.55.2 |
部署
部署 cdi
版本当前使用 v1.55.2
$ export VERSION=$(curl -s https://api.github.com/repos/kubevirt/containerized-data-importer/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
部署 operator
$ kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/$VERSION/cdi-operator.yaml
namespace/cdi created
customresourcedefinition.apiextensions.k8s.io/cdis.cdi.kubevirt.io created
clusterrole.rbac.authorization.k8s.io/cdi-operator-cluster created
clusterrolebinding.rbac.authorization.k8s.io/cdi-operator created
serviceaccount/cdi-operator created
role.rbac.authorization.k8s.io/cdi-operator created
rolebinding.rbac.authorization.k8s.io/cdi-operator created
deployment.apps/cdi-operator created
configmap/cdi-operator-leader-election-helper created
参考 pod
# kubectl -n cdi get pod
NAME READY STATUS RESTARTS AGE
cdi-operator-76ffcb6c69-5n96k 1/1 Running 0 41s
部署 cr
$ kubectl create -f https://github.com/kubevirt/containerized-data-importer/releases/download/$VERSION/cdi-cr.yaml
启用 CDI 特性
部署 CDI 需要启用 DataVolumes 特性
需要创建 kubevirt-config ConfigMap
需要对应 kubevirt 部署对应的 namespace (默认 kubevirt)
cat kubevirt-config-cm.yaml
---
apiVersion: v1
data:
feature-gates: DataVolumes
kind: ConfigMap
metadata:
name: kubevirt-config
namespace: kubevirt
kubectl apply -f kubevirt-config-cm.yaml
假如没有启用 datavolume 则返回下面信息
# kubectl -n kubevirt logs virt-controller-6d594d9b54-mqdtj | grep DataVolume
{"component":"virt-controller","level":"info","msg":"CDI not detected, DataVolume integration disabled","pos":"application.go:392","timestamp":"2023-02-07T03:25:37.705693Z"}
{"component":"virt-controller","level":"info","msg":"STARTING informer fakeDataVolumeInformer","pos":"virtinformers.go:330","timestamp":"2023-02-07T03:25:37.726211Z"}
假如启用了 datavolume, 则返回下面信息
# kubectl -n kubevirt logs virt-controller-6d594d9b54-mqdtj |grep DataVolume
{"component":"virt-controller","level":"info","msg":"CDI detected, DataVolume integration enabled","pos":"application.go:384","timestamp":"2023-02-13T06:17:58.175353Z"}
更多推荐
所有评论(0)