kubervirt使用与运行策略

三、KubeVirt基本命令

3.1查看virtctl版本,说明安装成功

[root@k8s-master ~]# virtctl version

3.2创建和管理虚拟机

列出所有可用的虚拟机实例

[root@master ~]# kubectl get vmi -n <namespace>

参数-n用于指定命名空间

查看特定虚拟机实例的详细信息

[root@master ~]# kubectl describe vmi <vmi-name> -n <namespace>

删除虚拟机实例

[root@master ~]# kubectl delete vmi <vmi-name> -n <namespace>

3.3创建和管理虚拟机定义

KubeVirt中的虚拟机定义(VirtualMachine)与虚拟机实例(VirtualMachinInstance,VM)不同。虚拟机定义是一个模版,可以用来启动多个虚拟机实例

创建一个新的虚拟机定义

[root@master ~]# kubectl create -f <file>.yaml

启动由虚拟机定义创建的虚拟机实例

[root@master ~]# kubectl patch vm <vm-name> -p '{"spec":{"running":true}}' --type=merge -n <namespace>

停止虚拟机实例

[root@master ~]# kubectl patch vm <vm-name> -p '{"spec":{"running":false}}' --type=merge -n <namespace>

查看KubeVirt组件的状态

[root@master ~]# kubectl -n kubevirt get all

连接到虚拟机控制台

[root@master ~]# kubectl virt console <vmi-name> -n <namespace>

四、KubeVirt运行策略

KubeVirt对象遵循kubernetes惯例,它们通常有Spec(规范)和Status(状态)节。该规范是用户可配置的,允许用户以声明的方式指示集群所需的状态。同时,状态部分不是用户可配置的,它反映了集群中食物的实际状态。简而言之,用户编辑规范,控制器编辑状态

Running

Running字段在VM的规范中,换句话说,运行(Running)VM是用户的意图。它不能反映虚拟机的实际运行(Running)状态

RunStrategy

通过使用“RunStrategy”这个名称,最终用户清楚地知道他们在请求状态,这当然是完全独立于系统实际提供的状态的。RunStrategy有助于解决命名术语的混淆,但它碰巧也是一个枚举值。因为Running是一个布尔值,只能为真或假。我们现在能够创建更有意义的状态来适应不同的案例

目前存在四种运行策略:

◎Always:如果一个VM由于任何原因被停止,一个新的实例将被派生

◎RerunOnFailure:如果VM在错误状态下结束执行,将会产生一个新的实例。这样就解决了上面所列的第二个问题。如果用户手动停止VM,则不会生成新的实例

◎Manual:KubeVirt不会尝试启动或者停止VM。为了改变状态,用户必须从API调用start/stop/restart。在virtctl命令行客户端中也有方便的函数

◎Halted:如果VM正在运行,它将被停止,并且将保持关闭状态

高可用性

如果不提到高可用性,对运行策略的讨论就不完整。毕竟,在RerunOnFailure和Always运行策略背后的含义是:VM应该始终可用。在大多数情况下,这是完全正确的,但有一个重要的场景需要注意:如果一个节点完全失败,例如网络或者电源丢失。如果没有自动检测节点不再活动的方法,KubeVirt将不知道VM已经失败。在使用中启用了MachineHealthCheck(MHC)的IPI安装的OpenShift集群上,可以检测失败节点并重新安排运行在那里的工作负载

例:创建一个 Always运行策略的 VM

 [root@k8s-master ~]# cat vm-f.yaml

apiVersion: kubevirt.io/v1

kind: VirtualMachine

metadata:

  labels:

    kubevirt.io/vm: vm-fedora

  name: vm-fedora

spec:

  runStrategy: Always

  template:

    metadata:

      labels:

        kubevirt.io/vm: vm-fedora

    spec:

      domain:

        resources:

          requests:

            memory: 1Gi

        devices:

          disks:

          - name: containerdisk

            disk:

              bus: virtio

      volumes:

      - name: containerdisk

        containerDisk:

          image: kubevirt/fedora-cloud-container-disk-demo:latest

      - name: cloudinitdisk

        cloudInitNoCloud:

          userDataBase64: SGkuXG4=

创建、查看VM

[root@k8s-master~]# kubectl delete -f vm-fedora.yaml

[root@k8s-master ~]# kubectl get vm

[root@k8s-master ~]# kubectl get vmi

4.1容器与虚拟机的统一管理

KubeVirt 是一个基于 Kubernetes 的扩展项目,旨在实现对虚拟机(VM)和容器的统一管理。通过将虚拟机作为 Kubernetes 中的原生资源(Custom Resources),KubeVirt 使得虚拟机可以像容器一样进行管理,允许用户在同一平台上运行容器化应用和传统虚拟化工作负载。

传统的虚拟化技术(如 KVM)和容器技术(如 Docker)在管理、调度和操作方式上存在很大差异。KubeVirt 通过 Kubernetes 提供的资源调度、自动化扩展、集群管理等能力,解决了这些差异,并提供了跨虚拟机与容器的统一平台。

4.2Kubernetes 与虚拟化的结合

Kubernetes 是一个开源的容器编排平台,主要用于管理容器化应用的部署、扩展、负载均衡等。它通过一组统一的 API 让开发者和运维人员能够以声明式的方式管理应用。

虚拟化技术(如 QEMU/KVM)则提供了独立的操作系统实例,通常用于运行传统的非容器化应用。虚拟化技术与 Kubernetes 结合时,KubeVirt 充当桥梁,实现容器与虚拟机资源的统一调度。

通过在 Kubernetes 中引入虚拟机,用户能够将现有的虚拟机基础设施与新兴的容器化工作负载无缝集成,从而简化集群管理,提高资源利用率

使用 KubeVirt 管理虚拟机与容器,提供对容器化和虚拟化工作负载的统一管理

我们可以动手感受一下,先创建一个虚拟机以及一个容器

[root@k8s-master ~]# cat vm.gl.yaml

apiVersion: kubevirt.io/v1

kind: VirtualMachine

metadata:

  name: test-vm

  namespace: default

spec:

  running: false  # 保持为 false,允许手动启动

  template:

    metadata:

      labels:

        kubevirt.io/vm: test-vm

    spec:

      domain:

        cpu:

          cores: 2

        memory:

          guest: 2Gi  # 设置虚拟机的内存为 2Gi

        devices:

          disks:

            - disk:

                bus: virtio

              name: disk0

      volumes:

        - name: disk0

          containerDisk:

            image: quay.io/kubevirt/cirros-registry-disk-demo

[root@k8s-master ~]# kubectl create -f vm.gl.yaml

查看虚拟机的状态(这里我们可以想想为什么可以用kubectl直接来查看虚拟机)

[root@k8s-master ~]# kubectl get virtualmachines -n default

访问虚拟机控制台

[root@k8s-master ~]# virtctl console test-vm

创建容器应用

[root@k8s-master ~]# cat app-deployment.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx

  namespace: default

spec:

  replicas: 1

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx

        image: nginx:latest

        ports:

        - containerPort: 80

[root@k8s-master ~]# kubectl create -f app-deployment.yaml

查看容器的运行状态

[root@k8s-master ~]# kubectl get pods -n default

通过上面的示例,我们可以发现,通过 KubeVirt,你可以使用 kubectl 来管理虚拟机和容器资源。虽然 Kubernetes 本身并不支持原生的虚拟机管理,但是 KubeVirt 扩展了 Kubernetes,使其能够像管理容器一样管理虚拟机。

那如果我们没有安装KubeVirt去查看集群内是否有虚拟机会出现什么

[root@k8s-master ~]# kubectl get virtualmachines -A

系统会提示你,Kubernetes API 服务器没有找到 virtualmachines 资源类型,这就要我们安装KubeVirt服务了

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

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

相关文章

[Pro Git#3] 远程仓库 | ssh key | .gitignore配置

目录 1. 分布式版本控制系统的概念 2. 实际使用中的“中央服务器” 3. 远程仓库的理解 4. 新建远程仓库 5. 克隆远程仓库 6. 设置SSH Key 实验 一、多用户协作与公钥管理 二、克隆后的本地与远程分支对应 三、向远程仓库推送 四、拉取远程仓库更新 五、配置Git忽略…

【python因果库实战2】使用银行营销数据集研究营销决策的效果2

目录 联系方式的效应 逆概率加权&#xff1a;首次尝试 联系方式的效应 我们已经完成了大部分艰苦的工作&#xff0c;即理解数据并识别处理变量和混杂因素。现在我们可以开始使用 Causal Inference 360 的工具了。 我们将首先研究联系方式 contact 的因果效应。具体来说&…

数据结构初阶---二叉树---堆

一、树 1.树的概念 树是一种非线性的数据结构&#xff0c;由n(n≥0)个有限结点组成的一个有层次关系的集合。形状类似一棵倒挂的树&#xff0c;根朝上&#xff0c;分支向下。 根结点没有前驱结点&#xff0c;可以有n(n≥0)个后继结点。 其余结点被分为M个互不相交的集合&am…

运维 mysql、redis 、RocketMQ性能排查

MySQL查看数据库连接数 1. SHOW STATUS命令-查询当前的连接数 MySQL 提供了一个 SHOW STATUS 命令&#xff0c;可以用来查看服务器的状态信息&#xff0c;包括当前的连接数。 SHOW STATUS LIKE Threads_connected;这个命令会返回当前连接到服务器的线程数&#xff0c;即当前…

.NET6 WebAPI从基础到进阶--朝夕教育

1、环境准备 1. Visual Studio 2022 2. .NET6 平台支持 3. Internet Information Services 服务器&#xff08; IIS &#xff09; 4. Linux 服务器 【 CentOS 系统】 ( 跨平台部署使用 ) 5. Linux 服务器下的 Docker 容器&#xff08; Docker 部署使用&#xff09; …

STM32仿真——01创建工程

目录 1.需要用到的软件工具​编辑 2.第一步Proteus软件新建工程​编辑 3.第二步——stm32cubumx 4、MDK代码编写 #注意安装的过程或者使用过程使用英文&#xff0c;以防报错&#xff1b; 1.需要用到的软件工具 2.第一步Proteus软件新建工程 选中&#xff0c;默认 先布局&…

相位小数偏差(UPD)估计基本原理

PPP中的一个关键性难题在于非差模糊度固定&#xff0c;成功固定非差模糊度可以使 PPP 的收敛速度和定位精度得到显著提升 。 相位小数偏差 (UPD) 是致使相位模糊度失去整数特性的主要因素&#xff0c;精确估计并校正 UPD 是实现非差模糊度固定的重要前提&#xff0c;也是实现…

我们来编程 -- win11多jdk版本切换

题记 售前的酒喝到位了调研需求及文档整理出来了开发要入场了&#xff0c;真惨啊&#xff01;年底了&#xff0c;手里活干的好好的&#xff0c;因为flyback在项目地&#xff0c;硬是被安排进来了拥抱变化&#xff0c;我呸…不得不切换系统&#xff0c;构建代码&#xff0c;一股…

飞腾派4g版本笔记一

飞腾派4g版本开箱体验 开箱包裹内容 打开包装&#xff0c;你可以看到以下物品 一个绿联的usb3.0读卡器、sandisk的32g内存卡(太好了)飞腾派4g版本开发板带散热风扇&#xff08;通过DDR存储的丝印看到是长鑫存储&#xff0c;即为4g内存版本&#xff09;输出为12v 3A的电源适配…

从零用java实现 小红书 springboot vue uniapp (2)主页优化

前言 移动端演示 http://8.146.211.120:8081/#/ 前面的文章我们基本完成了主页的布局 今天我们具体的去进行实现 并且分享我开发时遇到的问题 首先先看效果 java仿小红书主页 实现效果为 1.顶端全屏切换 2.上划加载更多 3.下拉当前页整体刷新 顶端全屏切换我们选择 gui-switch…

3D 生成重建031-One-2-3-45多视图+Neus生成3D

3D 生成重建031-One-2-3-45多视图Neus生成3D* 文章目录 0 论文工作论文方法2 实验结果 0 论文工作 单图像三维重建是一项重要但极具挑战性的任务&#xff0c;需要对现实世界有深入的了解。许多现有的方法通过在二维扩散模型的引导下优化神经辐射场来解决这个问题&#xff0c;但…

JAVA:访问者模式(Visitor Pattern)的技术指南

1、简述 访问者模式(Visitor Pattern)是一种行为型设计模式,允许你将操作分离到不同的对象中,而无需修改对象本身的结构。这种模式特别适合复杂对象结构中对其元素进行操作的场景。 本文将介绍访问者模式的核心概念、优缺点,并通过详细代码示例展示如何在实际应用中实现…

【C++】数的性质问题分析与优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目解析与分析题目描述题目分析 &#x1f4af;我的解法与详细解读初始代码实现解法分析 &#x1f4af;老师解法与其改进思路老师代码实现改进与优势 &#x1f4af;对比分析…

让文案生成更具灵活性/chatGPT新功能canvas画布编辑

​ ​ OpenAI最近在2024年12月发布了canvas画布编辑功能&#xff0c;这是一项用途广泛的创新工具&#xff0c;专为需要高效创作文案的用户设计。 无论是职场人士、学生还是创作者&#xff0c;这项功能都能帮助快速生成、优化和编辑文案&#xff0c;提升效率的同时提高内容质量…

分布式事物XA、BASE、TCC、SAGA、AT

分布式事务——Seata 一、Seata的架构&#xff1a; 1、什么是Seata&#xff1a; 它是一款分布式事务解决方案。官网查看&#xff1a;Seata 2.执行过程 在分布式事务中&#xff0c;会有一个入口方法去调用各个微服务&#xff0c;每一个微服务都有一个分支事务&#xff0c;因…

深度学习——激活函数、损失函数、优化器

深度学习——激活函数、损失函数、优化器 1、激活函数1.1、一些常见的激活函数1.1.1、sigmoid1.1.2、softmax1.1.3、tanh1.1.4、ReLU1.1.5、Leaky ReLU1.1.6、PReLU1.1.7、GeLU1.1.8、ELU 1.2、激活函数的特点1.2.1、非线性1.2.2、几乎处处可微1.2.3、计算简单1.2.4、非饱和性1…

opencv-python的简单练习

1、读取一张彩色图像并将其转换为灰度图。 import cv2 img cv2.imread("../1iamge/a.jpg") # 灰度化 img_gray cv2.cvtColor(img, cv2.COLOR_BGRA2GRAY) cv2.imshow(img, img) cv2.imshow(img_gray, img_gray) cv2.waitKey(0) 2、编写程序&#xff0c;读取一张彩色…

Java、鸿蒙与嵌入式开发:技术选择与职业发展分析

在当今快速发展的科技领域中&#xff0c;Java、鸿蒙和嵌入式开发代表着不同的技术方向和职业机遇。每个方向都有其独特的市场价值和发展前景&#xff0c;让我们深入分析这三个领域的特点、发展趋势和职业规划。 Java开发方向已经发展了二十多年&#xff0c;仍然在软件开发领域…

【mybatis】缓存

目录 1. mybatis的运行 1.1 引言 1.2 具体运行&#xff1a; 1.3 sqlSession 介绍local catch 2. 缓存 2.1 概念 2.2 使用缓存的原因 2.3 什么样的数据能使用缓存 3. Mybatis缓存 3.1 一级缓存 3.1.1 测试一级缓存 3.1.2 缓存失效的四种情况 $1 sqlSession不同 $…

前端成长之路:CSS元素显示模式

元素显示模式 网页中的标签非常的多&#xff0c;在不同的地方会使用到不同类型的标签&#xff0c;了解这些标签的特点可以更好的布局我们的网页。 元素显示模式就是元素&#xff08;标签&#xff09;按照什么方式进行显示&#xff0c;比如&#xff1a;div标签会自己独占一行&a…