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

相关新闻

这几天,申通在杭州,干了四件和书有关的事

这几天,申通在杭州,干了四件和书有关的事

7月24日到27日,第32届全国图书交易博览会在杭州如约而至。作为连续两届官方唯一指定物流合作伙伴,申通快递不仅带去了专业的寄递服务,更在书香缭绕的西子湖畔,完成了四件关于“守护”与“传递”的大事。第一件事:读懂奔…

2026/7/29 13:42:48阅读更多 →
GetQzonehistory:三步搞定QQ空间历史说说的终极免费备份方案

GetQzonehistory:三步搞定QQ空间历史说说的终极免费备份方案

GetQzonehistory:三步搞定QQ空间历史说说的终极免费备份方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心那些记录着青春记忆的QQ空间说说会随着时间流逝而消…

2026/7/29 13:42:48阅读更多 →
面试官:“OpenAI 看了 80 万条消息,AI 都能跨岗干活了,还招你干嘛?”我:“能做,不等于能负责。”

面试官:“OpenAI 看了 80 万条消息,AI 都能跨岗干活了,还招你干嘛?”我:“能做,不等于能负责。”

面试日记 第 29 天 面试官今天没让我打开 IDE。 她把 OpenAI 刚发布的一张图放大,手指停在 43.5% 那条数据上。 “他们看了 80 多万条工作消息。”她说,“排除通用任务后,接近一半的职业消息都在干本职之外的活。工程任务还特别容易跑到别的…

2026/7/29 13:42:48阅读更多 →
Python vs Rust AI 服务基准测试全景:FastAPI、Axum、Actix-Web 的延迟与吞吐

Python vs Rust AI 服务基准测试全景:FastAPI、Axum、Actix-Web 的延迟与吞吐

Python vs Rust AI 服务基准测试全景:FastAPI、Axum、Actix-Web 的延迟与吞吐 一、AI 服务框架选型的基准痛点 AI 推理服务的 HTTP 框架选型直接影响请求路由、批处理调度、流式输出的性能。三个主流框架:FastAPI(Python)、Axum&a…

2026/7/29 15:03:03阅读更多 →
QuickRecorder:5分钟掌握macOS专业屏幕录制,免费开源轻松上手

QuickRecorder:5分钟掌握macOS专业屏幕录制,免费开源轻松上手

QuickRecorder:5分钟掌握macOS专业屏幕录制,免费开源轻松上手 【免费下载链接】QuickRecorder A lightweight screen recorder based on ScreenCapture Kit for macOS / 基于 ScreenCapture Kit 的轻量化多功能 macOS 录屏工具 项目地址: https://gitc…

2026/7/29 15:03:03阅读更多 →
ssm 儿童教育资源整合系统

ssm 儿童教育资源整合系统

一、关键词儿童教育资源整合系统、儿童教育资源整合、儿童教育资源整合信息管理、儿童教育资源整合后台管理二、作品包含源码数据库全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue2.6、Element-ui后端技术:Java、SSM&#xff…

2026/7/29 15:03:03阅读更多 →
【Python量化实战 #04】Python量化技术指标:MACD、KDJ、均线数据接口调用与pandas示例

【Python量化实战 #04】Python量化技术指标:MACD、KDJ、均线数据接口调用与pandas示例

系列:Python 行情数据接入笔记(持续更新) 本文:#04 技术指标数据 指标可以本地用收盘价重算,也可以由数据接口直接给出。本篇演示通过 mairui 读取 MACD、KDJ、均线等序列,并给一个「读字段 → 简单交叉判断…

2026/7/29 15:03:03阅读更多 →
AI如何用10分钟完成专业PPT制作?核心技术解析

AI如何用10分钟完成专业PPT制作?核心技术解析

1. 项目概述:AI如何重塑PPT制作流程 上周团队季度汇报前夜,我盯着空白幻灯片界面到凌晨两点,突然意识到传统PPT制作流程存在巨大效率黑洞。从内容构思、版式设计到动画调整,每个环节都在吞噬职场人的宝贵时间。这正是Paperzz这类A…

2026/7/29 15:03:03阅读更多 →
静磁场仿真中的GPU加速与并行计算技术解析

静磁场仿真中的GPU加速与并行计算技术解析

1. 静磁场仿真中的并行计算与GPU加速概述 静磁场仿真作为电磁场数值计算的重要分支,在电机设计、磁悬浮系统、医疗设备开发等领域具有广泛应用。传统串行计算方法在处理大规模网格模型时面临计算效率瓶颈,而并行计算技术特别是GPU加速已成为突破这一瓶颈…

2026/7/29 15:01:03阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

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

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

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

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/29 14:26:42阅读更多 →