kubernetes(一篇)主要组件介绍,pod创建流程
kubernetes(一篇)主要组件介绍,pod创建流程
kubernetes:
采用了Pod和Label这样的概念把容器组合成一个个的互相存在依赖关系的逻辑单元。相关容器被组合成Pod后被共同部署和调度,形成服务(Service)
可以看到kubernetes包含master节点和node节点
1、master节点:负责调度,存储集群状态(服务注册发现),提供统一API入口,一个master对应一群node节点。
2、node节点: node节点存储pod(pod内部封装容器),一个node节点理论上可以存储无数个pod,但是受限于硬件资源限制,同时受限于pod内部服务运行所占用的资源。
发送请求: kubectl 客户端指令 ,浏览器(可视化方式:rancher,dashboard..)
Master节点: scheduler 调度器 ,负责计算该把pod调度到哪一个node节点
Controllers : 控制器 ,负责维护node节点资源对象(deployment,rs,pod)
apiServer : 网关,所有请求都必须要经过网关
etcd: 服务发现,注册,集群状态信息,调度信息
node节点: 每一个node节点都运行一个kubelet进程,此进程负责本机服务的pod的创建维护。
Regitry: 镜像仓库—阿里镜像仓库—harbor构建一套自己的私有仓库
Master节点
- ApiServer:集群的统一入口,各组件协调者,以HTTP API提供接口服务,所有对象资源的增删改查和监听操作都交给 APIServer处理后再交给Etcd存储
- controllers:
-
replication Controller :
副本控制器 --- 实现副本数量和预期设定的数量永远保持一致。
例如: 构建集群 : 6台服务器集群 --- k8s部署:预期设定数量=6 ,k8s能永远保证副本数据量一致等于6.
-
Service Controller:
管理维护Service(虚拟IP),提供负载以及服务代理。
-
EndPoints Controller:
管理维护Endpoints,关联Service和Pod
-
Persistent Volume Controller :
持久化数据卷控制器
有状态服务部署控制器
-
Daemon Set Controller:
让每一个node节点都运行相同的服务
-
Deployment Controller :
无状态服务部署的控制器(项目)
-
- scheduler
Scheduler就是k8s的调度器。
创建pod的流程:
创建pod的流程:
1、kubeclt 发送创建的pod的指令,此时这个指令被apiserver拦截,把创建的pod存储在etcd
2、schduler 发起调用请求,此时这个指令被apiserver拦截,获取etcd中 podQueue.NodeList
调度算法:
1)预选调度
2)优选策略
选择出一个合适的node节点
3、把选择合适的node,pod存储在etcd
4、node节点上有一个kubelet进程,发送请求获取pod,node对应创建资源
5、此时如果kubelet发现pod是本机节点需要创建的,kubelet就开始创建pod
node节点
Pod: 是k8s管理的最小的基本单元。Pod内部可以运行一个或者多个容器。一般情况下,pod内部只允许一个容器运行,便于管理。
Docker: docker引擎,pod内部运行的都是容器,这个容器是由docker引擎创建的,docker引擎是node节点基础服务。
Kubelet: node节点代理,kubelet代理master节点请求,在本地node节点执行;
Kube-proxy: 网络代理 ,主要是用来生成网络规则,创建访问路由,创建service网络访问规则,负载均衡规则。
Fluentd: 日志,收集日志
下一篇我们介绍 架构原理&核心组件原理