部署

更新时间:2025年12月21日 12:21 浏览:15

镜像下载

需要下载 .img 或.qcow2 格式的镜像

ubuntu .img 镜像下载地址:
全部: https://cloud-images.ubuntu.com/
22.04:https://cloud-images.ubuntu.com/jammy/current/

wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img

创建 VM(VirtualMachine)

类似于docker镜像

hostDisk 挂载 img 文件作为系统盘

vi tego-os.yaml
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
  name: tego-os
spec:
  runStrategy: Manual
  template:
    spec:
      domain:
        devices:
          disks:
          - name: sys-disk
            disk:
              bus: virtio
          interfaces:
          - name: default
            masquerade: {}
        resources:
          requests:
            cpu: 8
            memory: 16Gi
          limits:
            cpu: 8
            memory: 16Gi
      networks:
        - name: default
          pod: {}
      volumes:
      - name: cloudinitdisk
        cloudInitNoCloud:
          userData: |
              hostname: tego-os
              users:
                - name: ubuntu
                  ssh_authorized_keys: []
                  passwd: "$6$xG8aj7WU.Pvqvg23$VBbDPQlhgCsyx9ucyLClF3xWPTZKh2fwbbWIzI46zzuD4BoFVSYMnl/v3nXEydRybkSOG3cot4uGZx/H0LRdI0"
                  lock_passwd: false
                  sudo: ['ALL=(ALL) NOPASSWD:ALL']
                  shell: /bin/bash
              # 启用密码认证SSH
              ssh_pwauth: true
              # 配置串行控制台
              bootcmd:
                - [sh, -c, "echo 'console=ttyS0,115200n8' >> /target/boot/firmware/cmdline.txt"]
              # 更新系统包
              package_update: true
              package_upgrade: true
      - name: sys-disk
        hostDisk:
          path: /data/nas/kubevirt/vm/tego-os/jammy-server-cloudimg-amd64.img
          type: Disk
          shared: true

生成 SHA512 官码

 python3 -c 'import crypt; print(crypt.crypt("xxxxxx", crypt.mksalt(crypt.METHOD_SHA512)))'

执行

# 设置权限
# chmod -R 755 /data/nas/kubevirt/vm/tego-os/jammy-server-cloudimg-amd64.img

kubectl apply -f tego-os.yaml

kubectl get vm
磁盘类型
  • PersistentVolumeClaim - 该结构使用 PVC 做为存储,适用于数据持久化,即在虚拟机重启或者重建后数据依旧存在。使用的 PV 类型可以是 block 和 filesystem,使用 filesystem 时,会使用 PVC 上的 /disk.img,格式为 RAW 格式的文件作为硬盘。block 模式时,使用 block volume 直接作为原始块设备提供给虚拟机。
  • ephemeral - 基于后端存储在本地做一个写时复制(COW)镜像层,所有的写入都在本地存储的镜像中,VM 实例停止时写入层就被删除,后端存储上的镜像不变化。
  • containerDisk - 基于 scratch 构建的一个 docker image,镜像中包含虚拟机启动所需要的虚拟机镜像,可以将该 docker image push 到 registry,使用时从 registry 拉取镜像,直接使用 containerDisk 作为 VMI 磁盘,数据是无法持久化的。
  • hostDisk - 它使用节点上的磁盘镜像,类似于 hostpath,也可以在初始化时创建空的镜像。
  • dataVolume - 提供了在虚拟机启动流程中自动将虚拟机磁盘导入 pvc 的功能,在不使用 DataVolume 的情况下,用户必须先准备带有磁盘映像的 pvc,然后再将其分配给 VM 或 VMI。

创建 VMI(VirtualMachine)

似于docker镜像的运行实例容器


virtctl start tego-os


kubectl get vmi

# 进入虚拟机
virtctl console tego-os
# Successfully connected to vm-tego-os console. Press Ctrl+] or Ctrl+5 to exit console.
# 按 ctrl+] 或 Ctrl+5  退出虚拟机

配置 featureGates

官方说明:
https://kubevirt.io/user-guide/cluster_admin/activating_feature_gates/

kubectl edit kubevirt -n kubevirt kubevirt
spec:
  certificateRotateStrategy: {}
  configuration:
    developerConfiguration:
      featureGates:
      - HostDisk
      - Root

功能门控列表

功能名称 默认状态 功能描述
LiveMigration true (GA) 允许虚拟机无中断实时迁移
HotplugVolumes true (GA) 支持虚拟机运行时动态挂载/卸载卷
GPU false (Beta) 启用GPU设备直通功能
HostDisk false (Alpha) 允许虚拟机直接挂载宿主机磁盘(高危操作)
Snapshot true (GA) 提供虚拟机磁盘快照功能
Macvtap false (Alpha) 使用macvtap提供高性能网络接口
Sidecar false (Beta) 支持为虚拟机注入sidecar容器
NUMA false (Beta) 启用NUMA亲和性支持
CPUManager true (GA) CPU拓扑管理功能
IgnitionGate false (Alpha) 支持Ignition启动配置
VirtioNetNonTransparentBridge false (Alpha) VirtIO非透明网桥支持
PersistentReservation false (Alpha) SCSI持久化预留功能
DynamicCPU false (Alpha) 动态调整vCPU数量
NodeSelector true (GA) 节点选择器调度功能

高级功能门控

功能名称 默认状态 功能描述
KubevirtSeccompProfile false (Alpha) Seccomp安全配置支持
Root false (Alpha) 允许以root运行虚拟机
ExpandDisks false (Alpha) 在线扩展虚拟机磁盘
WorkloadEncryptionSEV false (Alpha) AMD SEV加密支持
HostDevices false (Beta) 宿主机设备直通功能
HypervStrictCheck false (Beta) Hyper-V兼容性严格检查
KubevirtPodNetworkWithMultus false (Beta) Multus多网络支持
Passt false (Alpha) 使用passt用户态网络后端

状态说明

  • Alpha: 实验性功能,可能不稳定
  • Beta: 功能基本稳定,建议测试后使用
  • GA: 生产就绪功能,默认启用

注意事项

  • Alpha功能可能包含已知问题
  • 部分功能需要额外硬件支持
  • 生产环境建议禁用Alpha功能
导航