---
title: "用 Kamaji + HAMi 做多租户 GPU Kubernetes：控制面隔离，显卡按 MB 与算力百分比切分 - Angryecho"
description: "2026年10月23日，CNCF 博客刊发 Anish Bista 的实践文，讨论 GPU 团队常碰到的两难：给每个团队单独拉一套 Kubernetes，控制面成本堆很高；全员挤进一个共享集群，隔离又偏弱。"
canonical_url: "https://www.angryecho.com/c/xi_an_dian_zi_ke_ji_da_xue/p/P2TBBoxNxSvXibOga4f7j"
meta:
  "og:description": "2026年10月23日，CNCF 博客刊发 Anish Bista 的实践文，讨论 GPU 团队常碰到的两难：给每个团队单独拉一套 Kubernetes，控制面成本堆很高；全员挤进一个共享集群，隔离又偏弱。"
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBBoxNxSvXibOga4f7j%2Crevision_~MjAyNi0xMC0yN1QwMjo1Nzo0OS4yMjMzNTBa%2Cp_Ii9jL3hpX2FuX2RpYW5femlfa2VfamlfZGFfeHVlL3AvUDJUQkJveE54U3ZYaWJPZ2E0ZjdqIg%2Cs_tDxQstvkTTZIK0t9.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "用 Kamaji + HAMi 做多租户 GPU Kubernetes：控制面隔离，显卡按 MB 与算力百分比切分"
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **用 Kamaji + HAMi 做多租户 GPU Kubernetes：控制面隔离，显卡按 MB 与算力百分比切分**

2026年10月23日，CNCF 博客刊发 Anish Bista 的实践文，讨论 GPU 团队常碰到的两难：给每个团队单独拉一套 Kubernetes，控制面成本堆很高；全员挤进一个共享集群，隔离又偏弱。更麻烦的是，Kubernetes 默认按「整张卡」分配 GPU，只要 4 GB 显存的 Pod，也可能占住一张 80 GB 的卡。\[1]

文中的解法是把两件开源工具叠在一起，各自管一层：

- **Kamaji**：把每个租户的 Kubernetes 控制面跑成管理集群里的 Pod，租户不共享 API Server。
- **HAMi**：允许 Pod 按显存（MB）和算力（百分比）申请 GPU 切片，多只 Pod 可挤进同一张卡。

作者在一台没有物理 GPU 的机器上，用 HAMi 的 mock device plugin 模拟显卡，搭出两个完全隔离的租户集群，并让它们通过 HAMi 调度分数 GPU 工作负载；文中称相关 8 项测试全部通过。\[1]

## 架构怎么咬合

管理侧用一个 kind 集群托管 Kamaji 与各租户控制面；每个租户的 worker 是单独容器，经 kind 网络加入。租户之间不共享节点，也不共享 API Server；共享的主要是管理集群和 kamaji-etcd（各租户数据分置）。\[1]

关键接合点在于：租户的 API Server 住在管理集群里，而 HAMi 的 webhook 住在租户 worker 上。创建 GPU Pod 时，API Server 要通过 Kamaji 的 Konnectivity 隧道回伸到租户侧。作者写明，证明这条路径可通，是本次实验的核心目标。\[1]

## 没有真卡怎么测共享

HAMi 的真实 device plugin 要跟 NVIDIA 驱动对话；mock 插件跳过硬件发现，靠节点注解登记假卡的 `gpumem` / `gpucores` 容量，后续 webhook、调度与配额逻辑与真机一致。文中给了两组对照：tenant-a 模拟 1×A100 80 GB，tenant-b 模拟 2×L4 24 GB。\[1]

验证示例里，三只各要 20000 MB 显存、30% 算力的 Pod，可以同时落到同一张 mock 卡上；再要第 4 只同规格 Pod，会因 `CardInsufficientCore` 挂起；显存要到 90000 MB 则报 `CardInsufficientMemory`。另有用例确认租户之间互相不可见。\[1]

对通信、算力方向的同学，可以把这篇文章当成「控制面多租户 + GPU 切分」的实验说明书：Kamaji 解决「谁的集群」，HAMi 解决「卡怎么切」。真要上生产，还要换成真实 device plugin，并单独评估隔离边界、配额与运维成本；文中版本号与命令以原文仓库步骤为准。

> 说明：本稿解释架构与实验结论，不替代原文逐步命令；模拟卡与真机驱动行为仍有差距。

## 来源

> \[1] [Multi-tenant GPU Kubernetes on simulated hardware with Kamaji and HAMi](https://www.cncf.io/blog/2026/10/23/multi-tenant-gpu-kubernetes-on-simulated-hardware-with-kamaji-and-hami/)，Anish Bista，CNCF Blog，2026年10月23日。

#Kamaji #HAMi #GPU #Kubernetes #多租户 #科普解读

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/xi_an_dian_zi_ke_ji_da_xue/p/P2TBBoxNxSvXibOga4f7j#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-27T02:57:49.223Z","datePublished":"2026-10-23T04:00:00.000Z","description":"2026年10月23日，CNCF 博客刊发 Anish Bista 的实践文，讨论 GPU 团队常碰到的两难：给每个团队单独拉一套 Kubernetes，控制面成本堆很高；全员挤进一个共享集群，隔离又偏弱。","headline":"用 Kamaji + HAMi 做多租户 GPU Kubernetes：控制面隔离，显卡按 MB 与算力百分比切分","isPartOf":"https://www.angryecho.com/c/xi_an_dian_zi_ke_ji_da_xue","mainEntityOfPage":"https://www.angryecho.com/c/xi_an_dian_zi_ke_ji_da_xue/p/P2TBBoxNxSvXibOga4f7j","text":"2026年10月23日，CNCF 博客刊发 Anish Bista 的实践文，讨论 GPU 团队常碰到的两难：给每个团队单独拉一套 Kubernetes，控制面成本堆很高；全员挤进一个共享集群，隔离又偏弱。更麻烦的是，Kubernetes 默认按「整张卡」分配 GPU，只要 4 GB 显存的 Pod，也可能占住一张 80 GB 的卡。[1]\n\n文中的解法是把两件开源工具叠在一起，各自管一层：\n\n\n\n\n\nKamaji：把每个租户的 Kubernetes 控制面跑成管理集群里的 Pod，租户不共享 API Server。\n\n\n\nHAMi：允许 Pod 按显存（MB）和算力（百分比）申请 GPU 切片，多只 Pod 可挤进同一张卡。\n\n作者在一台没有物理 GPU 的机器上，用 HAMi 的 mock device plugin 模拟显卡，搭出两个完全隔离的租户集群，并让它们通过 HAMi 调度分数 GPU 工作负载；文中称相关 8 项测试全部通过。[1]\n\n架构怎么咬合\n\n管理侧用一个 kind 集群托管 Kamaji 与各租户控制面；每个租户的 worker 是单独容器，经 kind 网络加入。租户之间不共享节点，也不共享 API Server；共享的主要是管理集群和 kamaji-etcd（各租户数据分置）。[1]\n\n关键接合点在于：租户的 API Server 住在管理集群里，而 HAMi 的 webhook 住在租户 worker 上。创建 GPU Pod 时，API Server 要通过 Kamaji 的 Konnectivity 隧道回伸到租户侧。作者写明，证明这条路径可通，是本次实验的核心目标。[1]\n\n没有真卡怎么测共享\n\nHAMi 的真实 device plugin 要跟 NVIDIA 驱动对话；mock 插件跳过硬件发现，靠节点注解登记假卡的 gpumem / gpucores 容量，后续 webhook、调度与配额逻辑与真机一致。文中给了两组对照：tenant-a 模拟 1×A100 80 GB，tenant-b 模拟 2×L4 24 GB。[1]\n\n验证示例里，三只各要 20000 MB 显存、30% 算力的 Pod，可以同时落到同一张 mock 卡上；再要第 4 只同规格 Pod，会因 CardInsufficientCore 挂起；显存要到 90000 MB 则报 CardInsufficientMemory。另有用例确认租户之间互相不可见。[1]\n\n对通信、算力方向的同学，可以把这篇文章当成「控制面多租户 + GPU 切分」的实验说明书：Kamaji 解决「谁的集群」，HAMi 解决「卡怎么切」。真要上生产，还要换成真实 device plugin，并单独评估隔离边界、配额与运维成本；文中版本号与命令以原文仓库步骤为准。\n\n\n\n说明：本稿解释架构与实验结论，不替代原文逐步命令；模拟卡与真机驱动行为仍有差距。\n\n来源\n\n\n\n[1] Multi-tenant GPU Kubernetes on simulated hardware with Kamaji and HAMi，Anish Bista，CNCF Blog，2026年10月23日。\n\n#Kamaji #HAMi #GPU #Kubernetes #多租户 #科普解读","url":"https://www.angryecho.com/c/xi_an_dian_zi_ke_ji_da_xue/p/P2TBBoxNxSvXibOga4f7j","author":{"@type":"Person","name":"且爱且珍惜","url":"https://www.angryecho.com/u/T4Aqie_ai_qie_zhen_x"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
