Kubernetes API Server 的核心功能是提供 Kubernetes 各类资源对象(如 Pod、RC、Service等)的增、删、改、查及 Watch 等 HTTP REST 接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。除此之外,它还是集群管理的 API 入口,是资源配额控制的入口,提供了完备的安全机制。
API Server 通过如下方式来最大程度地保证性能:
- API Server 拥有大量高性能的底层代码。在 API Server 源码中使用写成(Coroutine)+ 队列(Queue)这种轻量级的高性能并发代码,使得进程的 API Server 具备超强的多核处理能力,从而以很快的速度并发处理大量的请求
- 普通 List 接口结合异步 Watch 接口,不但完美解决了 Kubernetes 中各种资源对象的高性能同步问题,也极大提升了 Kubernetes 集群实时响应各种事件的灵敏度。
- 采用了高性能的 etcd 数据库而非传统的关系数据库,不仅解决了数据的可靠性问题,也极大提升了 API Server 数据访问层的性能。在常见的公有云环境中,一个 3 节点的 etcd 集群在轻负载环境中处理一个请求的时间可以少于 1ms,在重负载环境中可以每秒处理超过 30000 个请求。