当前位置:首页 > 虚拟机 > 正文

kubernetes和虚拟机的区别

K8s的网络详解

对于这一点,需要对网络运行机制和K8s的基本结构有深入的了解,否则丢问题的时候你会郁闷。
首先要明白,K8s的目的是编排和遏制管理。最小的部分其实不是器皿,而是容器。物理机或虚拟机称为节点。容器是一个基本单元,一个容器中可以有多个容器,但容器中只包含一个容器,并且容器之间共享相同容器网络和主机的配置,即它们之间可以直接通信。在本地主机中,这类似于同一台机器上的通信,所以不存在隔离和安全性。,它是一个外部环境,所以容器是这个业务环境的对象。那么第一个问题就是,同一个容器的不同容器可以放在不同的节点上吗?当然不是,必须是主机和网络共享的同一个节点。我们怎么知道一艘船有很多艘船呢?我可以指定哪个容器需要使用kubectlexec运行吗?当然,请参考以下说明:

因此,您可以在这里考虑包含的概念,而只是Pod。最后,pod是k8s的最小调度单元。那么Pod之间如何通信呢?

Pod之间的通信离不开K8s网络模型:

Flannel构成了一个大型的两层网络。IPPod的分配由flannel统一分配,通信过程也使用flannel网络。桥
每个节点上都会创建一个flannel0虚拟网卡,用于节点之间的通信。因此,可以直接使用podido来共享容器。
跨节点通信时,发送到端的数据会从docker0发送到flannel0虚拟网络,接收到的数据会从flannel0路由到docker0。

如果Container集合是应用程序容器,则Service为空。当应用服务在整个运行生命周期中需要被加载并被监控和管理时,它的意义就体现出来了,所以它是一个服务。一个抽象概念,定义Pod的逻辑集合以及访问这些Pod的计划。
最常见的任务是,当Podex由于某种原因运行时,kubelet会通过部署需求来创建一个新的Pod,以提供之前Pod的功能,但新Pod会部署新的Podflannel。IP,这将是一项巨大的努力。很多形状对象都适合使用,如果Service存在的话,这不是问题:让我们看看Service的运行原理。

这张图解释了服务的工作机制,当ServiceA被创建时,会触发ServiceController和EndPointsController来更新一些资源,比如针对服务中配置的选定容器中创建的每个Pod。等方面的能力Kube-manager还会更新iptable规则链,根据ClusterIP服务绑定到相应的Pod生成绑定规则。集群IP:端口。根据iptables链接将请求发送到相应的容器。该层有两种选择蔬菜的算法:RoundRobin和SessionAffinity。当然,除了iptables的这种方法之外,还有一种比较原始的方法就是用户推广方法。从客户端到ClusterIP:Port的消息将被重定向到ProxyPort。Kube-Proxy收到消息后,会采用RoundRobin(会话亲和性),即同一个ClientIP会使用同一条链来服务同一个。Pod.)分发到对应的Pod。

当然,新版本的k8s开始基于ipvs替换iptables,不过格式和iptables类似。
可以看到这个概念的雏形:

这是最原始的方式,如下图:

IPVS是LVS项目的一部分,是一个优秀的Layer4负载平衡器。凭借模块化核心,它可以轻松处理每秒超过100,000个请求。目前,在大中型互联网企业中,广泛采用IPVS来处理互联网入口的流量。

容器与虚拟机的区别
1.容器技术简介
对于容器来说它首先是一个相对独立的执行环境,从这个意义上来说它有点类似于虚拟机,但又不像虚拟机那么完整。在容器内部,它对外界的影响应该最小化。例如,主机上的所有资源都不能在容器内使用。这就是资源控制。
2.容器和虚拟机的区别
容器和虚拟机的主要区别在于虚拟化层的位置以及操作系统资源的使用方式。
1
1
容器和虚拟机具有相似的使命:隔离应用程序及其依赖项以创建可以在任何地方运行的独立单元。此外,容器和虚拟机还消除了对物理硬件的需求,使我们能够更有效地利用计算资源,从而提高能源效率和成本效益。
虚拟机将虚拟硬件、内核(即操作系统)和用户空间封装在一个新的虚拟机中。虚拟机可以使用“管理程序”在物理设备上运行。虚拟机依赖于虚拟机管理程序,虚拟机管理程序通常安装在“裸机”系统硬件上,导致虚拟机管理程序在某些方面被视为操作系统。一旦安装了虚拟机管理程序,就可以从系统的可用计算资源中分配虚拟机实例,并且每个虚拟机都获得唯一的操作系统和工作负载(应用程序)。简而言之,虚拟机首先要虚拟出一个物理环境,然后创建一个完整的操作系统,然后创建一个运行应用程序的运行时层。
对于容器环境,不需要安装主机操作系统。容器层(如LXC或libcontainer)直接安装在主机操作系统(通常是Linux变体)上。装容器层后,您可以从系统可用的计算资源中分配容器实例,并将业务应用程序部署到容器中。但是,每个容器化应用程序将共享相同的操作系统(单个主机操作系统)。容器可以被认为是安装了一组特定应用程序的虚拟机,它直接使用主机内核,比虚拟机具有更少的抽象层,更轻并且启动速度极快。
与虚拟机相比,容器的资源使用效率更高,因为不需要为每个应用程序分配单独的操作系统:实例规模更小,速度更快,创建和迁移更简单快点。很快。这意味着单个操作系统可以承载比虚拟机更多的容器。云提供商对容器技术非常感兴趣,因为可以在相同的硬件设备上部署更多数量的容器实例。此外,容器迁移很简单,但只能迁移到具有兼容操作系统内核的其他服务器,这限制了您的迁移选项。
由于容器不像虚拟机那样封装内核或虚拟硬件,因此每个容器集都有自己独立的用户空间,允许多个容器集运行在同一个主机系统上。。我们可以看到,所有操作系统级别的架构都可以在容器之间共享,唯一需要独立构建的就是二进制文件和库。因此,容器具有极其优异的轻量化特性。
接触过Docker的人应该都看过下图。无需进一步解释。Docker对GuestOS进行了分层,因此更轻、性能更高。
docker虚拟机之间的区别
3.深层差异:
docker虚拟机之间的差异
更新:Docker现在支持Windows平台。因此,上面的Windows支持栏可以忽略。

上一篇:

下一篇:kubernetes容器虚拟化