1. api sever简介
k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。
1)提供了集群管理的REST API接口。
2)实现k8s集群管理的安全控制(包括认证授权以及准入控制)。
3)资源注册入口,提供其他模块之间的数据交互和通信的枢纽。
2. 集群安全认证
2.1 安全端口
k8s通过kube-apiserver这个进程提供服务,该进程运行在单个k8s-master节点上。默认有两个端口。
本地端口,该端口用于接收HTTP请求,默认值为8080,可以通过API Server的启动参数“–insecure-port”的值来修改默认值;
安全端口:默认值为6443,可通过启动参数“–secure-port”的值来修改默认值;该端口用于接收HTTPS请求;
2.2 TSL认证
通过TSL认证解决通信安全问题,双向认证更好的解决了身份冒充问题,服务端提供证书的同时要求对客户端身份进行认证;然而在一些常见的应用场景下往往只有单向认证,如采用https网站只需要求客户端(浏览器)对服务端的证书进行认证。
在单向认证场景下,握手阶段2服务端不会发出 client certificate request,之后服务端也不需要校验客户端证书;
在双向认证场景下,客户端如果无法提供证书,会发出 no digital certificate alert 的警告信息,此时可能导致握手失败(根据服务端策略而定);
3.资源控制
3.1 注册表层
选择要访问的资源对象。PS:Kubernetes 把所有资源对象都保存在注册表(Registry)中,例如:Pod,Service,Deployment 等等。
3.2 etcd 数据库
保存创建副本的信息。用来持久化 Kubernetes 资源对象的 Key-Value 数据库,同时其他组件通过监听etcd数据库更新。