API Server

API Server的功能

Kubernetes API Server的核心功能是提供Kubernetes各类资源对象(如Pod、RC、Service等)的增、删、改、查及Watch等HTTP Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线数据中心。除此之外,它还有以下一些功能特性。

  • 是集群管理的API入口

  • 是资源配额控制的入口。

  • 提供了完备的集群安全机制。

kube-apiserver

Kubernetes API Server通过一个名为kube-apiserver的进程提供服务,该进程运行在Master上。

  • 在默认情况下,kube-apiserver进程在本机的8080端口(对应参数--insecure-port)提供REST服务

  • 可以同时启动HTTPS安全端口(--secure-port=6443)来启动安全机制,加强REST API访问的安全性。

通常可以通过命令行工具kubectl与Kubernetes API Server交互,它们之间的接口是RESTful API

API Server的特性

由于API Server是Kubernetes集群数据的唯一访问入口,因此安全性高性能就成为API Server设计和实现的两大核心目标。

安全性:

  • 通过采用HTTPS安全传输通道与CA签名数字证书强制双向认证的方式,API Server的安全性得以保障。

  • 此外,为了更细粒度地控制用户或应用对Kubernetes资源对象的访问权限,Kubernetes启用了RBAC访问控制策略

高性能:

API Server的性能是决定Kubernetes集群整体性能的关键因素,因此Kubernetes的设计者综合运用以下方式来最大程度地保证API Server的性能:

  1. API Server拥有大量高性能的底层代码。在API Server源码中使用协程(Coroutine)+ 队列(Queue)这种轻量级的高性能并发代码,使得单进程的API Server具备了超强的多核处理能力,从而以很快的速度并发处理大量的请求。

  2. 普通List接口结合异步Watch接口,不但完美解决了Kubernetes中各种资源对象的高性能同步问题,也极大提升了Kubernetes集群实时响应各种事件的灵敏度。

  3. 采用了高性能的etcd数据库而非传统的关系数据库,不仅解决了数据的可靠性问题,也极大提升了API Server数据访问层的性能。

    在常见的公有云环境中,一个3节点的etcd集群在轻负载环境中处理一个请求的时间可以低于1ms,在重负载环境中可以每秒处理超过30000个请求。

最后更新于