技术交流28群

服务热线

135-6963-3175

微信服务号

Kubernete是什么 更新时间 2019-4-19 浏览1970次

首先介绍一下k8s与docker区别

docker是一个开源的应用管理引擎,开发者可以打包自己的应用及依赖到一个容器中,发布到linux服务器,也可用于实现虚拟化。

k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动化扩缩容、维护等功能。

大家需要注意,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。(build,ship and run)如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。


Docker的三大核心概念,分别是:① 镜像 ② 容器 ③ 仓库

如果要了解以上的名词,先得听个小故事,我有一栋房子,当我再想拥有另外一栋房子的时候,要重新雇人搭建、弄材料。当克隆技术出现后,直接克隆一份新的“镜像”文件,放在包里,用的时候直接打开便可以使用。

镜像就是刚才说的Docker镜像,背包则是 Docker仓库,房子则是 Docker容器.


白话解析:可以理解为K8s是个管家,负责每个小屋子(docker容器)的监控、流通和控制。



传统虚拟技术与容器的区别

从虚拟化角度:

docker与k8s区别

    上图是Docker容器(可用k8s管理的玩意儿)与传统虚拟化方式的不同之处,传统的虚拟技术,在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。

而Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。 每个集群有多个节点,我们的kuberbete就是管理这些应用程序所在的小运行环境(container)而生。

图1是从虚拟化角度,说明了为应用提供必要的运行环境所需要做的虚拟化操作(即:传统:虚拟出的虚拟机装操作系统、Docker:容器引擎管理下的容器)。


部署角度:

k8s与docker区别

     而图2是在这些具体运行环境上进行真实应用部署时的情况,传统方式是将所有应用直接部署在同一个物理机器节点上,这样每个App的依赖都是完全相同的,法做到App之间隔离,当然,为了隔离,我们也可以通过创建虚拟机的方式来将App部署到其中(就像图1上半部分那样),但这样太过繁重,故比虚拟机更轻便的Docker技术出现,现在我们通过部署Container容器的技术来部署应用,全部Container运行在容器引擎上即可。既然嫌弃虚拟机繁重,想用Docker,那好,你用吧,怎么用呢?手动一个一个创建?当然不,故kubernetes技术便出现了,以kubernetes为代表的容器集群管理系统,这时候就该上场表演了。

        说白了,我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。另外,kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。



k8s及容器生态系统

k8s生态

k8s流转控制

k8s组成元素

k8s组成部分