5.2. 使用 OpenShift Virtualization 置备设备
您可以使用托管在 OCI 容器 registry 上的 QCoW2 容器磁盘镜像在 OpenShift Virtualization 上置备虚拟机。
如果您的操作系统镜像还没有包含 Red Hat Edge Manager 代理注册配置,您可以在置备时通过 cloud-init
用户数据注入配置。
先决条件
-
已安装
flightctl
CLI 并登录到 Red Hat Edge Manager 服务实例。 -
已安装
oc
CLI,使用它来登录到 OpenShift 集群实例,并改为您要创建虚拟机的项目。
5.2.1. 创建 cloud-init 配置
要创建 cloud-init
配置,请完成以下步骤:
流程
运行以下命令,请求新的 Red Hat Edge Manager 代理注册配置并将其存储在名为
config.yaml
的文件中:flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
flightctl certificate request --signer=enrollment --expiration=365d --output=embedded > config.yaml
Copy to Clipboard Copied! 运行以下命令,创建一个名为
cloud-config.yaml
的云配置用户数据文件,该文件将代理配置放在第一次引导的正确位置:cat <<EOF > cloud-config.yaml #cloud-config write_files: - path: /etc/flightctl/config.yaml content: $(cat config.yaml | base64 -w0) encoding: b64 EOF
cat <<EOF > cloud-config.yaml #cloud-config write_files: - path: /etc/flightctl/config.yaml content: $(cat config.yaml | base64 -w0) encoding: b64 EOF
Copy to Clipboard Copied! 创建包含云配置用户数据文件的 Kubernetes
Secret
:oc create secret generic enrollment-secret --from-file=userdata=cloud-config.yaml
oc create secret generic enrollment-secret --from-file=userdata=cloud-config.yaml
Copy to Clipboard Copied!
5.2.2. 创建虚拟机
创建一个虚拟机,其主磁盘填充自您的 QCoW2 容器磁盘镜像和 cloud-init
配置驱动器,该磁盘从您的注册 secret 填充。
完成以下步骤:
流程
运行以下命令,创建具有
VirtualMachine
资源清单的文件:cat <<EOF > my-bootc-vm.yaml apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: my-bootc-vm spec: runStrategy: RerunOnFailure template: spec: domain: cpu: cores: 1 memory: guest: 1024M devices: disks: - name: containerdisk disk: bus: virtio - name: cloudinitdisk disk: bus: virtio volumes: - name: containerdisk containerDisk: image: ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} - name: cloudinitdisk cloudInitConfigDrive: secretRef: name: enrollment-secret EOF
cat <<EOF > my-bootc-vm.yaml apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: name: my-bootc-vm spec: runStrategy: RerunOnFailure template: spec: domain: cpu: cores: 1 memory: guest: 1024M devices: disks: - name: containerdisk disk: bus: virtio - name: cloudinitdisk disk: bus: virtio volumes: - name: containerdisk containerDisk: image: ${OCI_DISK_IMAGE_REPO}:${OCI_IMAGE_TAG} - name: cloudinitdisk cloudInitConfigDrive: secretRef: name: enrollment-secret EOF
Copy to Clipboard Copied! 运行以下命令,将资源清单应用到集群:
oc apply -f my-bootc-vm.yaml
oc apply -f my-bootc-vm.yaml
Copy to Clipboard Copied!
其他资源
-
有关如何通过
cloud-init
用户数据注入配置的更多信息,请参阅 Cloud-init 文档。 - 请参阅为 Red Hat OpenShift Virtualization 构建镜像。