前言

我们用 Compose 运行了 3 年的微服务:一个 Node.js API、两个 Python 后台任务、一个 Redis 缓存、PostgreSQL 数据库——都在一个 docker-compose.yml 文件里定义,在单台虚拟机上跑。每次发布新版本就是:停容器、拉新镜像、docker-compose up -d。工作是能正常工作,但问题开始浮现了。

一个晚上,那台虚拟机的硬盘满了。所有容器崩了,我们直到用户打电话才知道。自动扩容?没有。服务发现?靠写死的 IP。滚动更新?做不了,停一个容器就有几秒的请求失败。当时我就明白,是时候升到 Kubernetes 了。