k8s 和 Docker 是什么关系?

这篇文章主要介绍了k8s和Docker关系简单说明,本文利用图文讲解的很透彻,有须要的同窗能够研究下

最近项目用到kubernetes(如下简称k8s,k和s之间有8个字母)。java

虽然以前也有简单使用过,但最近发现k8s概念较多,命令也有些不够用了,故想借此机会写点东西,更全面认识并使用k8s。面试

本篇文章目的: 让你更全面了解k8s概念,以及学到在工做中经常使用的操做。总体更偏向于原理和应用。在正式开始k8s以前,咱们先看看k8s和Docker的关系,分别从虚拟化角度、部署方式角度叙述why use容器,话很少说,开干。spring

目前发现并无将kubernetes和Docker技术产生背景和需求进行比较的文章,本文从最纯正的官方定义角度出发并展开,阐述两者产生背景及与传统技术对比。intellij-idea

简要介绍:

官方定义1:Docker是一个开源的应用容器引擎,开发者能够打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。ide

官方定义2:k8s是一个开源的容器集群管理系统,能够实现容器集群的自动化部署、自动扩缩容、维护等功能。工具

与传统技术对比:

接下来咱们看两张经典的图:idea

1、从虚拟化角度:

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

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

2、从部署角度

注意,你们别把这幅图与上面Docker的那张图混淆了,图1是从虚拟化角度,说明了为应用提供必要的运行环境所须要作的虚拟化操做(即:传统:虚拟出的虚拟机装操做系统、Docker:容器引擎管理下的容器)。.net

而图2是在这些具体运行环境上进行真实应用部署时的状况,传统方式是将全部应用直接部署在同一个物理机器节点上,这样每一个App的依赖都是彻底相同的,没法作到App之间隔离,固然,为了隔离,咱们也能够经过建立虚拟机的方式来将App部署到其中(就像图1上半部分那样),但这样太过繁重,故比虚拟机更轻便的Docker技术出现,如今咱们经过部署Container容器的技术来部署应用,所有Container运行在容器引擎上便可。

既然嫌弃虚拟机繁重,想用Docker,那好,你用吧,怎么用呢?手动一个一个建立?固然不,故kubernetes技术便出现了,以kubernetes为表明的容器集群管理系统,这时候就该上场表演了。

说白了,咱们用kubernetes去管理Docker集群,便可以将Docker当作Kubernetes内部使用的低级别组件。另外,kubernetes不只仅支持Docker,还支持Rocket,这是另外一种容器技术。但愿我这篇文章中简单的描述能让你对二者有所理解和认识。

更多 Docker 系列教程请关注公众号阅读之前的文章。

原文连接:https://blog.csdn.net/yanghao...

版权声明:本文为CSDN博主「Harlan60」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处连接及本声明。

近期热文推荐:

1.600+ 道 Java面试题及答案整理(2021最新版)

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.阿里 Mock 工具正式开源,干掉市面上全部 Mock 工具!

4.Spring Cloud 2020.0.0 正式发布,全新颠覆性版本!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

以为不错,别忘了随手点赞+转发哦!

相关文章
相关标签/搜索