{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Debashish Ghosal",
  "title_listed": "Kubernetes for Agents: Why Agent Fleets Need a Control Plane",
  "keywords": "",
  "domain": "大模型算法",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/debashish_ghosal/kubernetes-for-agents-why-agent-fleets-need-a-control-plane-2lo6",
  "publish_date": "2026-09-26",
  "corpus_stage": "",
  "notes": "",
  "id": "0b6316d46416",
  "collected_at": "2026-10-02T14:05:54",
  "title": "Kubernetes for Agents: Why Agent Fleets Need a Control Plane - DEV Community",
  "body_markdown": "Scenario five of my field test plan has a name I didn't enjoy writing:\nover-budget\n. I built an agent with a single job — burn money — aimed it at my own control plane, and watched the run die the instant priced usage crossed its per-run ceiling.\nI cheered. That was the moment \"Kubernetes for agents\" stopped being a tagline. I had put the sentence in my\nREADME\nsix weeks earlier, and only now understood which half of it mattered.\nIf you run more than one agent anywhere near production, this is the story I wish someone had told me before I started.\nControl planes keep finding me: a\ntool gatekeeper that 14 developers turned into a control plane\n, an\nMCP control plane\n, and now agents themselves. The series that led here started with\nthe gate that says no\n— this piece is the thesis underneath it.\nThe sentence I wrote before I understood it\nKubernetes didn't win by running containers — it won by making\ndesired state\na contract and\nadmission\na gate.\nYou declare, a controller reconciles, and an admission controller decides what is allowed to exist at all. I had built the declarative part: one workload manifest per agent — owner, tools, model identity, budgets, certification thresholds — and a loop to enforce it.\nThe ecosystem, meanwhile, is converging on the same substrate from the other side.\nkagent\n(CNCF Sandbox, from the founders of Istio) makes agents Kubernetes CRDs — GitOps, kubectl, RBAC, mesh mTLS.\nagent-sandbox\n(Kubernetes SIG Apps) gives them the\nSandbox\nCRD: gVisor/Kata isolation, stable identity, warm pools.\nBoth are right, and both are the\nfloor\n. One gives you placement. One gives you isolation. Neither asks the question that keeps operators awake:\nHas this agent proven it is allowed to run — and who owns it when it goes wrong?\nMy field test turned out to be ten attempts to answer exactly that. The\nreport\ncame back\n10/10, all 20 acceptance criteria\n, but the receipts that taught me something were the refusals.\nWhat I threw at my own gate\nI didn't test happy paths. I built deliberately bad agents and aimed them at the admission gate I'd written:\nScenario\nWhat I threw at it\nWhat the plane did\nS2\nAn uncertified agent, submitted straight to production\n403\n—\n\"certification status 'uncertified' is insufficient for production; requires 'certified'\"\nS3\nThe same agent, certified — then its model quietly swapped\n403\n, because identity binds to the attestation, not the editable manifest\nS4\nAn agent that\nlooked\nfine and wasn't\nBenchmark caught the regression; status dropped, critical failure named\nS5\nThe money-burner\nKilled at the priced-usage ceiling, mid-run\nS7\nA tool dumping 40,002 bytes of output\nTruncated to 16,384 before it ever reached the model's context\nThe S3 moment deserves its own article (it's the next one in this series), because for an hour the attack\nworked\n— 201, admitted — and the post-mortem showed the gate was right and my test was wrong.\nBut S4 is the one that changed how I think. The agent hadn't changed its manifest, swapped its model, or exceeded anything. It had just quietly gotten worse at its job.\nNo framework catches that, because no framework is watching.\nThe benchmark did, because certification runs the agent's actual work as real runs and compares the verdicts.\ntip:\nA gate that only fires on what\nchanges\nis half a gate. The dangerous agent is usually the one that drifted, not the one that got edited — the same lesson as the\nchecks AI will skip until you make them a gate\n.\nThe three things the field test taught me\nThe refusals are the product.\nAny platform can start runs. Mine earned my trust by refusing one with a reason I could act on. \"Forbidden\" is a dead end;\n403: certification status 'uncertified'\nis a workflow.\nCertification is a security control, not a quality metric.\nThe moment production admission depends on a signed Ed25519 attestation bound to the exact model identity, a whole attack class — swap the model, edit the manifest, quietly regress — becomes blocked and auditable. The\nsecurity audit\nis the boring part; the refusals are the interesting one.\nSlow governance gets bypassed.\nS10 measured inspect-plus-stop at\n0.04 seconds\n; scaffolding a new fleet at 0.24. If saying no takes longer than a Slack message to the agent's author, people route around you — and a bypassed control plane is an expensive dashboard.\nWhat v0.1.0 doesn't do\nTwo adapters ship — raw Python workers and LangGraph, behind one conformance suite. Broader coverage is deliberately deferred; if a control plane knows too much about one runtime, it becomes a framework wrapper.\nThe drift detector ships next. Today re-certification is scheduled and change-triggered — it catches what\nchanges\n, and S4 is my proof that what\nfades\nis the harder half.\nOne model identity validated this cycle; the real-priced cloud run is the next field test.\nIt's single-tenant. Tenancy is where the next release starts, and building that schema has already taught me the uncomfortable lesson — isolation is structural or it's imaginary — but that's a story for when it ships.\nThe rest of the operating model — triggers, multi-agent pipelines, desired-state reconciliation from Git — is roadmap, not release. I'll write about each piece when it's true.\nReferences\nHivePlane\n—\npip install hiveplane\n, Apache-2.0\nField test report (10/10, 20 criteria)\n·\nDocker test report (25/25)\nv0.1.0 release notes\nkagent\n·\nagent-sandbox\n— the Kubernetes-native wave this article argues is the floor\nIf Kubernetes is the floor and frameworks are the runtime — what's your admission controller? When an agent goes wrong where you work, can you prove what it was allowed to do?",
  "metadata": {
    "title": "Kubernetes for Agents: Why Agent Fleets Need a Control Plane - DEV Community",
    "description": "Scenario five of my field test plan has a name I didn't enjoy writing: over-budget. I built an agent... Tagged with ai, k8, kubernetes, control.",
    "keywords": "ai, k8, kubernetes, control, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/debashish_ghosal/kubernetes-for-agents-why-agent-fleets-need-a-control-plane-2lo6",
    "og:title": "Kubernetes for Agents: Why Agent Fleets Need a Control Plane",
    "og:description": "Scenario five of my field test plan has a name I didn't enjoy writing: over-budget. I built an agent...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fin5ugbugi3qf6g9bxg05.png",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "Kubernetes for Agents: Why Agent Fleets Need a Control Plane",
    "twitter:description": "Scenario five of my field test plan has a name I didn't enjoy writing: over-budget. I built an agent...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fin5ugbugi3qf6g9bxg05.png"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://github.com/deghosal-2026/hiveplane",
      "label": "README",
      "type": "a"
    },
    {
      "href": "https://dev.to/debashish_ghosal/i-shipped-an-agent-gatekeeper-v01-14-developers-showed-me-what-i-missed-heres-v02-a-4n2n",
      "label": "tool gatekeeper that 14 developers turned into a control plane",
      "type": "a"
    },
    {
      "href": "https://dev.to/debashish_ghosal/i-connected-3-mcp-servers-to-one-agent-it-got-scary-fast-4loe",
      "label": "MCP control plane",
      "type": "a"
    },
    {
      "href": "https://dev.to/debashish_ghosal/i-trusted-my-agent-demos-for-years-then-i-built-a-gate-that-says-no-4183",
      "label": "the gate that says no",
      "type": "a"
    },
    {
      "href": "https://kagent.dev/",
      "label": "kagent",
      "type": "a"
    },
    {
      "href": "https://github.com/kubernetes-sigs/agent-sandbox",
      "label": "agent-sandbox",
      "type": "a"
    },
    {
      "href": "https://github.com/deghosal-2026/hiveplane/blob/main/docs/field-test/v0.1.0/FIELD_TEST_REPORT.md",
      "label": "report",
      "type": "a"
    },
    {
      "href": "https://dev.to/debashish_ghosal/10-sdlc-checks-ai-will-skip-unless-you-make-them-a-gate-581k",
      "label": "checks AI will skip until you make them a gate",
      "type": "a"
    },
    {
      "href": "https://github.com/deghosal-2026/hiveplane/blob/main/docs/release/v0.1.0/security-audit.md",
      "label": "security audit",
      "type": "a"
    },
    {
      "href": "https://github.com/deghosal-2026/hiveplane/blob/main/docs/field-test/v0.1.0/DOCKER_TEST_REPORT.md",
      "label": "Docker test report (25/25)",
      "type": "a"
    },
    {
      "href": "https://github.com/deghosal-2026/hiveplane/blob/main/docs/release/v0.1.0/release-notes.md",
      "label": "v0.1.0 release notes",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:50:12Z",
  "source_url": "https://dev.to/debashish_ghosal/kubernetes-for-agents-why-agent-fleets-need-a-control-plane-2lo6",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 5624,
  "expected_body_images": 0,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/0b6316d46416/pages/source.html",
  "local_html": "attachments/0b6316d46416/pages/article.html",
  "body_base_path": "attachments/0b6316d46416/pages/",
  "body_markdown_path": "attachments/0b6316d46416/pages/article.md"
}