SH

Soloharness

概念 · 辨析 · Agent

← 返回概念辨析

Concept Contrast Fable

Kubernetes 和容器:一个管货物怎么摆,一个管货物怎么装

容器和 Kubernetes 经常在同一份架构图里出现,时间久了大家开口就说“上 K8s 跑容器”,好像它们是一体两面。但容器解决的是程序怎么打包和隔离运行,Kubernetes 解决的是几百个容器怎么调度、怎么恢复、怎么联网。打包方案和调度方案是两层架构,混在一起选型会同时绑死两层的自由度。

寓言

码头调度中心里的集装箱和吊车

港口有两种核心设施。一种是集装箱:把货物按统一尺寸装进铁箱,不管里面装的是茶叶、零件还是冷冻海鲜,外面看上去都一样,吊车和卡车都按统一接口处理。另一种是调度系统:决定哪个集装箱放在哪个堆位、哪台吊车去取、卡车从哪条路进来、台风来了先转移哪一批。

开港第一年,运营商签了一份大合同,买了一套“集装箱加调度系统整体解决方案”。供应商报了一个打包价,承诺从装箱到调度全部搞定。第一年确实省心。

第二年问题来了。业务量翻了四倍,调度系统开始卡——排队等吊车的卡车从港内排到了高速路口。公司想升级调度算法,但合同里写死了调度系统必须和供应商的集装箱配套使用。换调度系统意味着要把几千个集装箱上的电子标签全部换掉。

总工程师把架构图拆开之后发现了一个事实:装箱这件事可以被任何符合国际标准的集装箱完成,调度算法是纯软件层,只要集装箱上贴的标准标签不换,调度系统可以随时更换。当初签打包合同时,供应商把两层绑在一起报价,让买家以为两者不可分割。

公司重新招标时把采购单拆成了两张。第一张买集装箱和标签标准——只要求符合 ISO 标准,不绑定任何供应商。第二张买调度系统——只要求支持标准标签协议,不绑定任何品牌的集装箱。两套采购各自有三家以上的候选供应商。

拆开之后的一年里,调度系统升级了两次,集装箱换了一批更轻的新型号。两次变更互不影响,因为中间那层标准标签协议把两层解耦了。

新员工培训手册上画了一个简单的图:集装箱管“这个程序怎么跑起来”,调度系统管“一整个港口的程序怎么协同跑”。如果有人把这两层写在同一行采购条目里,培训手册会直接标红退回。 学徒也终于明白,箱子能装货,码头才管全场。

Kubernetes

容器编排平台,负责容器的调度、扩缩容、服务发现、负载均衡和故障恢复。管的是“一组容器怎么协同运行”。

容器

应用打包和运行时隔离技术,将程序及其依赖封装成标准化单元,可以在不同环境中一致运行。管的是“单个程序怎么打包和启动”。

故事对应

  • 集装箱统一包装货物:容器,把程序和环境打包成标准单元
  • 调度系统安排堆位和取货顺序:Kubernetes,编排容器的运行位置和生命周期
  • 打包合同把装箱和调度绑死:整体采购方案阻止了某一层的独立升级
  • 标准标签协议解耦两层:容器运行时的标准接口让编排层可以自由替换

落到基础设施选型里

架构评审时把容器运行时和编排平台分成两份独立决策。容器运行时回答“用什么打包、用什么隔离”,候选包括 Docker、containerd 等;编排平台回答“用什么调度、用什么做服务发现”,候选包括 K8s、Nomad 等。预算审批单上两行分开,给未来任何一层的独立替换留出合法通道。