zoukankan      html  css  js  c++  java
  • 一、kubernetes的组件说明

    一、kubernetes构架图

    二、kuberents组件说明

    1、etcd

    etcd 是兼具一致性和高可用性的分布式键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库,比如Pod、Service、IP等对象信息。

    etcd的集群配置条件

    1)运行的 etcd 集群个数成员为奇数。
    2)etcd 是一个 leader-based 分布式系统。确保主节点定期向所有从节点发送心跳,以保持集群稳定。
    3)确保不发生资源不足。
        集群的性能和稳定性对网络和磁盘 IO 非常敏感。任何资源匮乏都会导致心跳超时,从而导致集群的不稳定。不稳定的情况表明没有选出任何主节点。在这种情况下,集群不能对其当前状态进行任何更改,这意味着不能调度新的 pod。
    4)保持稳定的 etcd 集群对 Kubernetes 集群的稳定性至关重要。因此,请在专用机器或隔离环境上运行 etcd 集群,以满足所需资源需求。
    5)在生产中运行的 etcd 的最低推荐版本是 3.2.10+。
    

      

    2、master节点

    2.1 kube-apiserver

    Kubernetes API,集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。整个kubernetes集群的大脑。

    2.2 kube-controller-manager

    Kubernetes 控制器管理器是一个守护进程,内嵌随 Kubernetes 一起发布的核心控制回路。 在机器人和自动化的应用中,控制回路是一个永不休止的循环,用于调节系统状态。 在 Kubernetes 中,每个控制器是一个控制回路,通过 API 服务器监视集群的共享状态, 并尝试进行更改以将当前状态转为期望状态。 目前,Kubernetes 自带的控制器例子包括副本控制器、节点控制器、命名空间控制器和服务账号控制器等。

    处理集群中常规后台任务,一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。

    控制器的类别

    - Replication Controller
    - Node controller
    - ResourceQuota Controller
    - Namespace Controller
    - ServiceAccount Controller
    - Token Controller
    - Service Controller
    - Endpoints Controller
    

      

    2.3 kube-scheduler

    Kubernetes 调度器是一个控制面进程,负责将 Pods 指派到节点上。 调度器基于约束和可用资源为调度队列中每个 Pod 确定其可合法放置的节点。 调度器之后对所有合法的节点进行排序,将 Pod 绑定到一个合适的节点。 在同一个集群中可以使用多个不同的调度器。

    根据调度算法为新创建的Pod选择一个Node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同的节点上。

    2.4 kubelet

    运行在每个节点上的主要的“节点代理”,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。

    2.5 kubectl

    命令行接口,用于对 Kubernetes 集群运行命令管理 https://kubernetes.io/zh/docs/reference/kubectl/

    3、node节点

    3.1 kubelet

    运行在每个节点上的主要的“节点代理”,管理本机运行容器的生命周期,比如创建容器、Pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个Pod转换成一组容器。

    3.2 kube-proxy

    在Node节点上实现Pod网络代理,维护网络规则和四层负载均衡工作。就是维护节点中的iptables或者ipvs规则。

    4、docker或rocket

    容器引擎,运行容器。

    三、创建一个pod的旅程

     

    1、kubectl run/apply创建一个pod,向apiserver发起请求
    2、apiserver会将请求的配置写到etcd
    3、etcd响应处理结果给apiserver,apiserver响应处理结果给kubectl
    4、scheduler收到需要创建pod的请求,根据自己调度算法选择一个合适的节点分配,并将结果反馈给apiserver
    5、kubelet收到需要创建我这个节点的pod,再调用容器引擎创建容器,容器引擎将结果反馈给kubelet,kubelet汇总pod状态反馈apiserver
    
    少了controller-manager和kube-proxy组件。
    controller-manager创建工作负载控制器才会用到。该组件流程在etcd和scheduler之间。
    kube-proxy创建service才用到。该组件流程在kubelet和docker之间。
    

      

    1. 用户准备一个资源文件(记录了业务应用的名称、镜像地址等信息),通过调用APIServer执行创建Pod
    2. APIServer收到用户的Pod创建请求,将Pod信息写入到etcd中
    3. 调度器通过list-watch的方式,发现有新的pod数据,但是这个pod还没有绑定到某一个节点中
    4. 调度器通过调度算法,计算出最适合该pod运行的节点,并调用APIServer,把信息更新到etcd中
    5. kubelet同样通过list-watch方式,发现有新的pod调度到本机的节点了,因此调用容器运行时,去根据pod的描述信息,拉取镜像,启动容器,同时生成事件信息
    6. 同时,把容器的信息、事件及状态也通过APIServer写入到etcd中
    

      

     

    I have a dream so I study hard!!!
  • 相关阅读:
    2018-2019-2 网络对抗技术 20165324 Exp7:网络欺诈防范
    2018-2019-2 网络对抗技术 20165324 Exp6:信息收集与漏洞扫描
    2018-2019-2 网络对抗技术 20165324 Exp5:MSF基础应用
    2018-2019-2 网络对抗技术 20165324 Exp4:恶意代码分析
    2018-2019-2 网络对抗技术 20165324 Exp3:免杀原理与实践
    2018-2019-2 网络对抗技术 20165324 Exp2: 后门原理与实践
    2018-2019-2 网络对抗技术 20165324 Exp1:PC平台逆向破解
    20165324 《网络对抗技术》week1 Kali的安装与配置
    2018-2019-2 20165334《网络对抗技术》 期末免考项目:关于CBC Padding Oracle Attack 的研究及渗透测试 最终版
    2018-2019-2 20165334《网络对抗技术》Exp9 Web安全基础
  • 原文地址:https://www.cnblogs.com/yaokaka/p/15304204.html
Copyright © 2011-2022 走看看