一.kubernetes集群包含有节点代理kubelet和master组件(APIs, Scheduler, ect.)。一切都基于分布式的存储系统。html
二.kubernetes集群架构图:linux
解析:git
1.在这张系统架构图中,把服务分为运行在工做节点上的服务和组成集群级别控制板的服务。github
2.kubernetes节点有运行应用容器必备的服务,而这些都是受master控制的。docker
3.docker是每一个节点运行的基础,docker负责全部具体的镜像的下载和容器的运行。api
4.kubernetes主要由如下几个核心组件组成:服务器
a.etcd保存了整个集群的状态;网络
b.apiserver提供了资源操做的惟一入口,并提供认证、受权、访问控制、API注册和发现等机制;架构
c.controller manager负责维护集群的状态,如:故障检测、自动扩展、滚动更新等;负载均衡
d.scheduler负责资源调度,按照预约的调度策略将Pod调度到相应的机器上;
e.kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
f.Container runtime负责镜像管理及Pod和容器的真正运行;
g.kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
5.kubernetes的相关推荐的附加组件:
a.kube-dns负责为整个集群提供DNS服务;
b.Ingress-controller为服务提供外网入口;
c.Heapter提供资源监控;
d.Dashboard提供GUI;
e.Federation提供跨可用区的集群;
f.Fluentd-elasticsearch提供集群日志采集、存储与查询
3、分层架构
kubernetes的设计理念和功能其实就是一个相似linux的分层架构,以下图:
1.核心层:kubernetes最核心的功能,对外提供API构建高层应用,对内提供插件式应用执行环境.
2.应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等).
3.管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态provision等),以及策略管理(RBAC、Quota、PSP、Network policy etc.).
4.接口层:kubelet命令行工具、客户端SDK、集群.
5.生态系统:在接口层之上的庞大容器集群管理调度生态系统,能够划分为两个范畴:
a.kubenetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
b.kubenetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
4、kubelet
kubelet负责管理Pods和它们上面的容器、images镜像、volumes、etc.
5、kube-proxy
每一个节点也运行一个简单的网络代理和负载均衡。服务端点目前 是经过DNS或者环境变量,这些变量是用由服务代理所管理的端口来解析的。
6、kubenetes控制面板
kubenetes控制面板能够分为多个部分。目前它们都运行在一个master节点,为了达到高可用性,这须要改变,由不一样部分一块儿协做提供一个统一的关于集群的视图。
7、etcd
全部master的持续状态都存在etcd的一个实例中。这能够很好地存储配置数据。由于有watch的支持,各部件协调中的改变均可以很快被察觉。
8、kubernetes API Server
API服务提供Kubernetes API的服务。这个服务试图经过把全部或者大部分的业务逻辑放到不止两只的部件中从而使其具备CRUD特性。它主要处理REST操做,在etcd中验证更新这些对象并最终存储。
9、scheduler
调度器把未调度的pod经过binding api绑定到节点上。调度器是可插拔可,而且支持多集群的调度,将来可能支持用户自定义的调度器。
10、kubenetes控制管理服务器
全部其它的集群级别的功能目前都是由控制管理器负责。如,端点对象是被端点控制器来更新。这些最终可分隔成不一样的部件来让它们独自的可插拔。
replication controller是一种创建于简单的podAPI之上的一种机制。它最终将变成一种通用的插件机制。
参考:
https://github.com/kubernetes/kubernetes/blob/release-1.2/docs/design/architecture.md
https://feisky.gitbooks.io/kubernetes/architecture/architecture.html