Docker 解决的是:怎么把一个程序装进标准集装箱里跑起来。
Kubernetes 解决的是:当你有很多集装箱、很多机器、很多副本、很多版本、很多流量时,怎样让整支舰队稳定、自动、可扩地运行。
把它想成一支星际舰队:
你有一支舰队要长期执行任务
│
├── 有很多母舰(机器)
├── 每艘母舰上有很多任务舱(容器工作单元)
├── 有的任务舱坏了要自动补
├── 有的任务需要临时增兵
├── 外部游客要从统一关口进入
├── 每个任务舱要吃到配置和密钥
└── 指挥部要始终确保“实际舰队”贴近“计划舰队”所以 Kubernetes 不是“一个跑容器的命令”,而是一个声明式的舰队控制系统。
你不是对它说:
- “现在去启动 3 个进程”
- “现在去重启那台机器上的那个容器”
你是对它说:
- “我希望有 3 个这样的任务舱一直活着”
- “我希望外界通过这个固定入口访问它们”
- “我希望它们带着这份配置和这把密钥”
- “我希望 CPU 高了自动扩到 10 个”
然后控制平面不断把现实拉回你声明的目标。
这就是 Kubernetes 最核心的心智模型:
你写下期望状态(desired state)
│
▼
Kubernetes 持续观察当前状态(current state)
│
▼
两者不一致,就自动修正