部署
更新时间: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功能
