5.1 Kubernetes API Server
功能:(1)提供kubernetes各类资源对象的增删改查及Watch等http REST接口。是集群内各个功能模块之间数据交互和通信的中心,是数据中心。
(2)是集群管理的API入口。
(3)是资源配额控制的入口。
(4)提供了完备的集群安全机制。
Kubernetes API Server通过kube-apiserver进程(master上)提供服务。通常通过kubectl与Kubernetes API Server交互,它们之间的接口是RESTful API。
通过运行kubectl proxy进程可以启动一个内部代理来限制某些REST服务。如:kubectl proxy --reject-paths="^/api/v1/replicationcontrollers" --port=8001 --v=2
API Server采用HTTPS安全传输通道与CA签名数字证书强制双向认证的方式,保障安全性。
API Server架构:
(1)API层:以REST方式提供各种API接口,包括Kubernetes资源对象的CRUD和Watch等API,还有健康检查、UI、日志、性能指标等运维监控相关的API。
(2)访问控制层:当客户端访问API接口时,访问控制层负责对用户身份鉴权,验明用户身份,核准用户对Kubernetes资源对象的访问权限,然后根据配置的各种资源访问许可逻辑,判断是否允许访问。
(3)注册表层:Kubernetes把所有资源对象都保存在注册表(Register)中,针对注册表中的各种资源对象定义了:资源对象的类型、如何创建资源对象、如何转换资源的版本、如何将资源编码和解码为JSON或ProtoBuf格式进行存储。
(4)etcd数据库:用于持久化存储Kubernetes资源对象的KV数据库。etcd的Watch API接口,List-Watch机制
List-Watch机制,客户端首先调用API Server的List接口获取相关资源对象的全量数据并缓存到内存中,然后启动对应资源的Watch线程,接收到Watch事件后,根据事件类型对内存中的资源进行相应的同步修改。全量结合增量、高性能、近乎实时的数据同步方式。
API Server为每种资源对象都引入了一个相对不变的internal版本,每个版本只要支持转换为internal版本,就能与其他版本进行间接转换。
Kubernetes API Server把收到的REST请求转发到某个node上的kubelet守护进程的REST端口,由该kubelet进程负责响应。
各个功能模块通过缓存机制来缓存数据。