虽然很多企业已经部署了Kubernetes和容器,但大多数还运行虚拟机。因此,这两种环境可能会共存多年,从而增加运营复杂性并增加时间和基础设施成本。
在不讨论一个与另一个的优缺点的情况下,记住每个虚拟机或VM都包含其完整操作系统的实例并且旨在像独立服务器一样运行(因此得名)是很有帮助的。相比之下,在容器化环境中,多个容器共享一个操作系统实例,几乎总是某种 Linux 风格。
并非所有应用程序服务都在容器中运行良好,因此需要同时运行两者。
例如,对于 LDAP/Active Directory 应用程序、标记化应用程序和具有密集 GPU 要求的应用程序,VM 优于容器。您可能还有一个遗留应用程序,由于某种原因(没有源代码、许可、已弃用的语言等)无法现代化,因此必须在 VM 中运行,可能针对特定的操作系统(如 Windows)。
无论您的应用程序需要虚拟机或容器的原因是什么,运行和管理多个环境都会增加操作的复杂性,需要单独的控制平面和可能的单独基础架构堆栈。如果您需要运行一个或一小组 VM 来支持其他容器化应用程序的单个实例,这似乎没什么大不了的。但是如果你有很多这样的应用程序呢?如果您需要在不同的云环境中运行这些应用程序的多个实例怎么办?您的操作会很快变得非常复杂。
如果您可以将虚拟机作为 Kubernetes 环境的一部分运行,那不是很好吗?
这正是KubeVirt使您能够做到的。在这篇博客中,我将深入探讨 KubeVirt 是什么、使用它的好处以及如何集成这项技术以便您可以立即开始使用它。
什么是 KubeVirt?
KubeVirt 是一个 Kubernetes 附加组件,它使 Kubernetes 能够在与容器相同的基础架构上配置、管理和控制 VM。
这项技术使 Kubernetes 能够使用与容器化工作负载相同的工具来调度、部署和管理 VM,从而无需使用具有不同监控和管理工具的单独环境。这为您提供了两全其美的优势,VM 和 Kubernetes 一起工作。
使用 KubeVirt,您可以声明式地:
- 创建虚拟机
- 在 Kubernetes 集群上调度 VM
- 启动虚拟机
- 停止虚拟机
- 删除虚拟机
您的虚拟机在 Kubernetes pod 内运行,并利用标准 Kubernetes 网络和存储。
KubeVirt的 B优势是什么?
KubeVirt 与现有的 Kubernetes 工具和实践(如监控、日志记录、警报和审计)集成,提供显着优势,包括:
- 集中管理:使用一组工具管理虚拟机和容器。
- 无管理程序税:无需许可和运行管理程序来运行与您的应用程序关联的虚拟机。
- 可预测的性能: KubeVirt 使用 Kubernetes CPU 管理器将 vCPU 和 RAM 固定到 VM,以处理需要可预测延迟和性能的工作负载。
- VM 的 CI/CD: 开发在 VM 中运行的应用程序服务,并使用相同的容器 CI/CD 工具集成和交付它们。
- 授权: KubeVirt 附带一组预定义的 RBAC ClusterRoles,可用于授予用户访问 KubeVirt 资源的权限。
集中管理VM 和容器可简化您的基础架构堆栈并提供各种不太明显的好处。例如,采用 KubeVirt 消除了对单独的 VM 和容器管道的需求,从而加快了日常运营,从而减轻了 DevOps 团队的负担。此外,随着您将更多虚拟机迁移到 Kubernetes,您可以看到软件和实用程序成本的节省,更不用说管理程序税了。从长远来看,您可以利用 Kubernetes 打包和调度虚拟应用程序的能力来减少基础架构占用空间。
带有 KubeVirt 的 Kubernetes 可缩短上市时间、降低成本并简化管理。使用 Kubernetes 自动化 VM 的生命周期管理有助于整合虚拟化和容器化应用程序的CI/CD 管道。使用 Kubernetes 作为编排器,可以类似地测试和安全部署任何类型应用程序的更改,从而降低人为错误的风险并实现更快的迭代。
KubeVirt:挑战和最佳实践
如果您要部署 KubeVirt,有几件事情需要记住。首先,正如我上面提到的,您可能想要运行 VM 而不是容器的原因之一是用于 GPU 等专用硬件。如果这适用于您的工作负载,您需要确保集群中至少有一个节点包含必要的硬件,然后将包含 VM 的 pod 固定到具有该硬件的节点上。
与任何 Kubernetes 附加组件一样,当您拥有一组集群(可能在多个不同的环境中运行)时管理 KubeVirt 变得更具挑战性。确保技术在每个集群中以相同的方式部署并可能针对可用的硬件进行定制是至关重要的。
最后,Kubernetes的技能供不应求。在 KubeVirt 上运行 VM 通常需要能够理解和编辑 YAML 配置文件。您需要确保需要在 KubeVirt 上部署 VM 的每个人都拥有从开发人员到操作员的技能和工具。