企业 IT 基础设施正在变得越来越“碎片化”:一部分在 Kubernetes 上,一部分在虚拟机集群里,一部分在公有云资源池里,还有边缘节点、专用硬件(GPU/网卡/存储阵列)、以及大量“历史系统”。
在这种情况下,如果你想做到统一资源分配、统一权限、统一审计、统一可观测,单靠某一个编排系统往往不够。

一个更通用的方向是:构建一个可扩展的网络操作系统(Network OS / Infra OS)——通过在现有系统上预置一个 Agent,把异构资源抽象成统一对象,由平台集中调度与治理。

这篇文章讨论:为什么要做、应该怎么做、以及如何落地到可商用的工程形态


1. 问题本质:不是“缺工具”,而是“缺统一的资源语义与决策机制”

很多团队已经具备:

  • 容器编排(Kubernetes)

  • 服务治理(网关、注册中心、服务网格)

  • 监控告警(Metrics/Logs/Tracing)

  • 基础设施自动化(Terraform/Ansible 等)

但仍然会出现典型矛盾:

  • 资源分配割裂:GPU 在 A 池,CPU 在 B 池,网络带宽在 C 池;业务发起需求时只能“人肉协调”

  • 权限与审计分裂:每个系统各管一套权限/审批/日志

  • 治理无法闭环:明明有策略(成本、SLO、合规),却无法贯彻到节点执行层

  • 扩展性受限:一新增资源类型(如 License Token、边缘链路、特殊网卡),就需要重写一堆逻辑

所以,真正缺的不是“某个组件”,而是类似操作系统的三件套:

  1. 资源抽象(资源对象化)

  2. 统一调度/配额/抢占(决策引擎)

  3. 可执行的治理闭环(控制面→数据面→对账)


2. 网络操作系统的核心理念:把“资源”当作 OS 的“对象”,把“分配”当作 OS 的“调度”

你要做的网络操作系统,本质是把全网视为一台“超级计算机”:

  • 节点:CPU/内存/GPU/磁盘/网卡/端口/带宽

  • 拓扑:机房/可用区/边缘/专线

  • 约束:合规域/隔离域/成本域

  • 任务:容器、脚本、服务实例、数据处理作业、网络配置变更

而 Agent 的定位相当于“内核态驱动 + 执行器”,平台是“调度器 + 权限系统 + 策略系统”。


3. 体系结构:控制面、数据面、扩展面

3.1 控制面(Control Plane):做决策与治理

控制面负责“谁能申请、申请什么、怎么分配、什么时候回收”。

典型组件包括:

  • API 网关:统一入口、鉴权、限流、审计注入

  • 身份与权限:OIDC/SAML + RBAC/ABAC(租户/项目/环境/标签)

  • 资源注册中心:资源对象存储(全局拓扑、能力矩阵、标签)

  • 策略引擎:配额、优先级、抢占、合规、预算上限

  • 调度器:约束求解,生成分配结果

  • 编排器/工作流:申请→分配→下发→执行→对账→回收

  • 状态存储(强一致):期望态/现状态/版本

  • 事件总线:Agent 心跳、状态变更、告警、审计事件

工程上最关键的选择:声明式期望态 + 控制器对账(reconcile)
这是可扩展系统的“骨架”,也是故障恢复与审计回放的基础。

3.2 数据面(Data Plane):在节点上执行与隔离

数据面主要由 Node Agent 承担:

  • 节点注册、证书轮换、心跳

  • 资源盘点(inventory)与能力上报(capabilities)

  • 执行器(executor):部署/运行任务、变更网络/存储配置

  • 资源控制:cgroups/namespace、带宽/连接数/磁盘配额、进程/容器隔离

  • 本地缓存与降级:控制面不可达时维持续跑

3.3 扩展面(Extension Plane):决定你的上限

可扩展性来自三类插件:

  1. 资源类型扩展:新增 GpuSliceIPPoolLicenseToken

  2. 调度扩展:GPU 拆分策略、跨域带宽优选、低延迟路径偏好

  3. 执行扩展:容器、脚本、Wasm、二进制、网络变更驱动、云 API 驱动


4. 资源对象模型:三类对象足以支撑 80% 场景

为避免“把系统做成一个巨型工作流工具”,建议把资源模型收敛为三类对象:

  1. Resource(资源):可被分配的实体或配额池

  2. Claim(申请):一次资源需求的声明(数量、约束、期限、优先级)

  3. Allocation(分配):Claim 与具体 Resource 的绑定(含租约 Lease)

为什么要有 Lease(租约)?

Lease 是“网络 OS”的生命线:

  • 防止资源泄漏(到期自动回收)

  • 支持续租(长期任务)

  • 支持抢占(高优先级任务)

  • 支持断联恢复(Agent 离线期间不致失控)


5. 调度与配额:统一分配能否成立,取决于调度器能否表达“业务现实”

调度器必须能表达至少这些约束:

  • 硬约束:容量、地域、合规域、隔离域、标签

  • 软约束:成本、能耗、负载均衡、网络距离

  • 亲和/反亲和:同业务聚合/同租户隔离

  • 抢占策略:高优先级抢占低优先级(必须审计 + 可回滚)

  • 排队与公平:多租户公平(按权重/配额/项目级队列)

配额模型建议三层:

  • 租户总配额(Tenant Quota)

  • 项目/环境配额(Project/Env Quota)

  • 资源池配额(Pool Quota:GPU 池/边缘池/专线池)

这样做的好处是:平台可以“像 OS 一样”实现公平与稳定,而不是靠人工协调。


6. 安全模型:Agent 是高危点,必须“能力分级 + 最小权限 + 全量审计”

一旦 Agent 具备执行能力,它就等于拿到了节点控制权。安全策略必须前置:

  • mTLS 双向认证(平台↔Agent)+ 证书轮换

  • 能力分级(Capabilities):只读盘点 / 可执行任务 / 可改网络 / 可改存储

  • 命令执行收敛:优先下发“声明式执行单元”,避免任意 shell

  • 审批与签名:高危操作(网络 ACL、路由变更、磁盘操作)必须签名/审批

  • 不可抵赖审计:谁申请、谁批准、在哪个节点、执行了什么、结果如何


7. 可扩展性的工程关键:协议版本化 + 插件契约 + 兼容矩阵

想让系统“可扩展且可长期演进”,需要把扩展做成“可治理的生态”,不是散落的脚本:

  • Agent ↔ 控制面协议版本化:向前/向后兼容

  • 插件契约:资源类型定义、调度接口、执行接口都要有稳定 ABI/API

  • 兼容矩阵:平台版本 ↔ Agent 版本 ↔ 插件版本

  • 灰度升级:先升级控制面,再灰度升级 Agent,支持回滚

这部分决定你能否做到“企业级可运维”。


8. 落地路线:从 MVP 到 v1/v2,不绕路

MVP(4~8 周)

  • Agent 注册、证书、心跳

  • 基础资源盘点(CPU/内存/磁盘/基础网络)

  • Claim→Allocation→下发任务→回执(最简:运行一个容器或受限脚本)

  • RBAC + 基础审计

v1(可商用)

  • 配额/优先级/排队

  • 多资源池(机房/区域)

  • 至少两类驱动:K8s + VM

  • 灰度升级、Agent 自更新、可观测体系完善

v2(形成壁垒)

  • 网络资源对象化(IPPool、Bandwidth、ACL、Overlay)

  • 高级调度(抢占、跨域容灾、成本优化)

  • Policy-as-Code + 审批流 + 变更窗口


9. 一句话总结:网络操作系统的“胜负手”

  • 抽象:资源对象化(可声明、可查询、可审计)

  • 决策:统一调度、配额、抢占(可解释、可复盘)

  • 执行:Agent 驱动下沉(可控、可隔离、可回滚)

  • 扩展:插件契约与版本治理(可演进、可生态化)

做到这些,你的平台就不是“又一个运维工具”,而是企业基础设施的“统一内核”。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐