为什么设计 K8s

容器作为基本管理单元

围绕容器而非机器构建 management API,将数据中心的核心从机器转移到了应用,这带了了几方面好处:

  1. 应用开发者和应用运维团队无需再关心机器和操作系统等底层细节;
  2. 基础设施团队引入新硬件和升级操作系统更加灵活, 可以最大限度减少对线上应用和应用开发者的影响;
  3. 将收集到的 telemetry 数据(例如 CPU、memory usage 等 metrics)关联到应用而非机器, 显著提升了应用监控和可观测性,尤其是在垂直扩容、 机器故障或主动运维等需要迁移应用的场景。

通用 API 和自愈能力

容器能提供一些通用的 API 注册机制,使管理系统和应用之间无需知道彼此的实现细节就能交换有用信息。

用 annotation 描述应用结构信息

容器还能提供或展示其他一些信息。例如,

容器管理系统还可以将 resource limits、container metadata 等信息传给容器, 使容器能按特定格式输出日志和监控数据(例如用户名、job name、identity), 或在 node 维护之前打印一条优雅终止的 warning 日志。