2026-03-19 04:00:00

Claude Code 是 Anthropic 推出的强大 AI 编程助手,但每月的订阅费用让很多开发者望而却步。
通过 Claude Code Router (CCR),我们可以:
本文将手把手教你搭建这套方案,让你的 AI 编程助手成本降低 90% 以上。
首先需要在你的开发机器上安装 Claude Code:
|
|
Claude Code Router 是一个 Node.js 包,用于桥接 Claude Code 和本地模型:
|
|
安装完成后,验证两个工具是否正常工作:
|
|
在服务器上下载 GLM5 模型:
根据硬件配置选择合适的版本
|
|
使用 vLLM 框架部署模型服务,确保已安装 GPU 驱动和 NVIDIA Container Toolkit。
由于 GLM5 需要最新版的 transformers 支持,官方镜像暂未包含,需要先构建自定义镜像:
已经推送到 lixd96/vllm-openai:v0.17.1-cu130,直接拉取即可 docker pull lixd96/vllm-openai:v0.17.1-cu130
构建自定义镜像:
创建 Dockerfile:
|
|
构建并推送镜像:
|
|
启动服务:
|
|
关键参数说明:
--gpus 和 --tensor-parallel-size 参数--shm-size 16g 确保容器有足够共享内存--enable-auto-tool-choice 启用工具调用功能,--tool-call-parser glm47 使用 GLM 系列的工具调用解析器--reasoning-parser glm45 启用 GLM 的推理能力--trust-remote-code 允许加载模型的自定义代码--tensor-parallel-size 4 在多 GPU 上并行处理部署完成后,验证服务是否正常运行:
|
|
如果一切正常,你应该能看到模型的响应输出。
核心配置文件如下:
|
|
创建或编辑配置文件 ~/.claude-code-router/config.json:
|
|
配置说明:
your-server-ip 替换为实际的服务器 IP 地址debug,生产环境建议改为 info
使用 ccr code 替代原来的 claude 命令:
效果如下:

启动后,在 claude 界面输入以下命令切换模型
|
|
之后就可以正常使用了。
ps: 不切换模型也可以,只是终端会一直显示用的 Claude 的模型。
前面我们介绍了单一模型的配置方式,但在实际使用中,不同类型的任务对模型能力的要求各不相同。
Claude Code Router 的强大之处在于支持对接多个模型,并根据任务类型自动路由到最合适的模型。
不同任务对模型的需求差异很大:
| 任务类型 | 特点 | 推荐模型策略 |
|---|---|---|
| 日常对话 | 频率高、响应快 | 轻量级模型,节省资源 |
| 代码生成 | 需要准确性和逻辑性 | 中等能力模型 |
| 复杂推理 | 需要深度思考 | 顶级能力模型 |
| 长文本处理 | 需要大上下文窗口 | 支持长上下文的模型 |
| 图像理解 | 需要多模态能力 | 视觉语言模型 |
通过合理配置,可以实现:
以下是一个对接多个模型服务商的完整配置:
|
|
default(默认路由)
background(后台任务)
think(思考密集型)
longContext(长上下文)
longContextThreshold 时自动切换webSearch(网络搜索)
image(图像任务)
Claude Code Router 的核心原理是通过启动一个 HTTP 中转服务,在不修改 Claude Code 源码的情况下完成请求的转发和格式转换。
Claude Code 使用 Anthropic API 规范进行通信,而大多数模型服务商(如 OpenAI、DeepSeek 等)使用 OpenAI API 规范。CCR 的作用就是:
|
|
CCR 的核心优势在于可以根据任务特点选择最合适的模型,实现成本与质量的平衡:
| 任务类型 | 特点 | 推荐策略 |
|---|---|---|
| 日常开发 | 频率高、响应要求快 | 性价比高的主力模型 |
| 复杂推理 | 需要深度思考 | 推理能力强的模型 |
| 图像理解 | 需要多模态能力 | 支持视觉的模型 |
| 后台任务 | 自动触发、频率高 | 轻量快速模型 |
| 长文本 | 需要大上下文 | 支持长上下文的模型 |
成本对比:
|
|
通过合理配置路由策略,将高频低难度任务分配给低成本模型,仅在必要时调用高端模型,月成本可降低 90% 以上。
如果运行 ccr code 时报错:“Unable to connect to Anthropic services”,可以修改 ~/.claude.json 文件,在最外层添加以下配置:
|
|
保存后重新运行即可。
本文介绍了如何通过 Claude Code Router 打破 Claude Code 的使用限制:
CCR 还支持对接更多 Provider,如 DeepSeek、智谱 AI、OpenAI 等,可根据实际需求灵活组合。如果你也在寻找高性价比的 AI 编程方案,不妨试试这套配置。
2026-03-11 04:00:00

在之前的文章《Kubernetes PVC Clone & Snapshot 实战:基于 Csi-Driver-Nfs 的完整示例》中,我们探讨了如何使用 Kubernetes 内置的 PVC 克隆和快照功能进行数据保护。然而,当我们需要对整个 Kubernetes 集群进行全面的备份恢复时,就需要更专业的工具。
Velero(前身 Heptio Ark)正是这样一个专业的 Kubernetes 备份恢复工具,已成为 CNCF 毕业项目。它不仅能够备份持久卷数据,还能备份整个集群的应用配置、服务和资源状态,提供企业级的灾难恢复和集群迁移能力。
你将学到:
在前一篇文章中我们介绍了 PVC 级别的数据保护方案,但当我们需要对整个 Kubernetes 应用栈进行备份恢复时,就需要更全面的解决方案。
Velero(前身 Heptio Ark)正是一个用于备份与恢复 Kubernetes 集群资源和持久卷(PV/PVC)的专业开源工具,提供安全可靠的数据保护解决方案。
Velero 在 Kubernetes 生态中已被广泛视为开源领域事实标准 / 最主流备份恢复工具(CNCF 毕业项目,社区采用率最高)。
灾难恢复:应对集群故障、误删除等意外情况
集群升级迁移:安全地将应用迁移到新版本集群
开发测试:为开发测试环境提供快速数据恢复能力
合规要求:满足数据保护和审计合规需求
Velero 采用客户端-服务器架构:
Velero 采用 Operator 模式,通过创建 CRD 对象触发备份操作:

Velero 通过两种 CRD 管理存储后端:
定义 Kubernetes 集群资源的存储位置,主要用于存储 YAML 清单文件等元数据。支持 S3 兼容存储(如 MinIO、AWS S3、阿里云 OSS 等)。
定义持久卷快照的存储位置,需要云提供商插件支持。对于不支持快照的环境,可以使用文件系统备份工具 Restic/Kopia。
Restic 是一款用 Go 语言开发的数据加密备份工具,支持多种存储后端:Local、SFTP、AWS S3、MinIO、Azure Blob Storage、Google Cloud Storage 等。
Kopia 是 Velero 从 v1.10 版本开始引入的新一代 文件级备份工具,用于替代传统的 Restic,相比 Restic 具有更好的性能和可靠性。
Velero 支持多种存储插件,可通过 官方文档 查看完整列表。本教程使用 MinIO 作为 S3 兼容的对象存储。
可以参考 MinIO 官方文档部署服务,或使用 Velero 提供的快速部署脚本:
|
|
到 GitHub release 页面下载最新压缩包:
|
|
先创建 S3 配置文件,提供 MinIO 的访问凭证:
|
|
开始部署 Velero 服务端组件:
|
|
参数说明:
--namespace:指定部署的 namespace 名称,默认为 velero--provider:定义插件提供方,aws 表示 AWS S3 兼容--image:定义运行 velero 的镜像--plugins:指定使用 aws s3 兼容的插件镜像--secret-file:指定对象存储认证文件--bucket:指定对象存储 Bucket 桶名称--use-node-agent:创建 Velero Node Agent 守护进程,用于通过 Kopia 备份 PVC 数据--use-volume-snapshots:是否启用快照功能注意:从 Velero 1.7 开始,Kopia 成为默认的文件系统备份工具,取代了之前的 Restic。Kopia 提供了更好的性能和可靠性。
--backup-location-config:指定对象存储地址信息
region:MinIO 本身没有区域概念,但 AWS S3 插件需要 region 参数,因此使用 minio 作为占位符s3ForcePathStyle:路径风格访问,强制使用路径风格的 URL(http://endpoint/bucket/key),这是 MinIO 的推荐访问方式s3Url:MinIO 服务地址
|
|
如果需要从集群中完全卸载 Velero:
|
|
备份命令:velero create backup NAME [flags]
除了手动备份外,Velero 还支持定时备份,可以通过 Schedule CRD 实现自动化备份:
|
|
定时表达式说明:
0 2 * * *:每天凌晨2点执行0 */6 * * *:每6小时执行一次0 0 * * 0:每周日午夜执行常用选项:
--exclude-namespaces stringArray:从备份中排除的命名空间--exclude-resources stringArray:从备份中排除的资源类型--include-cluster-resources optionalBool[=true]:是否包含集群级资源--include-namespaces stringArray:要包含的命名空间(默认 ‘*’)--include-resources stringArray:要备份的资源类型--labels mapStringString:为备份添加标签-o, --output string:输出格式(table/json/yaml)-l, --selector labelSelector:按标签筛选资源--snapshot-volumes optionalBool[=true]:是否为 PV 创建快照--storage-location string:指定备份位置--ttl duration:备份数据的过期时间--volume-snapshot-locations strings:指定快照位置创建一个 Nginx 应用并挂载 PVC,用于验证备份恢复功能:
|
|
|
|
|
|
|
|
参数说明:
--include-namespaces:指定要备份的命名空间--default-volumes-to-fs-backup:使用文件系统备份工具备份 PVC 数据
|
|
备份完成后,可以在 MinIO 存储中查看备份内容:
Kubernetes 资源配置备份:

PVC 数据文件备份:

|
|
只要我们将每个 velero 实例指向相同的对象存储,velero 就能将资源从一个群集迁移到另一个群集。

以下是集群信息:
| 角色 | 集群IP | 集群版本 | 部署软件 |
|---|---|---|---|
| K8S 集群A | 172.16.131.134 | v1.34.2 | velero、demo-app |
| K8S 集群B | 172.16.131.171 | v1.34.2 | velero、minio |
在集群 A 部署上应用。
创建一个 nginx app,并挂载 pvc 用于验证备份恢复功能。
|
|
|
|
|
|
将一个简单的 html 复制到 nginx 数据目录中
|
|
访问 nginx 进行验证
|
|
|
|
参数:
--include-namespaces:指定命名空间,这里测试仅备份 nginx-example 下的内容。--default-volumes-to-fs-backup:使用文件系统备份工具(Kopia)来备份数据。这种方式更通用。查看状态
|
|
这样就备份好了。
在目标集群查看备份对象(如果连接到同一个 S3 存储,Velero 会自动同步):
|
|
恢复数据
|
|
查看恢复进度
|
|
验证 Nginx 是否完全恢复
|
|
一切正常。
跨集群迁移完成。
Velero 作为一个成熟的 Kubernetes 备份恢复工具,提供了完整的灾难恢复和集群迁移解决方案。通过本文的实战演示,您可以掌握:
2026-03-04 04:00:00

最近,KubeClipper 正式发布了 1.5.0 版本。这次更新带来了多项重要改进,其中最引人注目的是新增的工作负载管理界面,用户现在可以直接在 Web UI 中管理 Deployment、StatefulSet 等 Kubernetes 工作负载。同时,该版本还升级了对 Kubernetes 及其组件的支持,并修复了大量 bug,提升了平台的稳定性和用户体验。
KubeClipper 是一个轻量便捷的 Kubernetes 多集群全生命周期管理工具,旨在提供易使用、易运维、极轻量、生产级的 Kubernetes 多集群管理服务,让运维工程师从繁复的配置和晦涩的命令行中解放出来,实现一站式管理跨区域、跨基础设施的多 K8S 集群。
如果你是第一次接触 KubeClipper,可以通过以下步骤快速上手:
curl -sfL https://oss.kubeclipper.io/get-kubeclipper.sh | KC_REGION=cn bash -
kcctl deploy
kcctl create cluster --name demo --master YOUR_IP --untaint-master
http://YOUR_IP:8080,账号 admin/Thinkbig1
全程只需5-10分钟,就能拥有一个功能完整的 Kubernetes 环境!
相比于之前的版本,1.5.0 在易用性和功能性方面都有显著提升。最大的变化是新版增加了对 k8s 1.35.0 的支持,另外新增的工作负载管理功能让用户可以完全摆脱命令行操作。
KubeClipper 的核心优势:
本次更新的主要亮点:
这是 1.5.0 版本最重要的新功能。之前用户需要通过命令行或第三方工具管理 Kubernetes 工作负载,现在可以直接在 KubeClipper 的 Web UI 中进行可视化操作:
1.5.0版本全面升级了支持的组件版本:
1.5.0版本包含了大量的技术改进和稳定性提升:
在开始安装之前,确保满足以下要求:
|
|
正常输出如下:
|
|
|
|
在打印出如下的 KubeClipper banner 后即表示安装完成。
|
|
安装过程中需要去阿里云下载离线安装包,大概 1 分钟即可下载完成。
安装完成后,打开浏览器,访问 http://$IP 即可进入 KubeClipper 控制台。

您可以使用默认帐号密码 admin / Thinkbig1 进行登录。
部署成功后可以使用 kcctl 工具或者通过控制台创建 k8s 集群, 这里咱们使用 kcctl 工具进行创建。
查看当前 agent 节点
|
|
然后使用以下命令创建 k8s 集群:
|
|
大概两分钟左右即可完成集群创建,可以使用以下命令查看实时日志:
|
|
或者使用以下命令查看集群状态
|
|
也可以进入控制台查看实时日志。
进入 Running 状态即表示集群安装完成,您可以使用 kubectl 命令来查看集群健康状况。
|
|
至此,我们的单节点版本就算是结束了,通过几条命令就快速创建出来一个 K8s 集群。
登录 Web UI 后,在集群管理界面,点击展开集群后的更多按钮,然后点击 工作负载 按钮跳转到工作负载界面:

集群节点信息

Deployment 管理:

更多功能就留给大家自行探索了~
KubeClipper 1.5.0 版本的发布标志着该项目在易用性、功能性和技术成熟度方面都达到了新的高度。作为一次重要的里程碑更新,1.5.0 不仅在用户体验上实现了质的飞跃,更在技术架构上为未来的发展奠定了坚实基础。
技术深度升级:
用户体验提升:
对于正在寻找简单易用的 Kubernetes 管理平台的团队来说,KubeClipper 1.5.0 无疑是一个值得尝试的选择。无论是初学者还是经验丰富的运维人员,都能从这个版本中找到适合自己的价值点。
相关链接:
2026-02-10 08:00:00
在 Kubernetes 里做“数据复制”通常有两条路:
本文以 csi-driver-nfs 为例,从 0 跑通 Clone 与 Snapshot,并给出跨命名空间场景需要的关键配置与排错点。
本文默认你已经有一个可用的 StorageClass(下文以 nfs 为例),并已安装 csi-driver-nfs。
版本要求(供参考):
csi-driver-nfs v4.3.0 起支持 PVC Clone
Kubernetes v1.26 起支持跨命名空间的 PVC 数据源(Cross-Namespace data sources)
示例环境:Kubernetes v1.34.2,
csi-driver-nfsv4.12.1,满足上述要求。
PVC Clone:创建 PVC 时通过 dataSourceRef 引用一个已存在的 PVC(或 VolumeSnapshot),由 CSI 侧完成数据复制,得到一个内容相同的新 PVC。
注意:必须是 CSI 驱动支持 Clone,否则新 PVC 可能会被创建出来但数据为空/不符合预期。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
核心就是在新 PVC 的 dataSourceRef 里引用源 PVC:
|
|
|
|
|
|
|
|
|
|
|
|
跨 namespace clone 需要额外配置:
kube-apiserver & kube-controller-manager 开启 CrossNamespaceVolumeDataSource 特性
csi provisioner 开启 CrossNamespaceVolumeDataSource 特性
安装 Gateway API CRD
创建 ReferenceGrant 配置权限
如果你只需要“简单跑通”,可以先跳过本节,直接看后面的 Snapshot 实战;跨命名空间的关键点是:apiserver/controller-manager + csi-provisioner 开特性,以及 ReferenceGrant 授权。
kube-apiserver & kube-controller-manager 需要开启以下特性:
AnyVolumeDataSource: 1.24及其以上版本,默认开启,之前的版本需要手动配置
CrossNamespaceVolumeDataSource:所有版本都默认为 false,需要手动开启
多个 master 节点都需要配置。
直接编辑 manifest 下的 yaml 即可:
|
|
都添加下面这个配置:
|
|
保存退出后,kubelet 会自动重启 Pod。
验证
|
|
(可选)此时可以检查 apiserver / controller-manager 是否已带上对应 feature gate 参数。
同时还需要为 CSI Provisioner 开启 CrossNamespaceVolumeDataSource 特性。
ps:不同的 CSI 安装方式不同,以 csi-driver-nfs 为例。
|
|
里面有多个 container,搜索 csi-provisioner 找到对应的 container。在 command 中增加配置,开启特性:
|
|
就像这样:
|
|
安装 Gateway API CRD,核心是 referencegrants CRD。
|
|
然后创建 ClusterRoleBinding 配置权限,让 csi 能够访问 referencegrants 对象。
|
|
|
|
由于需要在新 namespace 创建 pvc 引用源 namespace 下的 pvc,跨 namespace 访问 pvc 需要授权。
在源 namespace 创建 进行授权
可以授权访问所有 pvc:
|
|
storage-source ns 可以访问 source ns 下的所有 pvc
或者指定 name 仅授权访问某一个 pvc:
|
|
storage-source ns 可以访问 source ns 下的名为 source-test-pvc 的 pvc
如果没有权限,新 pvc 会一直 pending:
|
|
在另一个 namespace 下创建 pvc,引用 source namespace 下的源 pvc
|
|
|
|
|
|
|
|
|
|
直接 PVC Clone 在生产里不一定推荐,因为源 PVC 可能正在写入,Clone 的一致性/时点语义取决于底层实现与业务写入方式。
最佳实践是: 源 pvc -> snapshot -> 新 pvc。
开源组件,用于提供快照功能,如果部署 csi 时部署过则跳过。
拉取代码
|
|
部署
|
|
创建针对 nfs-csi 的快照类
|
|
|
|
|
|
|
|
等待快照 Ready:
|
|
(可选)你也可以到后端存储侧检查快照是否生成,以及从快照恢复出来的数据目录是否符合预期。
跨 namespace 使用 snapshot 同样需要创建 Grant 授权
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kubernetes v1.26: Alpha support for cross-namespace storage data sources
2026-01-20 08:00:00
想象一下这样的场景:你的生产系统突然流量激增,某个 Pod 的 CPU 使用率已经飙升到 90%,传统做法是重建整个 Pod,导致服务中断 30 秒以上。而现在,只需一行命令,CPU 资源瞬间调整完毕,服务零中断!
这就是 Kubernetes 1.35 带来的重磅功能:原地 Pod 资源调整(In-Place Pod Resize)正式 GA!🎉
原地 Pod 资源调整(In-Place Pod Resize) 是 Kubernetes 的一项革命性特性,允许直接修改正在运行的 Pod 的 CPU 和内存资源配置,而无需重建 Pod。
In-Place Pod Resize 是一个基础构建块,可解锁无缝、垂直的自动缩放功能,并提高工作负载效率。
⚡ 零中断调整:CPU 调整无需重启,内存调整仅在必要时重启
⚙️ 即时生效:调整立即见效,无需等待 Pod 重建
🛡️ 高稳定性:告别重建导致的网络抖动和服务中断
🎛️ 简化运维:资源调优从"重型手术"变为"日常微调"
更强大的自动缩放功能:自动缩放器现在可以调整资源,影响更小。例如,垂直Pod自动缩放器(VPA)的 InPlaceOrRecreate 更新模式利用了这一特性,现已升级到 beta 版。这使得资源可以根据使用情况自动无缝地调整,并将中断降至最低。
解决临时资源需求:可以快速调整临时需要更多资源的工作负载。这将启用 CPU 启动加速(AEP-7862)等功能,应用程序可以在启动期间请求更多 CPU,然后自动缩减。
这个功能可不是一蹴而就的!从 Kubernetes v1.27 开始作为 Alpha 版本引入,经过社区反复打磨:
经过多次迭代,现在你可以放心大胆地在生产环境中使用这个强大的功能了!
| 资源类型 | 支持程度 | 重启要求 | 说明 |
|---|---|---|---|
| CPU | ✅ 完全支持 | 🚫 无需重启 | 最常用,零中断调整 |
| 内存 | ✅ 支持 | ⚠️ 通常需要重启 | 大多数应用不支持热更新内存 |
| 存储 | ❌ 不支持 | - | 技术限制,未来可能支持 |
| GPU 等扩展资源 | ❌ 不支持 | - | 仍在开发中 |
Pod 的 QoS(服务质量)类调整有严格要求,调整后必须保持原有 QoS 类不变:
requests = limits,最高优先级requests < limits,中等优先级⚠️ 重要提醒:无法通过资源调整改变 Pod 的 QoS 类!
| 容器类型 | 支持程度 | 说明 |
|---|---|---|
| 普通容器 | ✅ 完全支持 | 最常见的应用场景 |
| Sidecar 容器 | ✅ 支持调整 | 适用于服务网格等场景 |
| Init 容器 | ⚠️ 条件支持 | 仅支持调整尚未执行的Init容器 |
| Ephemeral 容器 | ❌ 不支持 | 临时调试容器不支持 |
| 环境/配置 | 支持程度 | 影响范围 |
|---|---|---|
| Windows Pod | ❌ 不支持 | 整个 Windows 环境 |
| 静态 CPU 管理器 | ❌ 不支持 | CPU 亲和性场景 |
| 内存管理器 | ❌ 部分不支持 | 特定内存策略 |
| Swap 内存 | ⚠️ 条件支持 | 仅特定配置下可用 |
💡 最佳实践:调整内存前务必检查当前使用量,避免意外 OOM
In-Place Pod Resize 对 Kubernetes API 做了精妙的设计:
🎯 资源分为两层:
spec.containers[*].resources - 你想要的资源配置status.containerStatuses[*].resources - 容器真正获得的资源✨ 关键变化:
spec.containers[*].resources现在支持运行时修改!requests和limits都可以动态调整。
为了让调整过程透明可观测,Kubernetes 引入了三个新的 Pod 状态:
| 状态 | 含义 | 常见原因 |
|---|---|---|
| PodResizePending | ⏳ 调整请求待处理 | 资源不足、节点压力大等 |
| PodResizeInProgress | 🔄 正在执行调整 | Kubelet 正在处理调整请求 |
| PodResizeStatusInfeasible | ❌ 无法调整(不符合策略) | 违反QoS类限制、容器类型不支持等 |
通过 kubectl get pod 和 kubectl describe pod,你可以实时监控调整进度!
新增 resizePolicy 字段,让你精确控制每种资源的调整行为:
|
|
🔧 restartPolicy 选项:
NotRequired:调整无需重启(CPU 的最佳选择)RestartContainer:调整需要重启容器(内存的默认选择)💡 高级用法:如果你的应用支持热更新内存,可以将内存的
restartPolicy设为NotRequired,实现真正的零中断调整!
|
|
✨ 注意这里的 resizePolicy 配置:
resourceName:指定要控制的资源类型(cpu 或 memory)restartPolicy:决定调整时是否需要重启容器🎯 配置解读:
NotRequired:调整时零中断RestartContainer:调整时会重启容器(这是默认行为)💡 为什么内存需要重启? 大多数应用程序和容器运行时不支持动态调整内存分配,所以需要重启来生效。
|
|
|
|
🎯 操作目标:将 CPU 从 700m 提升到 800m,看看会发生什么?
|
|
🎉 结果惊艳:
|
|
可以看到 Event 里面可以看到 ResizeStarted 和 ResizeCompleted 事件。
|
|
🎯 操作目标:将内存从 200Mi 提升到 300Mi,观察重启行为。
|
|
📊 结果分析:
💡 进阶技巧:如果你的应用程序和运行时支持热更新内存,可以将
restartPolicy设置为NotRequired,实现内存调整的零中断!
|
|
可以看到 ResizeStarted 之后有一个 Killing 事件,等重启后才 ResizeCompleted,这也符合内存调整的 RestartContainer 重启策略。
|
|
🎯 操作目标:故意申请超出节点容量的 CPU(1000 core),看看系统如何处理?
|
|
🔍 现象分析:
|
|
显示 PodResizePending 状态,错误信息清晰明了:“Node didn’t have enough capacity”!
有一个 PodResizePending 状态,因为资源不足,所以一直 pending。
|
|
Event 里面也可以看到具体问题,ResizeInfeasible 事件。
In-Place Pod Resize GA 是 Kubernetes 资源管理领域的一次革命!
🚀 四大核心优势:
🔄 技术革新:
restartPolicy
RestartContainer 策略
|
|
In-Place Pod Resize 让 Kubernetes 的资源管理变得更加现代化和智能化。现在就开始体验这个强大的功能,让您的应用资源管理更上一层楼吧!
2026-01-07 04:00:00

NVIDIA GB200 NVL72 正在将 AI 基础设施推向新的极限,使大规模语言模型训练和低延迟推理工作负载成为可能。随着 Kubernetes 在部署和扩展这些工作负载中的核心作用日益增强,快速演进的 AI 工作负载、基础设施需求和新硬件架构为 Kubernetes 编排和资源管理带来了新的挑战。
在本文中,我们将深入探讨如何通过 Kubernetes DRA (Dynamic Resource Allocation) 和 NVIDIA DRA Driver 在 GB200 平台上启用 Multi-Node NVLink (MNNVL),实现跨节点的 GPU 到 GPU 高带宽通信。
DRA (Dynamic Resource Allocation,动态资源分配) 是 Kubernetes v1.30 引入的革命性功能,用于解决传统 Device Plugin 框架在处理复杂异构硬件时的局限性。
DRA 最初始的版本(KEP-3063),于 1.26 版本引入,因可用性问题,在 1.32 版本被撤回 当前的 DRA 是第二个版本(KEP-4381) 于 1.30 引入。
传统 Device Plugin 将硬件资源抽象为简单整数计数器,无法表达:
设备特定参数(如 GPU 显存、计算能力、拓扑连接)
资源共享需求(设备无法在容器间共享)
硬件拓扑关系(NVLink 连接、PCIe 亲和性)
DRA 遵循 Kubernetes 声明式原则,将硬件资源特性作为一等公民纳入 API:
GB200 NVL72 通过引入 Multi-Node NVLink (MNNVL) 技术,将单机 GPU 性能限制扩展到整个机架层面,为分布式 AI 工作负载带来革命性改进。
传统的单节点 DGX 系统受限于单机物理限制,MNNVL 改变了这一局面:
NVIDIA Internode Memory Exchange Service (IMEX) 是 GPU 驱动层面的软件,允许 GPU 跨节点通信。IMEX 对每个单独的 GPU 内存导出/导入操作进行细粒度访问控制,并在称为 IMEX 域的节点组中运行。
作为 NVIDIA GPUs 的 DRA 驱动程序的一部分提供的 ComputeDomains,将底层 GPU 构造(NVIDIA NVLink 和 NVIDIA IMEX)与现代 Kubernetes 原生调度概念(动态资源分配,简称 DRA)连接起来,为在现代 GPU 硬件上运行分布式多节点工作负载提供所需的基础支持。
如果没有 ComputeDomains,多节点 NVLink 设置将不得不手动定义并固定到位,这限制了 Kubernetes 旨在提供的灵活性,并以牺牲安全隔离、故障隔离和成本效率为代价。
ComputeDomains 通过以下方式工作:
通过 ComputeDomains,运行分布式训练或跨复杂 NVLink 连接 GPU 架构的推理变得像部署标准 Kubernetes 工作负载一样简单。
软件信息:
硬件信息:
GPU 基本信息:
|
|
GPU 拓扑:
|
|
|
|
提示:部署过程可能需要 5-10 分钟,请耐心等待。可以通过
kubectl get pods -n gpu-operator监控部署进度。
如果部署成功,那么节点上可以看到 nvidia.com/gpu 资源
|
|
|
|
重要参数说明:
resources.gpus.enabled=false:禁用默认 GPU 资源管理,由 GPU Operator 处理nvidiaDriverRoot=/run/nvidia/driver:指定 NVIDIA 驱动路径
正常情况下,可以看到节点间的 nvidia.com/gpu.clique label。
|
|
创建 IMEX 负载
|
|
查看日志,正常能看到注入的 imex channel
|
|
至此,说明 nvidia-dra-driver 部署成功。
首先安装 MPI Operator,用于运行多节点 MPI 作业:
|
|
|
|
Apply
|
|
会自动启动 Pod 进行测试
|
|
查看日志
|
|
测试结果如下:
|
|
测试结果显示跨节点 GPU-to-GPU 通信带宽稳定在 820 GB/s 左右,远超传统 InfiniBand 等网络互联方案的性能,为大规模分布式 AI 训练提供了强大的通信基础。
通过本文的实战指南,您已经学会了如何在 GB200 平台上部署和配置 NVIDIA DRA Driver,以启用 Multi-Node NVLink (MNNVL) 功能。主要成就包括:
ComputeDomains 技术将复杂的底层 GPU 硬件抽象为 Kubernetes 原生资源,使得多节点分布式 AI 工作负载的管理变得简单而高效。未来,随着更多 NVIDIA 架构的支持,这项技术将在 AI 基础设施领域发挥越来越重要的作用。