面试让我学到的关于 Kubernetes 的事

Kubernetes 作为新的默认选择

  • 许多评论者表示,Kubernetes 实际上已经“赢过”了 VM+systemd 和大多数其他调度器,主要因为:
    • 主要云厂商上的托管服务已经成熟且开箱即用。
    • 围绕它建立起了庞大的工具、公司和人才生态系统。
    • 它充当了基础设施和 GitOps 的“通用语”。

对小团队和初创公司的适配性

  • 对 Kubernetes 何时有意义,存在强烈分歧:
    • 一些人认为,即使是非常小的团队,只要已经是“cloud native”,它也是合理的,因为它带来了统一部署、更容易的上手以及共享知识。
    • 另一些人则认为,2–3 名工程师就采用 k8s 是个危险信号:与其这样,不如直接用虚拟机或更简单的容器平台,没必要增加复杂度。
    • 还有几位认为,文章中那些非技术收益(运营/组织层面)在如此小的规模下并不足以抵消复杂性。

复杂性、升级与生态变化

  • 许多人指出 k8s 不是“自带所有功能”的:ingress、证书管理、DNS、存储和 GitOps 会引入多个控制器,而且它们各自都有升级周期和破坏性变更。
  • 升级节奏被看作:
    • 一项特性(通过“点一下按钮”式的集群升级,实现定期安全更新和漂移控制)。
    • 或一种负担(持续的 API 变动、ingress/gateway 变化、让各个 addon 保持同步)。
  • 一些人强调网络和 DNS 层(例如 CoreDNS 扩展、overlay)对许多初创公司来说过于大材小用。

替代方案和“更简单”的技术栈

  • 经常被提到的有:
    • 传统的“linux + web server + database + language runtime”放在虚拟机上,通常用 Ansible、shell 脚本或 NixOS 管理。
    • 更轻量的调度器和类 PaaS 工具(Nomad、Docker Swarm、ECS/Fargate、Cloud Run、类似 Heroku 的系统、自定义的“kube-lite”项目)。
  • 一个反复出现的模式是:团队先尝试 k8s,然后有些团队又回到更简单、更“boring”的配置,以降低运维负担。

LLM 与易用性

  • 有人声称 LLM 让 k8s 和 Terraform 变得容易得多:可以生成 manifests、Helm charts、仪表盘,并帮助调试集群。
  • 也有人强烈警告,不要用 LLM 去处理你自己并不理解的系统,因为错误往往隐蔽且影响巨大。

有状态工作负载与托管服务

  • 几位评论者认为,持久状态(数据库、blob 存储、缓存)通常最好放在 Kubernetes 之外,通过云厂商的托管服务来管理:
    • 托管服务被认为比集群内的有状态 operator 更可靠,也更容易迁移。
  • 另一些人表示,使用现代的 k8s 原生数据库 operator 也取得了成功,但承认这会带来显著的复杂性。

招聘、炒作与文化

  • Kubernetes 被视为:
    • 对招聘和简历塑造很有吸引力;一些人称之为“resume++”或受炒作驱动。
    • 也是 CTO 的一个安全、标准选择,因为他们希望避免定制基础设施,并依赖广为人知的模式。
  • 有些人批评采用 k8s 其实是在用工具掩盖文化/流程问题,而不是解决根本问题。