可扩展的网络操作系统:在既有系统上安装 Agent,实现统一资源分配与治理
《企业IT基础设施的统一治理:网络操作系统的构建之道》 摘要:随着企业IT基础设施日益碎片化(容器、虚拟机、公有云、边缘节点等并存),传统编排系统难以实现统一管理。本文提出构建网络操作系统(NetworkOS/InfraOS)的解决方案,通过Agent将异构资源抽象为统一对象,实现集中调度与治理。关键点包括:1)建立资源对象模型(Resource/Claim/Allocation)和租约机制;2)
企业 IT 基础设施正在变得越来越“碎片化”:一部分在 Kubernetes 上,一部分在虚拟机集群里,一部分在公有云资源池里,还有边缘节点、专用硬件(GPU/网卡/存储阵列)、以及大量“历史系统”。
在这种情况下,如果你想做到统一资源分配、统一权限、统一审计、统一可观测,单靠某一个编排系统往往不够。
一个更通用的方向是:构建一个可扩展的网络操作系统(Network OS / Infra OS)——通过在现有系统上预置一个 Agent,把异构资源抽象成统一对象,由平台集中调度与治理。
这篇文章讨论:为什么要做、应该怎么做、以及如何落地到可商用的工程形态。
1. 问题本质:不是“缺工具”,而是“缺统一的资源语义与决策机制”
很多团队已经具备:
-
容器编排(Kubernetes)
-
服务治理(网关、注册中心、服务网格)
-
监控告警(Metrics/Logs/Tracing)
-
基础设施自动化(Terraform/Ansible 等)
但仍然会出现典型矛盾:
-
资源分配割裂:GPU 在 A 池,CPU 在 B 池,网络带宽在 C 池;业务发起需求时只能“人肉协调”
-
权限与审计分裂:每个系统各管一套权限/审批/日志
-
治理无法闭环:明明有策略(成本、SLO、合规),却无法贯彻到节点执行层
-
扩展性受限:一新增资源类型(如 License Token、边缘链路、特殊网卡),就需要重写一堆逻辑
所以,真正缺的不是“某个组件”,而是类似操作系统的三件套:
-
资源抽象(资源对象化)
-
统一调度/配额/抢占(决策引擎)
-
可执行的治理闭环(控制面→数据面→对账)
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):决定你的上限
可扩展性来自三类插件:
-
资源类型扩展:新增
GpuSlice、IPPool、LicenseToken -
调度扩展:GPU 拆分策略、跨域带宽优选、低延迟路径偏好
-
执行扩展:容器、脚本、Wasm、二进制、网络变更驱动、云 API 驱动
4. 资源对象模型:三类对象足以支撑 80% 场景
为避免“把系统做成一个巨型工作流工具”,建议把资源模型收敛为三类对象:
-
Resource(资源):可被分配的实体或配额池
-
Claim(申请):一次资源需求的声明(数量、约束、期限、优先级)
-
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 驱动下沉(可控、可隔离、可回滚)
-
扩展:插件契约与版本治理(可演进、可生态化)
做到这些,你的平台就不是“又一个运维工具”,而是企业基础设施的“统一内核”。
更多推荐


所有评论(0)