为什么在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】

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
6月前
|
Kubernetes Java 容器
如何获取k8s容器里运行的jar包
如何获取k8s容器里运行的jar包
165 0
|
7月前
|
Kubernetes 流计算 容器
Flink on k8s的话,怎么在容器运行前初始化一些脚本?
Flink on k8s的话,怎么在容器运行前初始化一些脚本?
48 1
|
6月前
|
JSON Kubernetes Docker
k8s 集群中运行 docker registry 镜像仓库
k8s 集群中运行 docker registry 镜像仓库
646 0
|
2月前
|
Kubernetes 网络协议 Java
在Kubernetes上运行Flink应用程序时
【2月更文挑战第27天】在Kubernetes上运行Flink应用程序时
38 10
|
2月前
|
Ubuntu 安全 虚拟化
vmware虚拟机运行ubuntu等卡慢的解决办法
vmware虚拟机运行ubuntu等卡慢的解决办法
167 0
|
7月前
|
Kubernetes 监控 Docker
深入解析 Kubernetes 架构:掌握主节点、工作节点和容器运行时
深入解析 Kubernetes 架构:掌握主节点、工作节点和容器运行时
112 0
|
7月前
|
Kubernetes jenkins 持续交付
jenkins结合k8s构建流水线如何提升运行性能和构建效率
jenkins结合k8s构建流水线如何提升运行性能和构建效率
|
9月前
|
容器
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——虚拟节点和弹性容器ECI——运行场景
阿里云最新产品手册——云基础产品与基础设施——计算——弹性容器实例——通用部署ACK虚拟节点组件创建ECI Pot——虚拟节点和弹性容器ECI——运行场景自制脑图
241 1
|
4月前
|
Kubernetes Linux 数据安全/隐私保护
k8s安装环境准备:Virtualbox安装CentOS;复制多个CentOS虚拟机
k8s安装环境准备:Virtualbox安装CentOS;复制多个CentOS虚拟机
59 0
|
5月前
|
Kubernetes Java 流计算
在Kubernetes上运行Flink应用程序时,你可以使用Flink Kubernetes Client提供的命令来提交作业
在Kubernetes上运行Flink应用程序时,你可以使用Flink Kubernetes Client提供的命令来提交作业
45 6

推荐镜像

更多