GPUStack 2.2.2 Kubernetes 部署文档
作者吴业亮博客wuyeliang.blog.csdn.net1. 部署概览项目实际配置目标主机192.168.1.31操作系统Ubuntu 22.04.5 LTSKubernetesv1.30.14kubeadm 单节点集群容器运行时containerd 1.7.27Helmv3.18.4GPUNVIDIA GeForce RTX 409024 GiBGPUStackv2.2.2CNIFlannel v0.25.5GPU 运行时NVIDIA Container Toolkit 1.17.8GPUStack 命名空间gpustack-systemHelm ReleasegpustackGPUStack 官方 Helm 部署要求 Kubernetes 1.30、Helm 3.18.4。官方文档https://docs.gpustack.ai/latest/installation/helm/2. 网络前提目标主机无法直接访问 Kubernetes 官方镜像仓库的后端地址因此 containerd 使用了主机已有的代理http://192.168.1.119:7890containerd 配置文件/etc/systemd/system/containerd.service.d/http-proxy.conf内容[Service] EnvironmentHTTP_PROXYhttp://192.168.1.119:7890 EnvironmentHTTPS_PROXYhttp://192.168.1.119:7890 EnvironmentNO_PROXY127.0.0.1,localhost,192.168.1.31,10.0.0.0/8,10.96.0.0/12,172.16.0.0/12,192.168.0.0/16应用配置systemctl daemon-reload systemctl restart containerd目标主机没有可用 IPv6 出站路径因此设置了/etc/sysctl.d/99-disable-ipv6-k8s.confnet.ipv6.conf.all.disable_ipv6 1 net.ipv6.conf.default.disable_ipv6 13. 安装 Kubernetes 软件包以下命令使用 Kubernetes 官方 v1.30 软件源exportDEBIAN_FRONTENDnoninteractiveapt-getupdateapt-getinstall-yapt-transport-https ca-certificatescurlgpginstall-d-m0755 /etc/apt/keyringscurl-fsSLhttps://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key\|gpg--dearmor--yes-o/etc/apt/keyrings/kubernetes-apt-keyring.gpgechodeb [signed-by/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /\/etc/apt/sources.list.d/kubernetes.listapt-getupdateapt-getinstall-ykubelet kubeadm kubectl apt-mark hold kubelet kubeadm kubectl验证kubeadm version-oshort kubectl version--clienttrue本次版本为v1.30.14。4. 配置 containerd确保 containerd 使用 systemd cgroupmkdir-p/etc/containerd containerd config default/etc/containerd/config.tomlsed-is/SystemdCgroup false/SystemdCgroup true//etc/containerd/config.toml systemctl restart containerd验证 CRIcrictl --runtime-endpoint unix:///run/containerd/containerd.sock info5. 配置 Kubernetes 内核参数swapoff-amodprobe overlay modprobe br_netfiltercat/etc/modules-load.d/k8s.confEOF overlay br_netfilter EOFcat/etc/sysctl.d/99-kubernetes-cri.confEOF net.bridge.bridge-nf-call-iptables 1 net.bridge.bridge-nf-call-ip6tables 1 net.ipv4.ip_forward 1 EOFsysctl--system6. 拉取 Kubernetes 基础镜像先验证官方镜像拉取kubeadm config images pull\--kubernetes-versionv1.30.14\--cri-socketunix:///run/containerd/containerd.sock7. 初始化单节点 Kuberneteskubeadm init\--kubernetes-versionv1.30.14\--apiserver-advertise-address192.168.1.31\--pod-network-cidr10.244.0.0/16\--cri-socketunix:///run/containerd/containerd.sock配置 root 用户的 kubeconfigmkdir-p/root/.kubecp/etc/kubernetes/admin.conf /root/.kube/configexportKUBECONFIG/etc/kubernetes/admin.conf8. 部署 Flannel CNIkubectl apply-f\https://raw.githubusercontent.com/flannel-io/flannel/v0.25.5/Documentation/kube-flannel.yml单节点允许调度普通工作负载kubectl taint nodes--allnode-role.kubernetes.io/control-plane-验证kubectl get nodes-owide kubectl get pods-A9. 安装 Helm 3.18.4tmpdir$(mktemp-d)HTTPS_PROXYhttp://192.168.1.119:7890\curl-fsSLhttps://get.helm.sh/helm-v3.18.4-linux-amd64.tar.gz\|tar-xz-C$tmpdirinstall-m0755$tmpdir/linux-amd64/helm/usr/local/bin/helmrm-rf$tmpdirhelm version--short10. 配置 NVIDIA containerd runtime目标机已安装 NVIDIA Container Toolkit。使用nvidia-ctk写入 containerd 配置nvidia-ctk runtime configure\--runtimecontainerd\--config/etc/containerd/config.toml systemctl restart containerd11. 安装 Node Feature Discoveryhelm repoaddnfd\https://kubernetes-sigs.github.io/node-feature-discovery/charts helm repo update helm upgrade--installnfd nfd/node-feature-discovery\--version0.18.3\--namespacenode-feature-discovery\--create-namespace\--wait\--timeout300s验证kubectl get pods-nnode-feature-discovery kubectl getnode--show-labels12. 创建 NVIDIA RuntimeClassGPUStack 2.2.2 的 NVIDIA worker 使用名为nvidia的 RuntimeClassapiVersion:node.k8s.io/v1kind:RuntimeClassmetadata:name:nvidiahandler:nvidia应用kubectl apply-fnvidia-runtimeclass.yaml或者直接执行kubectl apply-f-EOF apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: nvidia handler: nvidia EOF13. 补充 GPUStack 兼容标签NFD 在本机生成的 NVIDIA PCI 标签为feature.node.kubernetes.io/pci-0300_10de.presenttrueGPUStack 2.2.2 的 worker selector 使用pci-10de.present因此补充兼容标签kubectl labelnodeubuntu\feature.node.kubernetes.io/pci-10de.presenttrue\--overwrite14. 安装 GPUStack 2.2.2本次使用官方 OCI Helm chart并启用 NVIDIA workerHTTPS_PROXYhttp://192.168.1.119:7890\helm upgrade--installgpustack\oci://registry-1.docker.io/gpustack/gpustack-chart\--version2.2.2\--namespacegpustack-system\--create-namespace\--setserver.dataVolume.hostPath/var/lib/gpustack\--setworker.enabledtrue\--setworker.gpuVendors{nvidia}\--timeout120s说明使用server.dataVolume.hostPath避免单节点环境依赖额外 StorageClass。worker.enabledtrue启用 GPUStack worker DaemonSet。worker.gpuVendors{nvidia}启用 NVIDIA worker。GPUStack chart 会同时部署 Higress、operator、NFD、Kueue 和 CSI 相关组件。15. 部署验收查看 Helm releasehelm status gpustack-ngpustack-system本次最终状态NAME: gpustack NAMESPACE: gpustack-system STATUS: deployed REVISION: 3查看 Podkubectl get pods-ngpustack-system-owide核心组件应为 Running/Readygpustack-server-0gpustack-worker-nvidia-*gpustack-higress-plugins-*higress-controller-*higress-gateway-*gpustack-operator-device-manager-nvidia-*验证 GPU 资源kubectl describenodeubuntu|grep-Envidia.com/gpu|Capacity|Allocatable-A8本次节点资源nvidia.com/gpu: 1 nvidia.com/gpu.shared: 10验证 GPU workerkubectl rollout status\daemonset/gpustack-worker-nvidia\-ngpustack-system\--timeout600s验证 HTTP 访问curl-ihttp://192.168.1.31:30149/本次返回HTTP 20016. GPUStack 登录信息访问http://192.168.1.31:30149用户名admin本次部署生成的初始密码mAbpMBxA%bJ7也可以在主机上重新读取kubectlexec-ngpustack-system gpustack-server-0 --\cat/var/lib/gpustack/initial_admin_password首次登录后应立即修改初始密码。17. 常用运维命令查看所有资源kubectl get all-ngpustack-system查看事件kubectl get events-ngpustack-system --sort-by.lastTimestamp查看 GPUStack Server 日志kubectl logs-ngpustack-system gpustack-server-0查看 GPU worker 日志kubectl logs-ngpustack-system\-lapp.kubernetes.io/componentworker\--tail200查看设备管理器日志kubectl logs-ngpustack-system\-lapp.kubernetes.io/componentdevice-manager\--all-containers\--tail200查看 containerd 日志journalctl-ucontainerd-n100--no-pager18. 常见问题18.1 kubeadm 拉取镜像超时确认 containerd 已加载代理systemctl show containerd--propertyEnvironment systemctl restart containerd然后重新执行kubeadm config images pull\--kubernetes-versionv1.30.14\--cri-socketunix:///run/containerd/containerd.sock18.2 GPU worker 提示 RuntimeClass 不存在确认资源存在kubectl get runtimeclass nvidia不存在时重新创建第 12 节中的 RuntimeClass。18.3 GPU worker 没有 Pod检查节点标签kubectl getnodeubuntu --show-labels|greppci-10de如果缺少标签kubectl labelnodeubuntu\feature.node.kubernetes.io/pci-10de.presenttrue\--overwrite18.4 节点没有 nvidia.com/gpu 资源确认 NVIDIA runtime 和设备管理器command-vnvidia-container-runtimecommand-vnvidia-ctk kubectl get pods-ngpustack-system|grepdevice-manager kubectl logs-ngpustack-system\-lapp.kubernetes.io/componentdevice-manager\--all-containers主机侧确认 GPUnvidia-smi-L18.5 CSI Pod 处于 ContainerCreatingCSI 组件依赖多个镜像首次安装时可能需要较长时间拉取。查看具体原因kubectl get events-ngpustack-system --sort-by.lastTimestamp kubectl describe pod-ngpustack-systempod-name如果 GPUStack Server、Higress 和 NVIDIA worker 已 ReadyCSI 组件的短暂收敛不会影响控制台和 GPU worker 基础功能。19. 卸载卸载 Helm releasehelm uninstall gpustack-ngpustack-system删除命名空间kubectl delete namespace gpustack-system注意删除命名空间会删除 GPUStack 资源。主机路径/var/lib/gpustack不会由 Helm 自动清理删除前请先确认是否需要保留模型和数据库数据。20. 引入 HAMi20.1 兼容性说明HAMi 的 device-plugin 和 GPUStack 的 GPU device manager 都可能注册nvidia.com/gpu。同一节点同时运行两个 device-plugin 会造成 GPU 资源注册冲突因此本环境采用 HAMi 的安全引入模式启用 HAMi scheduler启用 HAMi admission webhook关闭 HAMi device-plugin继续由 GPUStack device manager 管理 GPU 资源HAMi 官方也说明同一节点不应同时运行两个 NVIDIA GPU device-pluginhttps://project-hami.io/docs/faq20.2 安装 HAMi 2.9.0给 GPU 节点添加 HAMi 标签kubectl labelnodeubuntugpuon--overwrite添加 HAMi 官方 Helm 仓库helm repoaddhami-charts https://project-hami.github.io/HAMi/ helm repo update安装 HAMi关闭 device-pluginhelm upgrade--installhami hami-charts/hami\--version2.9.0\--namespacekube-system\--setdevicePlugin.enabledfalse\--wait\--timeout600s20.3 验证 HAMihelm status hami-nkube-system kubectl get pods-nkube-system\-lapp.kubernetes.io/instancehami\-owide kubectl get mutatingwebhookconfiguration hami-webhook本次验证结果Release hami: deployed hami-scheduler: 2/2 Running HAMi webhook: createdHAMi 服务端口443:31998/TCP 31993:31993/TCP20.4 当前 GPU 资源状态kubectl describenodeubuntu|grep-Envidia.com/gpu|nvidia.com/gpu.shared-A2当前节点仍由 GPUStack device manager 提供资源nvidia.com/gpu: 1 nvidia.com/gpu.shared: 1020.5 HAMi 完整 GPU 分片模式如果后续需要 HAMi device-plugin 真正接管 GPU 分片不能直接执行默认安装。必须先规划并停用 GPUStack 的 GPU device manager然后再执行helm upgrade hami hami-charts/hami\--version2.9.0\--namespacekube-system\--setdevicePlugin.enabledtrue\--wait\--timeout600s这会改变nvidia.com/gpu的资源所有权可能影响 GPUStack worker 和已经运行的 GPU workload。生产环境应先停机或迁移 workload并在变更后重新验证 GPUStack 的 worker 注册和模型服务。HAMi 官方 Helm 安装参考https://project-hami.io/docs/next/get-started/deploy-with-helm

相关新闻

为什么87%的AI理赔项目在POC后失败?——来自12家保险公司落地复盘的3个致命盲区

为什么87%的AI理赔项目在POC后失败?——来自12家保险公司落地复盘的3个致命盲区

更多请点击: https://intelliparadigm.com 第一章:为什么87%的AI理赔项目在POC后失败?——来自12家保险公司落地复盘的3个致命盲区 在对12家国内头部及区域性保险公司的深度访谈与系统审计中,我们发现:尽管92%的机构成…

2026/7/29 13:45:17 阅读更多 →
AI换装效果翻车率高达67%?资深CV工程师亲授:4类边界场景避坑清单(含Stable Diffusion+ControlNet调参秘钥)

AI换装效果翻车率高达67%?资深CV工程师亲授:4类边界场景避坑清单(含Stable Diffusion+ControlNet调参秘钥)

更多请点击: https://intelliparadigm.com 第一章:AI图片服装更换 AI图片服装更换技术正迅速从实验室走向消费级应用,其核心依赖于生成式对抗网络(GAN)与扩散模型(Diffusion Models)的协同优化…

2026/7/29 13:45:17 阅读更多 →
51单片机密码锁设计:从硬件选型到软件架构的完整实现

51单片机密码锁设计:从硬件选型到软件架构的完整实现

1. 项目概述:为什么用51单片机做密码锁?如果你在电子爱好者论坛或者高校电子设计相关的社群里泡过,肯定对“基于51单片机的电子密码锁”这个项目标题不陌生。它几乎是每个单片机初学者,在点亮LED、玩转数码管之后,必然…

2026/7/29 13:45:17 阅读更多 →

最新新闻

【AI】技术日报 | 2026 年 7 月 28 日

【AI】技术日报 | 2026 年 7 月 28 日

AI 技术日报 | 2026 年 7 月 28 日 聚焦国产大模型与底层算力,带你看懂本轮中国 AI 竞速的技术细节。 引言 刚刚过去的这段时间,可以说是国产大模型的"密集轰炸期"。从阿里千问 Qwen 3.8 系列的正式亮相,到 DeepSeek V4 全面开放&…

2026/7/29 13:54:22 阅读更多 →
终极指南:5分钟为Windows 11 LTSC恢复微软商店完整功能

终极指南:5分钟为Windows 11 LTSC恢复微软商店完整功能

终极指南:5分钟为Windows 11 LTSC恢复微软商店完整功能 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC-Add-MicrosoftSto…

2026/7/29 13:54:22 阅读更多 →
光热发电与ORC、P2G协同优化建模与Matlab实现

光热发电与ORC、P2G协同优化建模与Matlab实现

1. 项目背景与核心价值去年参与西北某光热发电基地的调度系统升级时,我第一次接触到将光热电站(CSP)、有机朗肯循环(ORC)和电转气(P2G)技术进行协同优化的方案。这种多能互补的调度模式相比传统…

2026/7/29 13:54:22 阅读更多 →
Ncrack协议支持深度解析:从SSH到DICOM的20+协议实战指南

Ncrack协议支持深度解析:从SSH到DICOM的20+协议实战指南

1. 项目概述:为什么我们需要全面了解Ncrack的协议支持? 在渗透测试和网络安全评估的实战中,密码破解是绕不开的一环。很多人一提到密码破解,脑子里蹦出来的可能就是Hydra或者Medusa,但如果你还在用这些“上古神器”应对…

2026/7/29 13:54:21 阅读更多 →
终极指南:如何用XCOM 2 AML启动器彻底解决模组管理难题

终极指南:如何用XCOM 2 AML启动器彻底解决模组管理难题

终极指南:如何用XCOM 2 AML启动器彻底解决模组管理难题 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/…

2026/7/29 13:54:21 阅读更多 →
HarmonyOS应用开发实战:猫猫大作战-UTD 类型的使用

HarmonyOS应用开发实战:猫猫大作战-UTD 类型的使用

前言 UniformTypeDescriptor (UTD) 是 HarmonyOS 中定义分享数据类型的标准。通过正确地设置 UTD,系统能识别数据类型并将其路由到合适的应用。 本文以「猫猫大作战」的文本分享为锚点,讲解 UTD 类型的使用。 提示:本系列不讲 ArkTS 基础语…

2026/7/29 13:53:21 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻