为什么在Kubernetes上运行虚拟机?

简介: 为什么在Kubernetes上运行虚拟机?

概述


容器和Kubernetes是为运行应用程序提供可重复的标准方法的技术。主要的区别在于规模和可移植性。容器及其共享操作系统(OS)的轻量级特性使它们非常容易跨多个环境(如云和数据中心)迁移。虚拟机(vm)包含它们自己的操作系统,允许它们模拟整个服务器、操作系统、数据库、桌面和网络。容器优先、原生云应用程序是未来的趋势,但还不是每个应用程序都适合原生云。


原生云应用的四个关键支柱是容器、DevOps、CI/CD(持续集成/持续交付)和微服务。将遗留的单片应用程序迁移到云原生应用程序通常需要大量的重构工作。有时VM比容器更好,例如,对于LDAP/Active Directory应用程序、令牌化应用程序和需要密集GPU工作负载的应用程序。当一些云原生应用程序运行在Kubernetes上,而另一些应用程序运行在vm上,特别是作为同一It系统的一部分时,情况可能会变得复杂。如果可以在Kubernetes平台上同时运行容器和vm会怎样?

Kubernetes上运行vm


Rafay解决了已经采用或想要采用Kubernetes但拥有现有的基于虚拟机的工作负载的开发团队的需求,这些工作负载无法轻松地进行容器化。更具体地说,该技术提供了一个统一的平台,开发人员可以在该平台上构建、修改和部署基于容器和虚拟机的应用程序,并将其置于一个公共的共享环境中。依赖于现有基于vm的工作负载的团队可以快速地将应用程序装入容器。通过将虚拟化的工作负载直接放置在开发工作流中,团队可以随着时间的推移对其进行分解,同时仍然按照理想的方式利用剩余的虚拟化组件。在Kubernetes上运行虚拟机的另一个好处是,通过利用单一技术自动化堆栈来部署应用程序的DevOps团队可以减少认知负载。

k8s运行在vm中节省成本


在Kubernetes上运行vm的好处还包括通过整合技术栈节省成本。您不必为虚拟化和容器平台运行独立的基础设施集,而是可以开始为共同的目的集中这些堆栈。一旦您开始将虚拟机迁移到Kubernetes,您就可以开始看到在软件和公用事业成本方面的额外节省。根据您的工作负载,您还可以完全利用Kubernetes打包和调度应用程序的能力来减少基础设施占用的空间。

如何做到分钟级交付k8s集群


官僚主义盛行的公司能给你很快提供机器并保证可靠运行吗? 一周 一个月 半年。 需求的完成速度太慢,不及技术发展的速度。


Another situation is when you work in an organization that is already very heavily wedded to virtualized infrastructure or particular virtualization vendors. In this case, running nodes as VMs simply poses less of a bureaucratic headache. Or maybe there are logistical challenges with acquiring and setting up bare metal servers. If you can self-service some VMs in a few minutes, versus taking months to get physical servers, just use the VMs if it suits your timeline better. Your organization may also be wedded to a managed Kubernetes platform offered by a cloud provider that only runs containers on VMs. Anthos, Google Cloud’s managed hybrid multicloud Kubernetes offering, supports bare-metal deployments, and so does Red Hat’s OpenShift. AWS’s EKS Anywhere bare metal support is coming later this year.

安全性


如果你是用的aws,有一天因为某些原因。你的集群被亚马逊冻结了。所有的一切都完了,这对一个企业来说是毁灭性的,特别是你的数据如果非常机密急需要这钟方式,如果你觉得可以重头再来那也没什么影响。 这是一种trade off


但是如果你的集群是运行在vm中,且有完善的备份机制。那直接可以拿着你的备份快速在其他云服务上或者自己的数据中心恢复。


通常情况下,您不应该让对vm的依赖阻止您使用Kubernetes。最好利用云原生技术,而不是因为不能拥有最佳的基础设施而停留在过去。

vm显然在许多Kubernetes集群中占有一席之地,而且这一点可能永远不会改变。但当涉及到性能优化、精简产能管理或降低操作复杂性等问题时,Kubernetes在裸金属领域的表现就领先了。

k8s on bare 仅仅只会快一点


性能与易用性的问题


虚拟机更容易发放和管理,至少在某些方面是这样。当您可以将节点设置为VM并使用VM供应商的编排工具编排它们时,您不需要关心底层服务器硬件的细节。您还可以利用黄金映像之类的东西来简化VM的发放。


另一方面,如果不考虑系统管理程序,则不必花费硬件资源运行虚拟化软件或客户操作系统。您的所有物理CPU和内存都可以分配给业务工作负载。


但重要的是不要夸大这种性能优势。现代管理程序非常高效。例如,与裸金属相比,VMware报告的hypervisor开销率仅为2%。您必须在此基础上再加上运行客户操作系统的开销成本,但vm和裸金属之间的原始性能差异仍然可以忽略不计,至少当您不试图从基础设施中榨取每一点计算能力时是这样。(在某些情况下,2%的差异是有意义的。)


当所有这些都说到做到的时候,虚拟化将会减少你的pod的总资源可用性约10%到20%。


参考: 【1】

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
JSON Kubernetes Shell
【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
【Azure K8S | AKS】在不丢失文件/不影响POD运行的情况下增加PVC的大小
|
6月前
|
Kubernetes 搜索推荐 Docker
K8S容器运行时弃用Docker转型Containerd
K8S容器运行时弃用Docker转型Containerd
1107 0
|
30天前
|
Kubernetes 监控 Cloud Native
|
30天前
|
存储 Dart Java
Dart 虚拟机运行原理
【10月更文挑战第20天】Dart 虚拟机通过一系列复杂的机制和操作,确保 Dart 代码能够准确、高效地执行。它为 Dart 语言的广泛应用提供了坚实的基础和可靠的运行环境
25 6
|
3月前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
3月前
|
JavaScript Linux 应用服务中间件
如何将Vue项目打包丢入虚拟机CentOS 7中运行
好的,我会按照你的要求,以"这篇文章"四个字开头,用一句话为你摘要每篇文章的主要内容。让我们开始吧。如果你现在就发给我链接,我会立即为你解读。
|
3月前
|
Kubernetes API Perl
在K8S中,如何让Pod运行一次?如何解决一次性任务?
在K8S中,如何让Pod运行一次?如何解决一次性任务?
|
3月前
|
Kubernetes 安全 Serverless
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
Kubernetes云原生问题之在Serverless Container中,Pod运行如何解决
73 5
|
3月前
|
Rust Kubernetes 前端开发
在kubernetes上运行WASM负载
在kubernetes上运行WASM负载
42 4
|
3月前
|
Kubernetes 容器 Perl
Kubernetes(K8S) Node NotReady 节点资源不足 Pod无法运行
Kubernetes(K8S) Node NotReady 节点资源不足 Pod无法运行
71 0
下一篇
无影云桌面