这篇文章将为大家详细讲解有关kubernetes架构设计是怎么样的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一.kubernetes集群包含有节点代理kubelet和master组件(APIs, Scheduler, ect.)。一切都基于分布式的存储系统。
二.kubernetes集群架构图:
解析:
1.在这张系统架构图中,把服务分为运行在工作节点上的服务和组成集群级别控制板的服务。
2.kubernetes节点有运行应用容器必备的服务,而这些都是受master控制的。
3.docker是每个节点运行的基础,docker负责所有具体的镜像的下载和容器的运行。
4.kubernetes主要由以下几个核心组件组成:
a.etcd保存了整个集群的状态;
b.apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
c.controller manager负责维护集群的状态,如:故障检测、自动扩展、滚动更新等;
d.scheduler负责资源调度,按照预定的调度策略将Pod调度到相应的机器上;
e.kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
f.Container runtime负责镜像管理及Pod和容器的真正运行;
g.kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;
5.kubernetes的相关推荐的附加组件:
a.kube-dns负责为整个集群提供DNS服务;
b.Ingress-controller为服务提供外网入口;
c.Heapter提供资源监控;
d.Dashboard提供GUI;
e.Federation提供跨可用区的集群;
f.Fluentd-elasticsearch提供集群日志采集、存储与查询
三、分层架构
kubernetes的设计理念和功能其实就是一个类似linux的分层架构,如下图:
1.核心层:kubernetes最核心的功能,对外提供API构建高层应用,对内提供插件式应用执行环境.
2.应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等).
3.管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态provision等),以及策略管理(RBAC、Quota、PSP、Network policy etc.).
4.接口层:kubelet命令行工具、客户端SDK、集群.
5.生态系统:在接口层之上的庞大容器集群管理调度生态系统,可以划分为两个范畴:
a.kubenetes外部:日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
b.kubenetes内部:CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
四、kubelet
kubelet负责管理Pods和它们上面的容器、images镜像、volumes、etc.
五、kube-proxy
每个节点也运行一个简单的网络代理和负载均衡。服务端点目前 是通过DNS或者环境变量,这些变量是用由服务代理所管理的端口来解析的。
六、kubenetes控制面板
kubenetes控制面板可以分为多个部分。目前它们都运行在一个master节点,为了达到高可用性,这需要改变,由不同部分一起协作提供一个统一的关于集群的视图。
七、etcd
所有master的持续状态都存在etcd的一个实例中。这可以很好地存储配置数据。因为有watch的支持,各部件协调中的改变都可以很快被察觉。
八、kubernetes API Server
API服务提供Kubernetes API的服务。这个服务试图通过把所有或者大部分的业务逻辑放到不止两只的部件中从而使其具有CRUD特性。它主要处理REST操作,在etcd中验证更新这些对象并最终存储。
九、scheduler
调度器把未调度的pod通过binding api绑定到节点上。调度器是可插拔可,并且支持多集群的调度,未来可能支持用户自定义的调度器。
十、kubenetes控制管理服务器
所有其它的集群级别的功能目前都是由控制管理器负责。如,端点对象是被端点控制器来更新。这些最终可分隔成不同的部件来让它们独自的可插拔。
replication controller是一种建立于简单的podAPI之上的一种机制。它最终将变成一种通用的插件机制。
关于“kubernetes架构设计是怎么样的”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。