1、概述
总体来看,Kubernetes API Server的核心功能是提供Kubernetes各类资源对象(如Pod、RC、Service等)的增、删、改、查及Watch等HTTP REST接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。除此之外,他还是,集群管理的API入口,是资源配额控制的入口,提供了完备的集群安全机制。
Kubernetes API Server 通过一个名为kube-apiserver的进程提供服务,该进程运行在Master上。
2、API Server 架构解析
API层: 主要以REST方式提供各种API接口。
访问控制层:当客户访问API接口时候,访问控制层负责对用户身份鉴别,验明用户身份,核准用户对Kubernetes资源对象的访问权限。
注册表层: Kubernetes把所有的资源都保存在注册表层(Registry)中。
etcd数据库:用于持久换存储Kubernetes资源对象的KV数据库。
3、集群功能模块之间的通讯
Kubernetes API Server作为集群的核心,负责集群个功能模块之间的通信。集群内的各个功能模块通过API Server将信息存入etcd中,当需要过去和操作这些数据时候,则通过API Server提供的REST接口(用GET,LIST或WATCH方法)来实现,从而实现个模块之间的信息交互。
4、Controller Manager
Controller 通过API Server 提供的(List-Watch)接口实时监控集群中特定资源的状态变,当发生各种故障导致某资源状态变化时候,Controller会尝试将其状态调整为期望的状态。
5、副本控制器
Kubernetes中存在两个副本控制器,Replication Controller和Deloyment Controller。
Replication Controller 的核心作用是确保集群中某个 RC 关联的 Pod 副本数摄在任何时候都保待预设值。如果发现 Pod 的副 本数拯超过预设值 ,则 Repli cation Controller 会销毁一些 Pod 副本;反之, Replica ion Controller 会自动创建新的 Pod 副本,直到符合条件的Pod 副本数量达到预设值。需要注意:只有当 Pod 的重启策略是 Always(RestartPolicy=Always), Replication Controller 才会管理该 Pod 的操作(例如创建、销毁重启等 )。需要注意:只有当 Pod 的重启策略是 Always(RestartPolicy=Always), Replication Controller 才会管理该 Pod 的操作(例如创建、销毁重启等 )。
Deployment Controller 在工作过程中实际上是在控制两类相关的资源对象: Deployment ReplicaSet 在我们创建 Deployment 资源对象之后, Deployment Controller 也默默创建了对应的ReplicaSet, Deployment 的滚动升级也是 Deployment Controller 通过自动创建新的ReplicaSet 来支持的。
(1) 重新调度 (Res heduling)
(2) 弹性伸缩 (Scaling)
(3)滚动更新 (Rolling Updates)
6、Node Controller
Node kubelet 进程在启动时通过 API Serve 注册自身节点信息,并定时向 API Server 汇报态信息, API Sen er 在接收到这些信息后,会将这些信息更新到 etcd etcd 中存储的节点信息包括节点健康状况、节点资源 节点名称 节点地址信息 、操 系统版本、 Docker版本、 kubelet 版本等。节点健康状况包含就绪 (True) 、未就绪 (False) 、未知 (Unknown三种状态。
Node Controller 通过 API Server 实时获取 Node 的相关信息, 实现管理和监控集群中各个 Node 的相关控制功能。
7、Service Controler 和EndPoint Controller
8、Kubernetes Schedule
Kubernetes Scheduler 的作用是将待调度的 Pod (API 新创建的 Pod ControllerManager 为补足副本而创建的 Pod 等)按照特定的调度算法和调度策略绑定 Binding)集群中某个合适的 Node 上, 并将绑定信息 写入 etcd 。