Kubernetes集群各模块通讯方式。 html
Kubernetes集群各模块,主要分为客户端,Master
节点,Node
节点,etcd
集群。 git
Kubernetes关键字程序员
Master(主节点)
: 控制Kubernetes节点的机器,也是建立做业任务的地方。github
Node(节点)
: 这些机器在Kubernetes主节点的控制下执行被分配的任务。在Node上运行的服务进程包括docker daemon
,Kubelet
和 Kube-Proxy
。算法
Pod
: 由一个或多个容器构成的集合,做为一个总体被部署到一个单一节点。同一个 pod 中的容器共享 IP 地址、进程间通信(IPC)、主机名以及其它资源(如内存)。Pod 将底层容器的网络和存储抽象出来,使得集群内的容器迁移更为便捷。Kubernetes的其它组件帮助你对 pod 进行负载均衡,以保证有合适数量的容器支撑你的工做负载。Pod的生命周期是经过Replication Controller
来管理的。在整个过程当中,Pod处于4种状态之一:Pending, Running, Succeeded, Failed。docker
Labels
: Service经过Label找到Pod组后端
Replication controller(复制控制器)
: 控制一个 pod 在集群上运行的实例数量。确保任什么时候候Kubernetes集群中有指定数量的Pod副本在运行, 若是少于指定数量的Pod副本,Replication Controller会启动新的Pod,反之会杀死多余的以保证数量不变。api
Service(服务)
: 将服务内容与具体的pod分离。Kubernetes服务代理负责自动将服务请求分发到正确的pod处,无论pod移动到集群中的什么位置,甚至能够被替换掉。Service是定义一系列Pod以及访问这些Pod的策略的一层抽象。 缓存
Kubelet
: 这个守护进程从master或者其余地方获取本节点须要达到什么状态, 运行在各个工做节点上,负责获取容器列表,运行的副本数量, 网络或者存储如何配置,保证被声明的容器已经启动而且正常运行。网络
kubectl
: 这是 Kubernetes 的命令行配置工具。
kube-proxy
: 实现集群网络服务负载均衡
Volume(存储卷)
: Volume是Pod中可以被多个容器访问的共享目录。
Namespace(命名空间)
: 经过将系统内部的对象“分配”到不一样的Namespace中,造成逻辑上的不一样分组,便于在共享使用整个集群的资源同时还能分别管理。
Annotation(注解)
:与Label相似,但Label定义的是对象的元数据,而Annotation则是用户任意定义的“附加”信息。
第1、apiserver
[资源操做入口]
做为kubernetes系统的入口,封装了核心对象的增删改查操做,以RESTFul接口方式提供给外部客户和内部组件调用。 它维护的REST对象将持久化到etcd(一个分布式强一致性的key/value存储)。
第2、scheduler
[集群分发调度器]
集群调度器,负责集群的资源调度,为新建的Pod分配机器。
1.scheduler收集和分析当前Kubernetes集群中全部Node节点的资源(内存、CPU)负载状况,而后依此分发新建的Pod到Kubernetes集群中可用的节点。
2.实时监测Kubernetes集群中未分发和已分发的全部运行的Pod。
3.scheduler也监测Node节点信息,因为会频繁查找Node节点,Scheduler会缓存一份最新的信息在本地。
4.scheduler在分发Pod到指定的Node节点后,会把Pod相关的信息Binding
写回API Server
第3、controller-manager
[内部管理控制中心]
负责执行各类控制器,目前有两类:
(1) endpoint-controller
:按期关联service和Pod(关联信息由endpoint对象维护),保证service到Pod的映射老是最新的。
(2) replication-controller
:按期关联replicationController和Pod,保证replicationController定义的复制数量与实际运行Pod的数量老是一致的。
第1、kubelet
[节点上的Pod管家]:
1.负责Node节点上pod的建立、修改、监控、删除等全生命周期的管理
2.定时上报本Node的状态信息给API Server。
3.kubelet是Master和Node之间的桥梁,接收Master分配给它的commands和work,经过kube-apiserver间接与Etcd集群交互,读取配置信息。
第1、proxy
[负载均衡、路由转发]:
1.Proxy是为了解决外部网络可以访问跨机器集群中容器提供的应用服务而设计的,运行在每一个Node上。 Proxy提供TCP/UDP sockets
的proxy,每建立一种Service,Proxy主要从etcd获取Services和Endpoints的配置信息),而后根据配置信息在Node上启动一个Proxy的进程并监听相应的服务端口,当外部请求发生时,Proxy会根据Load Balancer
将请求分发到后端正确的容器处理。
2.Proxy不但解决了同一主宿机相同服务端口冲突的问题,还提供了Service转发服务端口对外提供服务的能力,Proxy后端使用了随机、轮循负载均衡算法。
1.Kubecfg将特定的请求,好比建立Pod,发送给Kubernetes Client。
2.Kubernetes Client将请求发送给API server。
3.API Server根据请求的类型,好比建立Pod时storage类型是pods,而后依此选择何种REST Storage API对请求做出处理。
4.REST Storage API对的请求做相应的处理。
5.将处理的结果存入高可用键值存储系统Etcd中。
6.在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Node信息。
7.依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。
一个探讨技术,金融,赚钱
的小圈子,为你提供最有味道
的内容,日日更新!