KubeVirt入门介绍

KubeVirt入门介绍

KubeVirt 是一个开源项目,旨在通过 Kubernetes 管理虚拟机(VM),使得 Kubernetes 不仅支持容器化工作负载,还支持虚拟机的部署和管理。这种双重支持的目标是提供一个统一的云原生平台,让开发人员和运维团队在同一环境中管理容器和虚拟机应用。

1. 简介

为什么需要 KubeVirt?

KubeVirt 技术满足了那些已经或希望采用 Kubernetes 的开发团队的需求,这些团队拥有现有的基于虚拟机的工作负载,但这些工作负载无法轻易地容器化。更具体地说,KubeVirt 提供了一个统一的开发平台,让开发人员可以在一个通用的共享环境中构建、修改和部署基于应用容器和虚拟机的应用程序。

其优势广泛而显著。对于依赖现有虚拟机工作负载的团队,KubeVirt 使他们能够快速将应用程序容器化。通过将虚拟化的工作负载直接纳入开发流程中,团队可以逐步拆解这些工作负载,同时在需要时继续使用剩余的虚拟化组件,从而实现灵活的迁移和过渡。

使用 KubeVirt 可以做什么?

  • KubeVirt 和 Kubernetes :利用 KubeVirt 和 Kubernetes 来管理无法容器化的应用所需的虚拟机。

  • KubeVirt 和虚拟机 : 在同一平台上将现有的虚拟化工作负载与新的容器化工作负载结合。

  • 容器化应用 : 支持在容器中开发新的微服务应用,并与现有的虚拟化应用进行交互。

2. 架构

Stack(技术栈)

  +---------------------+| KubeVirt            |
~~+---------------------+~~| Orchestration (K8s) |+---------------------+| Scheduling (K8s)    |+---------------------+| Container Runtime   |
~~+---------------------+~~| Operating System    |+---------------------+| (Virtual)           |
~~+---------------------+~~| Physical            |+---------------------+

需要虚拟化服务的用户通过虚拟化 API进行交互,而该 API 会与 Kubernetes 集群通信以调度请求的虚拟机实例(VMI)。调度、网络和存储全部由 Kubernetes 处理,而 KubeVirt 提供虚拟化功能。

Additional Services

KubeVirt 为你的 Kubernetes 集群提供了额外的功能,以实现虚拟机管理。

回想一下 Kubernetes 是如何处理 Pods 的,我们会记得 Pods 是通过向 Kubernetes API Server 提交 Pod 规格来创建的。这个规格随后会在 API Server 内部转化为一个对象,这个对象具有特定的类型或种类——在规格中就是这样定义的。Pod 的类型是 Pod。Kubernetes 中的控制器知道如何处理这些 Pod 对象。因此,一旦看到一个新的 Pod 对象,控制器就会执行必要的操作以将 Pod 启动,并使其匹配所需的状态。

KubeVirt 使用了相同的机制。因此,KubeVirt 提供了三种东西来实现新的功能:

  1. 向 Kubernetes API 添加了额外的类型——所谓的自定义资源定义(CRD)。
  2. 为与这些新类型相关的集群级逻辑添加了额外的控制器。
  3. 为与新类型相关的节点特定逻辑添加了额外的守护进程。

完成这三个步骤后,你就可以:

  • 在 Kubernetes 中创建这些新类型的对象(在我们的例子中是 VMIs)。
  • 新的控制器负责将 VMI 调度到某个主机上。
  • 一个守护进程: virt-handler – 与 kubelet 一起在主机上工作,启动 VMI 并进行配置,直到它匹配所需的状态。

最后要注意的是,控制器和守护进程都是作为 Pods(或类似的形式)在 Kubernetes 集群上运行的,而不是与集群并行安装的。类型如前所述是在 Kubernetes API Server 内定义的。这使得用户可以与 Kubernetes 进行交互,同时修改 VMIs。

下面的图示展示了额外的控制器和守护进程是如何与 Kubernetes 进行通信的,以及这些额外类型存储的位置:

架构

简化的架构图:

简化后的架构

3. 应用布局

集群

  1. KubeVirt 组件

    • virt-controller
    • virt-handler
    • libvirtd
  2. KubeVirt 管理的 Pods

    • VMI Foo
    • VMI Bar
  3. KubeVirt 自定义资源

    • VirtualMachine (VM) Foo -> VirtualMachineInstance (VMI) Foo
    • VirtualMachineInstanceReplicaSet (VMIRS) Bar -> VirtualMachineInstance (VMI) Bar

VirtualMachineInstance (VMI) 是表示实例基本、短暂构建块的自定义资源。在许多情况下,这个对象不会由用户直接创建,而是通过高级资源来创建。VMI 的高级资源可以是:

VirtualMachine (VM)

有状态的虚拟机,能够在保留 VM 数据和状态的情况下停止和启动。

VirtualMachineInstanceReplicaSet (VMIRS)

类似于 Pods 的 ReplicaSet,是一个由模板中定义的相似配置的短暂 VMI 组成的组。

4. 原生工作负载

KubeVirt 部署在 Kubernetes 集群之上。这意味着你可以继续运行 Kubernetes 原生工作负载,同时也能管理通过 KubeVirt 管理的 VMI。

此外:如果你可以运行原生工作负载,并且已经安装了 KubeVirt,那么你应该也能够运行基于虚拟机的工作负载。例如,应用操作员在使用集群功能管理虚拟机时,不应需要比使用普通 Pod 时更多的权限。

从安全角度来看,安装和使用 KubeVirt 不应赋予用户任何他们在原生工作负载方面尚未拥有的权限。例如,一个非特权的应用操作员绝不能通过使用 KubeVirt 功能获得对特权 Pod 的访问权限。

5. The Razor(准则)

我们热爱虚拟机,认为它们非常重要,并努力使它们在 Kubernetes 中易于使用。但比虚拟机更重要的是,我们热爱良好的设计和模块化、可重用的组件。我们经常面临一个两难问题:我们应该以最优化虚拟机的方式来解决 KubeVirt 中的问题,还是应该走一条更长的路,把这个解决方案也引入到基于 Pod 的工作负载中?

为了做出这个决策,我们提出了 KubeVirt 准则:“如果某个功能对 Pods 有用,我们不应该仅仅为虚拟机实现它。”

例如,我们曾讨论过如何将虚拟机连接到外部网络资源。最直接的方式似乎是引入 KubeVirt 特定的代码,将虚拟机附加到主机网桥上。然而,我们选择了更长的路径,即与 Multus 和 CNI 集成并加以改进。

6. 相关资料

  1. KubeVirt文档:https://kubevirt.io/user-guide/
  2. KubeVirt架构:https://github.com/kubevirt/kubevirt/blob/master/docs/architecture.md
  3. KubeVirt仓库: https://github.com/kubevirt/kubevirt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469644.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式----Ceph部署

目录 一、存储基础 1.1 单机存储设备 1.2 单机存储的问题 1.3 商业存储解决方案 1.4 分布式存储(软件定义的存储 SDS) 1.5 分布式存储的类型 二、Ceph 简介 三、Ceph 优势 四、Ceph 架构 五、Ceph 核心组件 #Pool中数据保存方式支持两种类型&…

智慧仓储物流可视化平台

通过图扑 HT 对仓储与物流流程进行动态可视化管理。实时跟踪库存状态和物流路径,优化资源配置与调度,提升运营效率及准确性,支持全流程决策优化及管理。

万字长文解读深度学习——卷积神经网络CNN

推荐阅读: 卷积神经网络(CNN)详细介绍及其原理详解 CNN笔记:通俗理解卷积神经网络 文章目录 🌺深度学习面试八股汇总🌺主要组件输入层卷积层 (Convolutional Layer)批归一化层(Batch Normalizat…

100+SCI科研绘图系列教程(R和python)

科研绘图系列:箱线图加百分比点图展示组间差异-CSDN博客科研绘图系列:箱线图加蜜蜂图展示组间数据分布-CSDN博客科研绘图系列:小提琴图和双侧小提琴图展示组间差异-CSDN博客科研绘图系列:组间差异的STAMP图的ggplot2实现-CSDN博客…

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…

招聘app开发,人才招聘、求职首要方式

随着互联网的快速发展,各种线上应用成为了大众生活中不可或缺的一部分,不管是购物、娱乐、找工作等都可以通过手机应用进行。因此,对于企业说,线上招聘app至关重要,能够快速帮助企业找到合适的人才。企业直接与求职者交…

学习方法——看差的书籍

CSAPP证明从1中午2点到下午3:40,但是还是只是推理证明而已,但是想起来了课上老师讲的东西了 还可以知道补码运算的大前提知识!!! 但是最好不要一下学这个一下子学哪个,学哪一个都不能尽情投入。…

【人工智能】Transformers之Pipeline(二十三):文档视觉问答(document-question-answering)

​​​​​​​ 目录 一、引言 二、文档问答(document-question-answering) 2.1 概述 2.2 impira/layoutlm-document-qa 2.2.1 LayoutLM v1 2.2.2 LayoutLM v2 2.2.3 LayoutXLM 2.2.4 LayoutLM v3 2.3 pipeline参数 2.3.1 pipeline对象实例化…

Python酷库之旅-第三方库Pandas(206)

目录 一、用法精讲 961、pandas.IntervalIndex.mid属性 961-1、语法 961-2、参数 961-3、功能 961-4、返回值 961-5、说明 961-6、用法 961-6-1、数据准备 961-6-2、代码示例 961-6-3、结果输出 962、pandas.IntervalIndex.length属性 962-1、语法 962-2、参数 …

【论文阅读】利用SEM二维图像表征黏土矿物三维结构

导言 在油气储层研究中,黏土矿物对流体流动的影响需要在微观尺度上理解,但传统的二维SEM图像难以完整地表征三维孔隙结构。常规的三维成像技术如FIB-SEM(聚焦离子束扫描电子显微镜)虽然可以获取高精度的3D图像,但成本…

前端入门一之ES6--面向对象、够着函数和原型、继承、ES5新增方法、函数进阶、严格模式、高阶函数、闭包

前言 JS是前端三件套之一,也是核心,本人将会更新JS基础、JS对象、DOM、BOM、ES6等知识点,这篇是ES6;这篇文章是本人大一学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。 文章目录 JS高级 ES61、面向对象1.1…

数据安全、信息安全、网络安全区别与联系

关键字: 信息安全 数据安全 网络安全 [导读] 在 “互联网 ” 被广泛提及的今天,安全问题也越来越多的受到人们关注,然而很多人对于 “信息安全”、“数据安全”、“网络安全” 的概念并不是很清楚。我们汇总了官方机构给这三者的定义&#…

Linux——简单认识vim、gcc以及make/Makefile

前言:大佬写博客给别人看,菜鸟写博客给自己看,我是菜鸟。 1、vim操作: 默认打开vim时,vim处于命令模式。(在其他模式中,Esc就能够返回命令模式) 常用的命令有: n gg:跳转到n行&…

Java反序列化之CommonsCollections2链的学习

一、前言 Apache Commons Collections 是一个著名的辅助开发库,包含了一些Java中没有的数据结构和辅助方法,不过随着Java 9 以后的版本中原生库功能的丰富,以及反序列化漏洞的影响,它也在逐渐被升级或替代。 在2015年底的common…

前端web

题目&#xff1a;制作带有下拉悬停菜单的导航栏 效果图 一、先制作标签 <body> <div id"menu"> <div id"container"> <div class"item">游戏1 <div class…

【大数据学习 | kafka高级部分】kafka中的选举机制

controller的选举 首先第一个选举就是借助于zookeeper的controller的选举 第一个就是controller的选举&#xff0c;这个选举是借助于zookeeper的独享锁实现的&#xff0c;先启动的broker会在zookeeper的/contoller节点上面增加一个broker信息&#xff0c;谁创建成功了谁就是主…

Android 开发指南:初学者入门

Android 是全球最受欢迎的移动操作系统之一&#xff0c;为开发者提供了丰富的工具和资源来创建各种类型的应用程序。本文将为你提供一个全面的入门指南&#xff0c;帮助你从零开始学习 Android 开发。 目录 1. 了解 Android 平台[1]2. 设置开发环境[2]3. 学习基础知识[3]4. 创…

漏洞挖掘 | 某医院小程序支付漏洞+越权

漏洞挖掘 | 某医院小程序支付漏洞越权 登陆后点击个人信息&#xff0c;抓包&#xff0c;放到repeter模块 修改strUserID参数可以越权查看别人信息 放intruder模块可以跑数据&#xff0c;这里有几万信息泄露 回到首页&#xff0c;点击医生咨询功能点 随便选一个需要付费的医…

MFC图形函数学习07——画扇形函数

绘制扇形函数是MFC中绘图的基本函数&#xff0c;它绘制的仍是由椭圆弧与椭圆中心连线构成的椭圆扇形&#xff0c;特例是由圆弧与圆心连线构成的圆扇形。 一、绘制扇形函数 原型&#xff1a;BOOL Pie(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4); …

基于Python的膳食健康系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…