为了”用”,你不需要 Kubernetes;为了”学”,你需要

上一篇我兴致勃勃搭了一套跨云 k3s 集群。这一篇我想泼盆冷水,也是给折腾完的自己一个交代:对我这种规模,Kubernetes 其实是过度工程。

答案取决于你的目标

如果只是”把几个服务跑好、少折腾”——几个自部署应用、几台小机器、一个人管——那 docker-compose 本来就够,而且更简单。k8s 带来的复杂度(控制平面吃内存、跨云组网、镜像分发、存储与故障转移),换来的好处我大多用不上。尤其当我还要求”每个服务只跑在一台机器上”,恰恰把 k8s 最值钱的能力都关掉了。

但如果目标是”学”——那 k3s 完全正确,这些麻烦正是它真正的课程。

两个容易搞反的点

  • 故障转移 ≠ 数据安全。很多人以为上了高可用数据就安全了。错。副本只会把损坏的数据一起复制过去。防机器挂靠副本,防数据丢/坏靠备份,这是两套东西。
  • 数据安全和用不用 k8s 无关。无论裸机、Docker 还是 k8s,生产数据都得有异地的、带历史版本的、验证过能恢复的备份。

我最后的姿势

有状态的、真生产的(数据库、网站)留在 Docker,稳、简单、好备份;无状态的、新项目、练手的放进 k3s 当学习沙盒。这样我学了 k8s,又没把身家压在它上面。

对小团队和个人,”可恢复”远比”永不宕机”重要。机器挂了停几分钟可以接受;数据没了是灾难。