昇腾A800 A2 ARM架构的物理机Kubevirt拉起npu直通虚拟机模版
·
YAML模版
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
name: npu-2 # 统一使用第二个配置的名称(可按需修改)
namespace: default # 统一命名空间(按需切换为 uvm-vm-910b)
annotations:
kubevirt.io/latest-observed-api-version: v1
kubevirt.io/storage-observed-api-version: v1
kubevirt.io/allow-pod-bridge-network-live-migration: "true" # 保留第一个配置的迁移支持
vmType: intelligence # 保留第一个配置的虚拟机类型标注
labels:
cloud-init.kubevirt-manager.io/username: root
fw.kubevirt-manager.io/vm-name: npu-2
kubevirt-manager.io/managed: "true"
kubevirt.io/domain: npu-2
spec:
runStrategy: Manual # 保留第二个配置的手动运行策略(避免自动启动)
template:
metadata:
annotations:
ovn.kubernetes.io/logical_switch: ""
labels:
fw.kubevirt-manager.io/vm-name: npu-2
kubevirt-manager.io/managed: "true"
kubevirt.io/domain: npu-2
spec:
architecture: arm64 # 统一架构(两个配置一致)
nodeSelector:
kubernetes.io/hostname: "kubevirt1910b" # 保留第二个配置的节点绑定(按需修改为实际节点名)
domain:
cpu:
cores: 8 # 取第一个配置的8核(按需调整为4/8核)
sockets: 1
threads: 1
machine:
type: virt # 兼容Kubevirt 1.4+ arm64(两个配置一致)
firmware:
bootloader:
efi:
secureBoot: false # 保留第一个配置的UEFI固件+关闭安全启动
memory:
guest: "48Gi" # 保留第二个配置的48Gi总内存(含16Gi CMA)
devices:
disks:
# 存储:使用第二个配置的DataVolume(需确保数据卷arm64-ubuntu-test-2已创建并Bound)
- name: datavolumedisk
bootOrder: 1 # 设为第一启动项
disk:
bus: virtio
- name: cloudinitdisk
disk:
bus: virtio
# NPU透传:保留第二个配置的gpus字段(Kubevirt推荐方式),数量整合第一个配置的2块
gpus:
- deviceName: "huawei.com/Ascend910"
name: npu-6
- deviceName: "huawei.com/Ascend910"
name: npu-7
# 网络:保留第一个配置的Pod网络+DHCP,开启多队列
interfaces:
- bridge: {}
name: net1
networks:
# 网络配置:保留第一个配置的DHCP+公共DNS
- name: net1
pod: {}
volumes:
# 数据卷:使用第二个配置的DataVolume(替换第一个的PVC)
- name: datavolumedisk
dataVolume:
name: arm64-ubuntu-test-2 # 需提前创建该DataVolume(Bound状态)
# Cloud-init:融合SSH登录、CMA内存配置、sshd优化
- name: cloudinitdisk
cloudInitNoCloud:
# 网络配置:DHCP自动获取IP,指定DNS
networkData: |
version: 2
ethernets:
net1:
dhcp4: true
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
# 用户配置:整合密码、SSH、CMA内存
userData: |
#cloud-config
manage_etc_hosts: true
hostname: npu-2
ssh_pwauth: true # 允许SSH密码登录
# 密码配置:统一使用 ubuntu(按需修改为123456)
chpasswd:
expire: false # 密码不过期
list: |
root:ubuntu
users:
- name: root
lock_passwd: false
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
# 核心:NPU依赖的CMA内存配置(16Gi),覆盖grub
write_files:
- path: /etc/default/grub.d/50-cloudimg-settings.cfg
permissions: '0644'
content: |
GRUB_CMDLINE_LINUX="cma=16Gi console=ttyAMA0 console=tty1 net.ifnames=0 biosdevname=0"
GRUB_RECORDFAIL_TIMEOUT=0
GRUB_TIMEOUT=0
# 启动脚本:先优化sshd,再更新grub,最后重启生效
runcmd:
- sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
- sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
- systemctl restart ssh
- update-grub # 应用CMA配置
- echo 17179869184 > /sys/kernel/mm/cma/default/reserve
# - reboot # 重启虚拟机使配置生效
architecture: arm64 指定架构是arm64
指定类型是virt
machine:
type: virt
关于npu的调用,当做是gpu的方式直接分配即可,
gpus:
- deviceName: “huawei.com/Ascend910”
name: npu-6
- deviceName: “huawei.com/Ascend910”
name: npu-7
datavolumedisk使用我们已经适配好的。
关于dv的制作,其实是kvm启动ubuntu虚机,然后配置直通npu之后在虚机里面安装驱动直到能够调用,然后把这个虚机文件制作成dv盘给Kubevirt来调用,可以参考往期资料。
CMA内存配置,这段内容如果不添加在启动虚机之后会时不时报错npu不可用。
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)