美文网首页
Kubernetes 核心组件

Kubernetes 核心组件

作者: bern85 | 来源:发表于2019-05-22 15:31 被阅读0次

    本文介绍了Kubernetes集群所需的各种二进制组件。

    Master 组件

    Master组件提供集群的管理控制中心。Master 组件提供全局决策(比如调度),以及检测(比如健康检查)和响应集群时间(比如副本不够时,的调用replication controller启动新的pod
    Master组件可以在集群中任何节点上运行。但是为了简单起见,通常在一台VM/机器上启动所有Master组件,并且不会在此VM/机器上运行用户容器。请参考 构建高可用群集以来构建multi-master-VM。

    kube-apiserver

    kube-apiserver用于暴露Kubernetes API。任何的资源请求/调用操作都是通过kube-apiserver提供的接口进行。请参阅构建高可用群集
    kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能

    • 提供集群管理的 REST API 接口,包括认证授权、数据校验以及集群状态变更等
    • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过 API Server 查询或修改数据,只有 API Server 才直接操作 etcd)


      kube-apiserver.png

    kube-scheduler

    kube-scheduler 监视新创建没有分配到Node的Pod,为Pod选择一个Node。
    调度器需要充分考虑诸多的因素:

    • 公平调度
    • 资源高效利用
    • QoS
    • affinity 和 anti-affinity
    • 数据本地化(data locality)
    • 内部负载干扰(inter-workload interference)
    • deadlines

    kube-controller-manager

    kube-controller-manager运行管理控制器,它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。
    kube-controller-manager 由一系列的控制器组成:

    • Replication Controller
    • Node Controller
    • CronJob Controller
    • Daemon Controller
    • Deployment Controller
    • Endpoint Controller
    • Garbage Collector
    • Namespace Controller
    • Job Controller
    • Pod AutoScaler
    • RelicaSet
    • Service Controller
    • ServiceAccount Controller
    • StatefulSet Controller
    • Volume Controller
    • Resource quota Controller

    cloud-controller-manager

    云控制器管理器负责与底层云提供商的平台交互。云控制器管理器是Kubernetes版本1.6中引入的.我们大部分情况都是在自己公司的内网部署kubernetes集群.所以不做过多的描述.
    云控制器管理器仅运行云提供商特定的(controller loops)控制器循环。可以通过将--cloud-provider flag设置为external启动kube-controller-manager ,来禁用控制器循环。
    cloud-controller-manager 具体功能:

    • 节点(Node)控制器
    • 路由(Route)控制器
    • Service控制器
    • 卷(Volume)控制器

    etcd

    etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。需要进一步深入了解, 参考 etcd documentation.

    Node组件

    节点组件运行在Node,提供Kubernetes运行时环境,以及维护Pod。

    kubelet

    在集群中的每个Node上运行的代理。 它确保容器在pod中运行。
    kubelet提供的一系列PodSpecs集合规范,并确保这些PodSpecs中描述的容器运行正常。 kubelet不管理非由Kubernetes创建的容器.
    kubelet是主要的节点代理,它会监视已分配给节点的pod,具体功能:

    • 安装Pod所需的volume。
    • 下载Pod的Secrets。
    • Pod中运行的 docker(或experimentally,rkt)容器。
    • 定期执行容器健康检查。
    • Reports the status of the pod back to the rest of the system, by creating a mirror pod if necessary.
    • Reports the status of the node back to the rest of the system.


      kubelet.png

    kube-proxy

    kube-proxy通过在主机上维护网络规则并执行连接转发来实现Kubernetes服务抽象。

    kube-proxy.png

    容器运行时

    容器运行时是负责运行容器的软件。Kubernetes 支持多种容器运行时: Docker, containerd, cri-o, rktlet 以及任何实现了Kubernetes CRI (Container Runtime Interface)的容器运行时.

    插件 Addons

    插件(Addon)是实现集群pod和Services功能的 。Pod由Deployments,ReplicationController等进行管理。Namespace 插件对象是在kube-system Namespace中创建。
    下面有一些常用的插件描述, 有关可用插件的扩展列表,请参阅Addons.

    DNS

    虽然不严格要求使用插件,但Kubernetes集群都应该具有 cluster DNS
    群集 DNS是一个DNS服务器,能够为 Kubernetes services提供 DNS记录。
    由Kubernetes启动的容器自动将这个DNS服务器包含在他们的DNS searches中。

    Web UI (Dashboard)

    Dashboard 是Kubernetes集群的基于Web的通用UI。 它允许用户管理和解决群集中运行的应用程序以及群集本身。

    容器资源监测

    Container Resource Monitoring记录基于时间序列的有关资源监控,数据会存储于一个时间序列数据库,并提供浏览该数据的UI。

    cadvisor.png

    Cluster-level Logging

    Cluster-level logging 负责保存容器日志,搜索/查看日志。

    logging-with-node-agent.png

    相关文章

      网友评论

          本文标题:Kubernetes 核心组件

          本文链接:https://www.haomeiwen.com/subject/uvojzqtx.html