Kubernetes学习(预)之5分钟了解docker与K8S
起源2010年几个搞IT的年轻人在美国旧金山成立了一个名为“dotCloud”的公司用于提供基于PaaS的云计算服务,即与LXC相关的容器技术。后来改公司将其的容器技术进行了简化和标准化,命名为Docker。但是在当时并没有引起注意,并且在当时激烈的竞争下,这家小公司很快就撑不下去了。转机正当公司面临倒闭时,他们灵光一现决定开源,就是将其源代码开放出来供所有人参与设计和修改。2013年3月,...
起源
2010年几个搞IT的年轻人在美国旧金山成立了一个名为“dotCloud”的公司用于提供基于PaaS的云计算服务,即与LXC相关的容器技术。后来改公司将其的容器技术进行了简化和标准化,命名为Docker。但是在当时并没有引起注意,并且在当时激烈的竞争下,这家小公司很快就撑不下去了。
转机
正当公司面临倒闭时,他们灵光一现决定开源,就是将其源代码开放出来供所有人参与设计和修改。2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。令人意想不到的是,开源之后的docker因其众多优点迅速吸引了大批工程师的关注,开源当月0.1版本发布,此后每个月都会发布一个版本,到14年docker1.0版本正式发布。之后众多互联网公司加入,例如谷歌、微软、亚马逊、VMware等。 这或许就是开源的魅力。
docker为什么这么火?
在docker出现之前,业界认可的是虚拟机,最火的当属VMWare和OpenStack。虚拟机就是在你的电脑里面模拟出很多个虚拟的电脑,就好像你拥有很多台电脑一样,然后每台电脑之间的运行互不干扰。docker与虚拟机有什么区别?最主要的区别就是docker更加的轻量级,说白了就是需要消耗的资源少。相信用过虚拟机的都知道,虚拟机除了需要付费之外就是贼慢。容器是基于进程级别隔离的、秒级启动、镜像最大是MB级别的等。
docker到底是什么?
docker不是容器而是创建容器的工具,是应用容器的引擎。
其有两句口号,一是“Build,Ship and Run”,就是搭建发送和运行,怎么理解呐,就好比你来到一片空地想构建一个房子,那么你需要买材料,请工人,然后建造,如果有一天你不想在这里住了,想到另一个地方,那么你需要在新的地方买材料、请工人,然后建造。但是现在有了docker,他可以将你原来的房子浓缩成一个小“镜像”,这样你可以背着他到处走,在想要住的地方,把他取出来就可以了。
第二句是“Build once, Run anywhere”,搭建一次到处能用。
对于docker来说其三大核心概念是:镜像、容器、仓库。类比上面例子,背包中的就是镜像(里面提供程序运行所需要的各种文件和环境),新建好的房子就是容器,所有镜像存放的地方就是仓库(大家每个人都有镜像,那么就可以共享,这样我想建什么房子就可以建什么房子。docker hub)。
怎么讲docker运用与实践呐?
就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。就在这个时候,K8S出现了。
K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。为什么需要他呐,我们还拿盖房子的例子来说,其实我们并不需要将整个房子搞成一个镜像,如果这样的话这个镜像太复杂了。我们可以将房子拆分为几个独立的模块,例如房子的框架、门窗、内部的电器等,这样这些单独的模块可以被复用,例如我们喜欢A房子的框架但是喜欢B房子的装修,这样分开就可以实现。但是这样分开之后需要有一套工具能够把不同的模块给组装起来,这就是K8S的作用。
K8S起源
K8S起源于容器技术火热的年代,由谷歌与2014年6月开源,其前身可以说是其内部的资源管理系统borg。同年7月,微软、Red Hat、IBM、Docker、CoreOS、Mesosphere和Saltstack等公司,相继加入K8S。之后的一年内,VMware、HP、Intel等公司,也陆续加入。2015年7月,Google正式加入OpenStack基金会。与此同时,Kuberentes v1.0正式发布。
K8S架构
真正的容器还是要跑在物理机上的,就是例子中的空地,那么对于一个空地来说我需要进行详细的规划来保证房子的建造。这里面需要保证尽可能多的利用土地资源,保证房子之间没有影响比如采光等,这就是K8S真正做的事儿。
一个K8S系统,通常称为一个K8S集群(Cluster)。这个集群主要包括两个部分:一个Master节点(主节点);一群Node节点(计算节点)。Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。
Master节点包括API Server、Scheduler、Controller manager、etcd。
API Server是整个系统的对外接口,供客户端和其它组件调用,相当于“营业厅”。
Scheduler负责对集群内部的资源进行调度,相当于“调度室”。
Controller manager负责管理控制器,相当于“大总管”。
Node节点包括Docker、kubelet、kube-proxy、Fluentd、kube-dns(可选),还有就是Pod。
Pod是Kubernetes最基本的操作单元。一个Pod代表着集群中运行的一个进程,它内部封装了一个或多个紧密相关的容器。
Service可以看作一组提供相同服务的Pod的对外访问接口。
Docker,不用说了,创建容器的。
Kubelet,主要负责监视指派到它所在Node上的Pod,包括创建、修改、监控、删除等。
Kube-proxy,主要负责为Pod对象提供代理。
Fluentd,主要负责日志收集、存储与查询。
这么多组件和模块一起协作来保证任务的执行,每一个模块都有其价值,后续有兴趣我们再详细介绍。
更多推荐
所有评论(0)