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节点

  1.  ApiServer:集群的统一入口,各组件协调者,以HTTP API提供接口服务,所有对象资源的增删改查和监听操作都交给 APIServer处理后再交给Etcd存储
  2. controllers:
    1. replication Controller :

      副本控制器 --- 实现副本数量和预期设定的数量永远保持一致。

      例如: 构建集群 6台服务器集群  --- k8s部署:预期设定数量=6  k8s能永远保证副本数据量一致等于6.

    2. Service Controller:

      管理维护Service(虚拟IP),提供负载以及服务代理。

    3. EndPoints Controller:

      管理维护Endpoints,关联Service和Pod

    4. Persistent Volume Controller :

      持久化数据卷控制器

      有状态服务部署控制器

    5. Daemon Set Controller:

      让每一个node节点都运行相同的服务

    6. Deployment Controller :

      无状态服务部署的控制器(项目)

  3. scheduler

    Scheduler就是k8s的调度器。

创建pod的流程:

   

创建pod的流程:

1kubeclt 发送创建的pod的指令,此时这个指令被apiserver拦截,把创建的pod存储在etcd

2schduler 发起调用请求,此时这个指令被apiserver拦截,获取etcd podQueue.NodeList

调度算法:

1)预选调度

2)优选策略

 选择出一个合适的node节点

3、把选择合适的node,pod存储在etcd

4node节点上有一个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: 日志,收集日志

下一篇我们介绍  架构原理&核心组件原理

原文地址:https://www.cnblogs.com/vindycxy/p/14025800.html