当前位置: 首页 > Linux

k8s与Docker的关系简述

时间:2023-04-06 05:52:42 Linux

来源:https://www.jb51.net/article/...本文主要介绍k8s与Docker的关系简述。同学们可以研究一下最近项目中使用的kubernetes(以下简称k8s,k和s之间有8个字母)。虽然之前也简单使用过,但是最近发现k8s的概念比较多,有些命令不够用,所以想借此机会写点东西,更全面的了解和使用k8s。本文目的:让大家更全面的了解k8s的概念,学习工作中的常用操作。整体更偏向于原理和应用。在正式入手k8s之前,我们先了解一下k8s和Docker的关系,从虚拟化和部署方式的角度来描述为什么要使用容器。目前还没有比较kubernetes和Docker技术背景和需求的文章。本文从最纯粹的官方定义出发,展开阐述两者的背景以及与传统技术的对比。简单介绍下官方定义1:Docker是一个开源的应用容器引擎。开发者可以将自己的应用和依赖打包到一个可移植的容器中,发布到流行的Linux机器上,实现虚拟化。官方定义2:k8s是一个开源的容器集群管理系统,可以实现容器集群的自动部署、自动扩缩容、维护等功能。与传统技术的对比:接下来我们看两张经典的图:从虚拟化的角度:上图展示了Docker容器(k8s可以管理的东西)和传统虚拟化方式的区别:传统的虚拟化技术使用物理后硬件被虚拟成多套硬件,需要在每套硬件上部署一个操作系统,然后在这些操作系统上运行相应的应用程序。而Docker容器中的应用进程直接运行在宿主机(真实物理机)的内核上,而Docker引擎将一些独立的应用程序及其各自的依赖打包,直接在非虚拟化的宿主机上相互独立运行,从硬件上来说,每个容器都没有自己的内核,明显比传统的虚拟机要轻。每个集群有多个节点,每个节点可以运行多个容器。我们的kuberbete就是为了管理这些应用所在的小型运行环境(容器)而生的。注意,从部署的角度来看,请不要将此图与上面的Docker混淆。图1从虚拟化的角度说明了为应用程序提供必要的运行环境所需的虚拟化操作(即:传统的:虚拟化的虚拟机安装操作系统,Docker:容器引擎管理下的容器)。图2显示了这些特定操作环境中的实际应用程序部署。传统的做法是直接把所有应用部署在同一个物理机节点上,这样每个App的依赖完全一样,是不可能实现的当然为了隔离,我们也可以把App部署到它上面通过创建虚拟机(如图1上半部分),但是这样太重了,所以比虚拟机更轻量级的Docker技术出现了,现在我们通过部署Container容器的技术来部署应用,所有容器都可以运行在容器引擎上。既然嫌弃虚拟机负载大,想用Docker,那好吧,可以用,怎么用?手动一一创建?当然不是,于是就出现了kubernetes技术,以kubernetes为代表的容器集群管理系统应该在这个时候发挥作用。说白了,我们使用kubernetes来管理Docker集群,也就是我们可以把Docker看成是Kubernetes内部使用的一个低级组件。另外,kubernetes不仅支持Docker,还支持Rocket,这是另一种容器技术。我希望我在本文中的简单描述能让您对两者有所了解和认识。至此,这篇关于k8s与Docker的关系的文章已经简单介绍完毕。