i说明: 如不使用容器功能,可跳过本流程。
部署前,请确保已上传容器管理-CPU或容器管理-vCPU模块许可证。
部署容器管理包括以下步骤:
- 安装容器管理模块
- 配置容器管理业务集群
- 创建容器管理外部网络
- 设置三层网络保留网络段
- 创建ai-model-registry仓库并上传AI推理镜像 (容器)
- 同步容器管理业务集群
- (可选) 修改镜像仓库容器镜像上传限速
-
安装容器管理功能模块
-
上传容器管理 (ZStack Zaku) 安装包。
根据准备工作-软件工具,获取容器管理 (ZStack Zaku) 安装包。将该安装包重命名为image.qcow2,并分别存放在管理节点 (双管理节点环境下,请分别存放到两个管理节点) 和镜像仓库的以下路径 (如没有则新建) :/opt/zstack-marketplace-repo/zstack_io_zaku/${Architecture}/3.8.0/i说明: 本路径中,${Architecture}表示安装包架构
- 安装包架构为x86时,使用以下路径:/opt/zstack-marketplace-repo/zstack_io_zaku/x86_64/3.8.0/
- 镜像架构为ARM时,使用以下路径:/opt/zstack-marketplace-repo/zstack_io_zaku/aarch64/3.8.0/
-
安装ZStack Zaku容器管理。
登录ZStack AIOS UI界面,点击运营管理 > 应用市场 > 默认应用,选择ZStack Zaku容器管理,点击安装应用,弹出安装应用界面。
该步骤将创建1台或3台云主机作为容器管理的管理集群节点。
可参考以下示例输入相应内容:如图1所示:- 名称:设置应用名称
- CPU架构:选择应用CPU架构
- 版本:选择3.8.0
- CPU:设置云主机CPU核数,生产环境建议设置16核
- 内存:设置云主机内存,生产环境建议设置32GB
- 镜像服务器:选择镜像服务器
- 网络:为云主机加载业务网络i说明:
- 请确保已将规划的业务网络作为三层网络添加到ZStack AIOS。
- 请确保该网络能和ZStack AIOS管理节点通信。
- 根云盘:设置云主机根云盘规格
- 主存储:可选项。选择云主机根云盘所在的主存储,建议选择使用SSD硬盘的存储
- Ceph存储池:如主存储为Ceph类型,需选择Ceph存储池
- 数据云盘:设置云主机加载的第一块数据云盘的规格
- 数据云盘:设置云主机加载的第二块数据云盘的规格i说明:
- 安装ZStack Zaku容器管理时,云主机至少加载一块数据云盘。此外,用户还可以单独配置第二块数据云盘,专用于存放容器镜像。
- 如预计后续使用的容器镜像数量较多或容量较大,建议单独配置第二块数据云盘。
- 数据云盘主存储:选择云主机数据云盘所在的主存储,建议选择使用SSD硬盘的存储
- 集群高可用:选择是否开启容器集群高可用i说明:
- 如不开启,将创建1台云主机作为容器管理的管理集群节点。
- 如开启,将创建3台云主机作为容器管理的管理集群节点,生产环境建议开启集群高可用。
- Admin密码:填写ZStack AIOS Admin密码
- 云平台URL:填写ZStack AIOS的UI界面URLi说明: 请填写完整的URL地址,包括访问协议、平台管理节点IP/VIP/域名,和端口,例如:http://192.168.0.100:5000。
- 外部NTP服务器IP:填写ZStack AIOS管理节点IP。如使用双管理节点,则填写管理节点VIP

图1 安装ZStack Zaku容器管理 -
查看容器管理模块
重新登录ZStack AIOS UI界面,即可在主菜单中查看容器管理模块。
-
上传容器管理 (ZStack Zaku) 安装包。
-
配置容器管理业务集群。
-
配置计算节点。
准备3台 (或以上) 物理服务器或云主机作为容器管理业务集群的计算节点。
- 如用物理服务器作为计算节点,请使用ZStack AIOS ISO计算节点模式安装物理服务器操作系统。
- 如用云主机作为计算节点,需使用容器管理 (ZStack Zaku) 安装包安装云主机。
登录ZStack AIOS UI界面,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。在云主机界面,点击创建云主机 > 标准创建,弹出创建云主机界面。
可参考以下示例输入相应内容:- 基础配置
- 数量:设置为3或以上
- 计算规格:生产环境建议设置8核CPU+16GB内存的计算规格
- 镜像:选择容器管理 (ZStack Zaku)
安装包i说明: 请确保已将容器管理 (ZStack Zaku) 安装包作为镜像添加到ZStack AIOS。
- 根云盘规格:建议设置为500GBi说明: 如该云主机将同时作为容器管理业务集群的GPU节点,建议设置为1TB。
- 数据云盘:添加1块规格为500GB的数据云盘,并开启VirtioSCSI
- 主存储:建议选择使用SSD盘的存储
- 资源配置
- 网络:为云主机加载业务网络和存储网络i说明: 请确保已将规划的业务网络和存储网络作为三层网络添加到ZStack AIOS。
- 网络:为云主机加载业务网络和存储网络
- 系统配置
- 登录方式:可选项。选择云主机登录方式。如不配置,可使用默认用户名root和默认密码zstack@123@%登录
- User
Data:输入以下内容:
#cloud-config runcmd: - | pv_list=$(pvs --noheadings -o pv_name) pv_count=$(echo "$pv_list" | wc -l) pv_name=$(echo "$pv_list" | tr -d ' ') vg_name=$(pvs --noheadings -o vg_name $pv_name | tr -d ' ') growpart $(echo $pv_name | sed 's/[0-9]*$//') $(echo $pv_name | grep -o '[0-9]*$') pvresize $pv_name lv_name=$(lvs --noheadings -o lv_name --sort -size | tail -1 | tr -d ' ') lvextend -l +100%FREE /dev/$vg_name/$lv_name lv_path="/dev/$vg_name/$lv_name" mapper_name=$(readlink -f $lv_path | awk -F '/' '{print $3}') lv_mapper_name=$(ls -l /dev/mapper/ | grep "$mapper_name" | awk '{print $9}') blkid | grep "/dev/mapper/$lv_mapper_name" | grep -q xfs if [ $? -eq 0 ]; then xfs_growfs /dev/mapper/$lv_mapper_name else resize2fs /dev/mapper/$lv_mapper_name fi partprobe
除以上说明的参数外,其他参数请根据实际情况配置,配置完成后,点击确认,开始创建云主机。
i说明: 创建完成后,请分别登录这几台云主机,执行ip a,确认业务网卡和存储网卡是否均已分配IP地址,如未分配,请执行dhcp ${NicName}为网卡分配IP地址,以确保云主机业务网、存储网可用。 - 基础配置
-
配置GPU节点。
在已准备好的计算节点 (物理服务器/云主机) 基础上,选择一台或多台作为GPU节点。
- 如使用物理服务器,请提前在物理服务器上插入GPU设备并安装GPU驱动
- 如使用云主机,请按照以下步骤,为云主机加载GPU设备
- 为云主机所在的物理机插入GPU设备,确保物理机BIOS已开启Intel VT-d / AMD IOMMU,并在该物理机详情页打开IOMMU启用状态。
- 为云主机加载GPU设备。
- 设置云主机CPU模式为host-passthrough。
在云主机界面,点击需作为GPU节点的云主机,进入其详情页,确保CPU模式为host-passthrough。
- 安装GPU驱动。准备好GPU驱动,并登录需作为GPU节点的云主机安装。本文档以安装NVIDIA GPU驱动为例进行介绍,不同GPU驱动的安装方式可能不同,必要时,请联系GPU提供方获取帮助。
禁用nouveau驱动 [root@localhost~]# echo "blacklist nouveau" >> /etc/modprobe.d/nvidia-installer-disable-nouveau.conf [root@localhost~]# echo "options nouveau modeset=0" >> /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 安装Kernel相关包,并重启生效 [root@localhost~]# yum install -y elfutils-libelf-devel [root@localhost~]# yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r) [root@localhost~]# cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak [root@localhost~]# dracut /boot/initramfs-$(uname -r).img $(uname -r) --force [root@localhost~]# systemctl set-default multi-user.target [root@localhost~]# init 3 [root@localhost~]# reboot 检查nouveau驱动是否已被禁用 [root@localhost~]# lsmod | grep nouveau 安装GPU驱动,全部使用默认项 [root@localhost~]# bash NVIDIA-Linux-x86_64-550.90.07.run 检查GPU状态 [root@localhost~]# nvidia-smi
-
创建业务集群并添加节点
在ZStack AIOS主菜单,点击容器管理 > 集群管理,进入集群管理界面。在集群管理界面,点击创建集群,弹出创建集群界面。可参考以下示例输入相应内容:
- 节点配置
- 管理网与业务网复用:按实际网络规划开启或关闭
- 节点信息:填写准备好的计算节点信息
- 节点角色:默认勾选管理节点,可手动勾选计算节点和GPU节点i说明:
- 计算节点:勾选后,可使用该节点创建容器,该节点将占用容器管理-CPU或容器管理-vCPU额度
- GPU节点:勾选后,可将该节点上的GPU设备透传给容器使用,该节点将占用容器管理-CPU或容器管理-vCPU额度
- 业务网IPv4地址:填节点IP地址
- 管理网IPv4地址:如管理网与业务网复用,将复用业务网IP地址;如管理网与业务网不复用,请填写单独的管理网IPv4地址i说明: 请确保管理网IP地址可与ZStack AIOS管理节点通信。
- 节点角色:默认勾选管理节点,可手动勾选计算节点和GPU节点
- 节点ROOT密码:填写节点root密码
- 节点SSH端口:填写节点SSH端口,默认为22
- 基础配置
- 集群名称:设置集群名称
- 业务网VIP:填写一个IP地址作为集群业务网VIP,可使用ZStack AIOS三层网络中的IP地址i说明: 请确保ZStack AIOS管理节点可访问该业务网VIP
- 管理网VIP:如管理网与业务网复用,将复用业务网VIP;如管理网与业务网不复用,请填写单独的管理网VIP地址i说明: 请确保管理网VIP可与ZStack AIOS管理节点通信。
- 监控日志数据盘:选择节点上的数据盘盘符,例如:/dev/sda
- 容器组网段:设置容器组网段,可使用默认值
- 服务网段:设置服务网段,可使用默认值
- DNS服务器:设置DNS服务器地址,可使用默认值
- 微服务治理:选择关闭
- 确认信息:检查配置信息无误后,点击确认,即可创建集群。
如图3所示:

图3 创建容器管理业务集群 - 节点配置
-
配置计算节点。
-
创建容器管理外部网络。
-
创建服务外部网络。
在ZStack AIOS主菜单,点击容器管理 > 集群管理 > 网络管理 > 外部网络,进入外部网络界面。在外部网络界面,点击创建外部网络,弹出创建外部网络界面。可参考以下示例输入相应内容:
- 名称:设置外部网络名称
- 简介:可选项,备注外部网络相关信息
- 网卡名称:选择所有管理节点上名称相同且已配置IP的网卡
- IPv4 子网掩码:设置外部网络网络段的子网掩码,例如:255.255.255.0
- IPv4 网关:设置外部网络网络段网关,例如:192.168.0.1
i说明:- 如需使用服务外部网络,请确保所有管理节点都存在相同名称的网卡,且网卡上均有配置IP。
- 可使用如下命令配置IP:zs-network-setting -i ${网卡名} ${ip} ${netmask}。
如图4所示:
图4 创建服务外部网络 -
添加网络段。
在外部网络界面,点击外部网络名称,进入外部网络详情页。选择网络段,进入网络段标签页,点击添加网络段,添加服务外部网络的网络段。i说明:
- 在添加网络段时,需选择服务外部网络。
- 外部网络建议不要和ZStack AIOS三层网络网络段重叠。
- 如外部网络与三层网络网络段重叠,需将该外部网络添加为对应三层网络的保留网段。
-
创建服务外部网络。
-
设置三层网络保留网段
如容器管理业务集群VIP或外部网络使用ZStack AIOS三层网络中的IP地址,需为对应的三层网络设置保留网络段,避免容器管理业务集群VIP或外部网络IP地址被其他云资源占用。在ZStack AIOS主菜单,点击资源中心 > 网络资源 > 三层网络资源,找到对应的三层网络,点击进入其详情页。在三层网络详情页,点击网络段 > 保留网络段 > +保留网络段,将容器管理业务集群VIP和外部网络占用的网络段添加进来。如图5所示:

图5 设置保留网络段 -
创建ai-model-registry仓库并上传AI推理镜像 (容器)
-
创建制品仓库
在ZStack AIOS主菜单,点击容器管理 > 制品仓库 > 本地仓库,进入本地仓库界面。在本地仓库界面,点击创建仓库,弹出创建仓库界面。可参考以下示例输入相应内容:
- 名称:设置为ai-model-registry
- 简介:可选项,可留空不填
- 类型:选择公开
如图6所示:
图6 创建本地仓库 -
自定义ai-model-registry密码
进入ai-model-registry仓库详情页。在详情页,点击镜像 > 上传,弹出上传镜像界面。点击登录命令下方的重置密码,自定义设置密码。如图7所示:

图7 重置ai-model-registry密码 -
将AI推理镜像 (容器) 上传到ai-model-registry仓库
根据准备工作-软件工具,按使用的GPU型号,获取对应的AI推理镜像 (容器) ,并上传到ai-model-registry仓库。支持在线上传、文件上传、命令上传三种上传方式
- 如使用在线上传,请选择镜像架构,支持多选
- 如使用命令上传,请在命令中标注镜像架构,例如:
nerdctl push --platform=linux/arm64nerdctl push --platform=linux/amd64nerdctl push --platform=linux/arm64 --platform=linux/amd64
i说明: 如使用昇腾910B GPU,请同时准备并上传image-910b.tar、image-vllm-ascend.tar、image-npu-llamafactory.tar镜像。 -
指定模型精调服务默认容器镜像
如使用Hygon K100-AI进行模型精调,需额外指定精调默认容器镜像。登录ZStack AIOS管理节点,执行以下命令:
[root@localhost~]# zstack-ctl aios_setup_system_services --type FineTune --architecture x86_64 --docker-image-name aiworker-dcu:vllm0.9.2
-
创建制品仓库
-
同步容器管理业务集群。
-
获取容器管理AccessKey。
在ZStack AIOS主菜单,点击容器管理 > 服务设置 > 个人设置 > AccessKey管理,进入AccessKey管理界面。在AccessKey管理界面,点击生成AccessKey,并记录生成的AccessKey ID和AccessKey Secret。如图8所示:

图8 获取容器管理AccessKey -
同步容器管理业务集群。
登录ZStack AIOS管理节点,执行以下命令:
登录CLI命令行 [root@localhost ~]# zstack-cli //进入CLI命令行 - >>> LogInByAccount accountName=admin password=${Password} //使用Admin账号密码登录 创建业务集群管理节点,managementIP和name均使用容器管理VIP地址,AccessKeyId和AccessKeySecret分别使用已获取的容器管理AccessKey ID和Secret;执行完成后,记录返回的UUID,UUID是业务集群管理节点的UUID,即${ContainerManagementUuid} admin >>> AddContainerManagementEndpoint managementIp=${ZakuVip} managementPort=80 name=${ZakuVip} description=zaku containerAccessKeyId=${AccessKeyId} containerAccessKeySecret=${AccessKeySecret} vendor=zaku 同步集群 admin >>> QueryZone //查询区域UUID admin >>> SyncContainerManagementEndpoint uuid="${ContainerManagementUuid}" zoneUuid=${ZoneUuid}i说明:- 同步后,可在ZStack AIOS GPU设备界面,查看容器管理业务集群的GPU信息。
- 如平台内存在多租户,在ZStack AIOS主菜单,点击资源中心 > 云资源池 > GPU规格,将容器管理业务集群GPU对应的GPU规格的共享模式设置为全局共享。
-
获取容器管理AccessKey。
-
(可选) 修改镜像仓库容器镜像上传限速
为加快容器镜像上传和下载速度,可登录容器管理任一节点,执行以下命令,适当调整镜像仓库限速:
[root@localhost ~]# kubectl edit deployment -n zstack-middleware ingress-nginx-ingress-controller //修改egress-bandwidth和ingress-bandwidthi说明:- 使用千兆管理网络,建议最大带宽设置为500M。
- 使用万兆管理网络,建议最大带宽设置为1500M。
