Kubernetes Cluster 由 Master 和 Node 组成,节点上运行着若干 Kubernetes 服务。前端
Master 是 Kubernetes Cluster 的大脑,运行着以下 Daemon 服务:kube-apiserver、kube-scheduler、kube-controller-manager、etcd 和 Pod 网络(例如 flannel)。api
API Server 提供 HTTP/HTTPS RESTful API,即 Kubernetes API。API Server 是 Kubernetes Cluster 的前端接口,各类客户端工具(CLI 或 UI)以及 Kubernetes 其余组件能够经过它管理 Cluster 的各类资源。网络
Scheduler 负责决定将 Pod 放在哪一个 Node 上运行。Scheduler 在调度时会充分考虑 Cluster 的拓扑结构,当前各个节点的负载,以及应用对高可用、性能、数据亲和性的需求。架构
Controller Manager 负责管理 Cluster 各类资源,保证资源处于预期的状态。Controller Manager 由多种 controller 组成,包括 replication controller、endpoints controller、namespace controller、serviceaccounts controller 等。工具
不一样的 controller 管理不一样的资源。例如 replication controller 管理 Deployment、StatefulSet、DaemonSet 的生命周期,namespace controller 管理 Namespace 资源。性能
etcd 负责保存 Kubernetes Cluster 的配置信息和各类资源的状态信息。当数据发生变化时,etcd 会快速地通知 Kubernetes 相关组件。spa
Pod 要可以相互通讯,Kubernetes Cluster 必须部署 Pod 网络,flannel 是其中一个可选方案。server