首页 > 其他分享 >为什么要虚拟化

为什么要虚拟化

时间:2023-04-20 21:12:01浏览次数:26  
标签:为什么 虚拟化 容器 虚拟机 应用 Docker kube

前言

如标题中的问题所提到的虚拟化,容器,Docker和K8s那样,我们不妨这样问:这些技术到底适用于哪些场景,有没有别的技术可以替代?这些技术的优劣在哪里?

下面我将针对性地从以上几个问题的出发点,去和大家分享自己的答案。

一、虚拟化—历史的选择

我们现在提到虚拟化技术,一般会知道有5种:软件虚拟化,硬件虚拟化,完全虚拟化,半虚拟化和容器虚拟化。

在这里,主要探讨的是硬件虚拟化和容器虚拟化的出现,对云计算的发展带来了哪些影响甚至是推动。

对于云原生来说,尤其是应用上云,我们会直接想到使用物理机节点去部署我们的应用。这样做首先是没有问题的,物理机在早期确实也承担了这样的任务,如图1所示。

但这样也会有直接的问题:对于物理机资源的利用暂且不说,众多的应用环境隔离怎么解决?前端是node.js+Vue,后端是Golang,对于版本的维护成本是比较大的,买三台服务器来实现硬件级别隔离显然并不合理。

此外,还有物理机内应用的资源分配问题、动态负载等等问题。

 

图1

那么,得想个办法(或者工具)来解决环境隔离的问题。举个简单的例子,平时在PC上使用比较多的虚拟化是Vmwear(一个桌面软件),这类软件可以在windows上安装下linux虚拟机(可以学习linux系统),且安装完成的虚拟机就是一个文件夹,可以拷贝到任意其他PC电脑上使用,只要那台电脑上也装了Vmwear,等同于一个移动操作系统,如图2所示:

 

图2

但是这仅仅是我们个人在PC端使用的虚拟化软件,在企业级别服务器上相应的工具最具代表性的是KVM。

我们可以把原始装的那个linux系统称为Host OS(主机),在这之上我们安装各种应用,JVM,Docker,Python等。其运行原理如图3所示:

 

图3

到这里,我们已经大致知晓了虚拟化技术存在的原因和所适用的场景。接下来就是对于容器这一部分进行解答,同时将Docker和容器一起进行比较。

二、容器化—演进的结果

为何要容器化?

结论先行:虚拟机≠容器,容器≠Docker。

虚拟化技术解决的核心问题是资源调配,而容器解决的核心问题是应用开发、测试和部署。

基于上面的介绍,容器的特点可以更好地理解:

  • 容器可以将代码与配置文件和相关依赖库进行打包,从而确保在任何环境下的运行都是一致的。
  • 高资源利用率:容器提供进程级的隔离,因此可以更加精细地设置 CPU 和内存的使用率,进而更好地利用服务器的计算资源。
  • 快速扩展:每个容器都可作为单独的进程予以运行,并且可以共享底层操作系统的系统资源,这样一来可以加快容器的启动和停止效率。

区别与联系:

  • 虚拟机虽然可以隔离出很多「子电脑」,但占用空间更大,启动更慢。虚拟机软件可能还要花钱,例如 VMWare。
  • 容器技术不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境,类似「沙箱」。
  • 运行空间,虚拟机一般要几 GB 到 几十 GB 的空间,而容器只需要 MB 级甚至 KB 级。

将容器这一理念发挥到淋漓尽致的,就是著名的Docker容器技术。即是创建容器的工具,也是应用容器引擎。Docker的中文意思,就是码头工人。而它的LOGO,就是一只鲸鱼背着很多货柜箱,如图4所示:

 

图4

为什么一提到容器就会联想到Docker?

Docker是业内容器概念的最好践行者之一。

Docker容器使应用程序不仅彼此隔离,而且与底层系统隔离。这不仅可以实现更清晰的软件堆栈,还可以更轻松地指定给定的容器化应用程序如何使用系统资源- CPU,GPU,内存,I / O,网络等,它还可以更轻松地确保数据和代码保持独立。

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

我想,上述对于容器和Docker区别大家或多或少有所了解。下面,对于为什么要K8s的问题,分享我的看法。

K8s—业界的标准

众所周知,Docker是应用最为广泛的容器技术,通过打包镜像、启动容器来创建一个服务。但是随着应用越来越复杂,容器的数量也越来越多,由此衍生了管理运维容器的重大问题。

而K8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用、应用的部署、应用提供服务、扩容缩容应用、应用更新等,都非常的方便,而且可以做到故障自愈。例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。

K8s集群由Master节点和Node(Worker)节点组成,具体如表1所示:

Master节点

Node节点

etcd

Control plane

kube-apiserver

kube-proxy

kube-controller-manager

kubelet

kebu-scheduler

docker

kube-dns

other apps

kube-proxy

 

Control plane

 

表1

各关键组件的简单介绍如下:

- etcd:一个高可用的Key/Value键值对存储和服务发现系统
- flannel:实现跨主机的容器网络的通信
- kube-apiserver:提供kubernetes集群的API调用
- kube-controller-manager:确保集群服务
- kube-scheduler:调度容器,分配到Node
- kubelet:在Node节点上按照配置文件中定义的容器规格启动容器
- kube-proxy:提供网络代理服务

多节点之间关系和所需的组件如图5所示:

 

图5

最后,可以来总结一下虚拟化,容器,Docker和K8s之间的关系了:虚拟化技术将应用从物理机搬进了虚拟机,虚拟机里的容器隔离了应用之间的环境,而Docker是容器技术的知名践行者,K8s则是目前业内公认的容器编排工具(标准)。

标签:为什么,虚拟化,容器,虚拟机,应用,Docker,kube
From: https://www.cnblogs.com/IT-Evan/p/17181943.html

相关文章

  • MySQL: 为什么使用 innobackupex 备份恢复搭建主从时,必须人为设置 gtid_purged 变量
    问题描述:使用innobackupex搭建主从的步骤如下:1.主库使用innobackupex备份并apply-log2.将备份文件拷贝至从库,从库清空datadir目录,并使用innobackupex进行copy-back3.从库根据备份目录中的xtrabackup_binlog_info的GTID信息来设置gtid_purged变量。4.从库changem......
  • 4 03 | 事务隔离:为什么你改了我还看不见?
    提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转账,你要给朋友小王转100块钱,而此时你的银行卡只有100块钱。转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前......
  • ChatGPT闲谈——火出圈的为什么是 OpenAI?
    ChatGPT走入大众视野之后,AIGC行业迎来了爆发,尤其是上个月,仿佛每一天都可能是「历史性」的一天。现在各大网站已经有非常多的优秀创作者进行总结和分析,都是值得一阅的好文。今天本文也分享了关于ChatGPT的看法,有谈到技术,也有关于ChatGPT的闲谈,看完这篇文章,相信你会对ChatGPT有......
  • Redis为什么快?
    redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。和Memcached类似。redis支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。它的速度快主要归功于以下几个方面:内存数......
  • Pycharm这个更新索引是个什么操作,为什么每次启动,都会进行?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【吴超建】问了一个Pycharm操作的问题,这里拿出来给大家分享下。每次打开Pycharm的时候,都会有个更新的操作,遇到项目比较多的时候,挨个去索引更新,确实挺费时的。下图是他自己的部分项目,看上去还是挺多的:二、实现过程这里【6G】提......
  • 有大佬知道这是为什么嘛?路径和文件名都没错呀
    大家好,我是皮皮。一、前言前几天在Python白银交流群【笑】问了一个Python文件处理的问题,这里拿出来给大家分享下。二、实现过程这里【空翼】指出是路径错了的问题,其实报错也非常明显了。只需要把前面那个topmine_src去掉即可。顺利地解决了粉丝的问题。三、总结大家好,我是皮皮。这......
  • 虚拟化+docker概念基本介绍
    文章目录引言一、虚拟化简介1.1.虚拟化概述1.2.cpu的时间分片(cpu虚拟化)1.3.cpu虚拟化性性能瓶颈1.4.虚拟化工作原理虚拟化类型虚拟化功能二、Docker容器概述2.1Docker是什么2.2使用docker有什么意义2.3Docker的使用场景2.4Docker引擎(DockerEngine)2.5Docker三要素(核心组件......
  • 虚拟化和云计算的结合,主要有什么优势?
    在当今市场上,客户需要各种灵活的基础设施和解决方案以快速适应不断变化的业务需求。通过有效利用资金上或各种IT相关的资源,云计算(提供服务的途径)和虚拟化(主要的使能技术)为客户提供了越来越多的业务灵活性。虚拟化从根本上来说就是对技术资产的最充分利用。获得虚拟化基础设施的投资......
  • 虚拟化就是云计算吗,两者之间有哪些不同之处?
    虚拟化就是云计算,这个说法很早就有,尤其商业厂商,vmware,微软,都是把以前叫虚拟化的产品,改名为云计算。其实某种意义上,也对,虚拟化是云计算的初级阶段。对于企业来说,虚拟化,其实就已经能完全满足需求,那其实这就是云计算。相信云计算也是有不同的阶段,不同的层次。......
  • Elasticsearch搜索功能的实现(一)--搜索引擎为什么选ES
    一、应用场景Elasticsearch具有广泛的应用场景,包括全文搜索、日志分析、运维监控、安全分析等。Elasticsearch是开源的实时分布式搜索分析引擎,内部使用Lucene做索引与搜索。适用场景包含信息检索、舆情分析、推荐系统、广告系统等多种对综合检索&召回有需求的场景。二、为......