标签:contain 特性 高级 地址 vol 接受 logstash 访问控制 ber
??Kubernetes是Google于2014年开源的一个容器编排工具,使用Google自己的go语言编写,由Borg衍生而来。Borg是Google内部已经运行近十年的容器编排工具,由于docker的横空出世,导致Google原本准备作为秘密武器的容器技术胎死腹中。计划被打乱,容器层面已经痛失良机,慢人一步,只有在编排工具层面下手了,Google当机立断,基于Brog的逻辑编写了Kubernetes,开源并捐给了CNCF(云远程计算基金会),由于Google近十年的使用经验,所以Kubernetes一出世就横扫了其它编排工具,时至今日,地位依然稳固。
??Kubernetes源于希腊语,有“舵”或“飞行员”的意思。k8s,是由Kubernetes中间的八个字母缩写为数字8得来的。Google采用这个名字的深意就是:既然你docker把自己定位成驮着集装箱在大海上遨游的鲸鱼,那么我就以Kubernetes掌舵大航海时代的话语权,鲸鱼必须按照我设定的路线巡游。
??Kubernetes的一大亮点就是自动化,在Kubernetes的解决方案中,一个服务可以自我扩展、自我诊断,并且容易升级,在收到服务扩容的请求后,Kubernetes会触发调度流程,最终在选定的目标节点上启动相应数量的服务实例副本,这些实例在启动成功后会自动加入负载均衡器中并生效,Kubernetes会定时巡查每个服务的所有实例的可用性,确保服务实例的数量与预期的数量一致,当它发现某个实例不可用时,会自动重启或在其它节点上重建该实例,整个过程无需额外的人工操作。 ——来自《Kubernetes权威指南》
??
??k8s的api是一种Restful风格的API,在这种设计风格下,数据也好、服务也罢,一切都可以称之为资源(resources)。在k8s中将这些资源实例化后称之为对象。比如Pod在没有使用之前就是一个抽象的概念,可以称之为资源,你指定为Pod创建了容器之后,就可以称之为对象。
Label:标签用于区分对象,使用标签引用对象而不再是IP地址。Label以键值对的形式存在,每个对象可以有多个标签,通过标签可以关联对象。
Volume:数据卷,共享Pod中使用的数据。
??
??Kubernetes的结构略微复杂,我会从大的层面一点点往下拆分叙述。整个Kubernetes集群大致划分为四部分:Clients,Master,Node,Registry。k8s本身其实就Master和Node两部分。
??Master节点有四个核心组件,每一个组件都是单独的服务,下面组件中只有etcd不是k8s自己提供,它只是k8s的主要组成部分,etcd也是CNCF的成员。
kube-apiserver:是整个k8s集群对外提供服务的唯一接口,它提供请求过滤、访问控制等机制,是各组件的协调者,此API是声明式的(简单说就是用户想要什么规格的容器直接跟kube-apiserver说就行了,过程不用你管)。用户的合法请求会被API放行,然后存入etcd中。
etcd:是一个键值(key:value)格式的存储系统,保存应用程序配置信息。
举例:用户发送新建Nginx容器的请求给kube-apiserver,kube-apiserver识别其合法后以键值对的方式存入etcd,kube-scheduler和kube-controller通过watch kube-apiserver知道此需求,然后kube-scheduler负责资源分配并决定容器运行在哪个Node上,至于运行时所需的镜像及运行的健康状态的维护都由kube-controller来负责,kube-controller会循环将当前容器的状态与watch到的用户预期的需求做对比,看是否匹配。
??Node节点负责运行容器。下面的组件中docker并不是k8s的自己的组件。k8s支持多种容器引擎,比如Core OS的rkt,只不过k8s标准支持的容器是docker,其它容器引擎想要与k8s配合使用,需要接入到k8s的cri接口 。因为不同容器技术的变动速度是不一样,k8s只能以一个相对比较权威的容器技术来作为标准,与之完美兼容。
??除了上面Master和Node的几个核心组件,还有下面一些扩展插件,其中有些插件是非必须的。
??
下面由我来装个13,好紧张,嘤嘤嘤~~
??照现在Kubernetes的火热程度来看,以后的应用程序不能只仅仅针对于单机环境(Linux或者Windows)写API,可能也要考虑Kubernetes的API接口。Kubernetes是一个开放的开发平台,不局限于任何一种编程语言和接口,所以无论是Java、Go、C++还是Python编写的程序,都可以无缝对接到Kubernetes的Service上。
??
??Kubernetes的概念还是蛮多的,不建议是一脑门扎到概念上,尽量结合实践去理解,可以多看看官网,部分页面是有中文支持的。在下写的时候脑门也是嗡嗡的,可能会有不完善或者偏差的地方,未完待续吧......
?
?
?
?
标签:contain 特性 高级 地址 vol 接受 logstash 访问控制 ber
原文地址:https://www.cnblogs.com/ccbloom/p/11311286.html