Kubernetes 容器编排工具架构和组件介绍

2019-03-06 0 By admin

Kubernetes 遵循微服务架构理论,整个系统划分出各个功能独立的组件。
Kubernetes 属于主从分布式架构,节点在角色上分为Master节点和Node节点。

一、ETCD 服务

etcd是Kubernetes提供默认的存储系统,保存所有集群数据,使用时需要为etcd数据提供备份计划。
Kubernetes 使用etcd作为存储中间件,etcd是一个高可用键值存储系统,通过Raft一致性算法处理日志复制以保证强一致性。Kubernetes 使用Etcd作为系统的配置存储中心,Kubernetes 中的重要数据都是持久化在etcd中,使得Kubernetes架构的各个组件属于无状态。
1、key/value格式的存储服务。存储集群信息,节点信息,组件信息等数据。
2、支持协调功能,提供主节点选举能力。

二、Master 组件

Kubernetes Master 可以在集群中任何节点上运行;作为控制节点,调度和管理整个系统,包括以下组件。

2.1、Kubernetes API Server

作为kubernetes系统的入口,封装了核心对象的增删改查操作,以RESTful接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到etcd中。
1、提供集群管理的REST API 接口,包含认证授权、数据校验、集群状态。
2、其他模块间的数据交互和通信的枢纽(只有API Server可以直接操作etcd)。

2.2、Kubernetes Scheduler 调度器

负责集群的资源调度,为新建的pod分配机器。这部分工作分出来变成一个组件,意味着可以很方便地替换成其他的调度器。

2.3、kubernetes Controller Manager

负责执行各种控制器。它们是集群中处理常规任务的后台线程。逻辑上,每个控制器是一个单独的进程,但为了降低复杂性,它们都被编译成单个二进制文件,并在单个进程中运行。
这些控制器包括:
1、Replication Controller:定期关联replication Controller和pod,保证replication Controller定义的副本数量与实际运行pod的数量总是一致的。
2、节点控制器(Node Controller):管理维护Node,定期检查Node的健康状态,标识出失效的Node。
3、Namespace Controller: 管理维护Namespace,定期清理无效的Namespace,包括Namesapce下的API对象,比如Pod、Service等。
4、Service Controller:管理维护Service,提供负载以及服务代理。
5、端点控制器(Endpoints Controller):管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints。
6、Service Account Controller:管理维护Service Account,为每个Namespace创建默认的Service Account,同时为Service Account创建Service Account Secret。
7、Persistent Volume Controller:管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定,为释放的Persistent Volume执行清理回收。
8、Daemon Set Controller:管理维护Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod。
9、Deployment Controller:管理维护Deployment,关联Deployment和Replication Controller,保证运行指定数量的Pod。当Deployment更新时,控制实现Replication Controller和 Pod的更新。
10、Job Controller:管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目
11、 Pod Autoscaler Controller:实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。

2.4、cloud-controller-manager

云控制器管理器负责与底层云提供商的平台交互。云控制器管理器是Kubernetes版本1.6中引入的,目前还是Alpha的功能。
云控制器管理器仅运行云提供商特定的(controller loops)控制器循环。可以通过将–cloud-providerflag设置为external启动kube-controller-manager ,来禁用控制器循环。
cloud-controller-manager 具体功能:节点(Node)控制器、路由(Route)控制器、Service控制器、卷(Volume)控制器。

2.5、插件 addons

插件(addon)是实现集群pod和Services功能的。Pod由Deployments,ReplicationController等进行管理。Namespace 插件对象是在kube-system Namespace中创建。
6.1、DNS
虽然不严格要求使用插件,但Kubernetes集群都应该具有集群 DNS。
群集 DNS是一个DNS服务器,能够为 Kubernetes services提供 DNS记录。
由Kubernetes启动的容器自动将这个DNS服务器包含在他们的DNS searches中。
6.2、用户界面
kube-ui提供集群状态基础信息查看。
6.3、容器资源监测
容器资源监控提供一个UI浏览监控数据。
6.4、Cluster-level Logging
Cluster-level logging,负责保存容器日志,搜索/查看日志。

三、节点(Node)组件

Kubernetes node 是运行节点,用于运行管理业务的容器。包括以下组件:

3.1、kubelet

负责管控容器,Kubelet会从Kubernetes API Server接收Pod的创建请求,启动和停止容器,监控容器运行状态并汇报给Kubernetes API Server。

3.2、kube-proxy

负责为Pod创建代理服务,Kubernetes Proxy会从Kubernetes API Server获取所有的Service信息,并根据Service的信息创建代理服务,实现Service到Pod的请求路由和转发,从而实现Kubernetes层级的虚拟转发网络。

3.3、docker

kubernetes node 是容器运行节点,需要运行Docker 服务。

3.4、RKT

rkt运行容器,作为docker工具的替代方案。

3.5、supervisord

supervisord是一个轻量级的监控系统,用于保障kubelet和docker运行。

3.6、fluentd

fluentd是一个守护进程,可提供cluster-level logging。