Kubernetes 核心组件

本文介绍了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)


    Kubernetes 核心组件_第1张图片
    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.


    Kubernetes 核心组件_第2张图片
    kubelet.png

kube-proxy

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

Kubernetes 核心组件_第3张图片
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。

Kubernetes 核心组件_第4张图片
cadvisor.png

Cluster-level Logging

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

Kubernetes 核心组件_第5张图片
logging-with-node-agent.png

你可能感兴趣的:(Kubernetes 核心组件)