KubeVirt 进阶:设置超卖比、CPU/MEM 升降配、在线磁盘扩容

前两篇文章,我们分别介绍 Kubevirt 的安装、基本使用 以及 将 oVirt 虚拟机迁移到 KubeVirt,我们留了两个ToDo,一个是本地磁盘的动态分配,一个是固定 IP 的需求,本期我们先解决第一个,本地磁盘的动态分配。

使用 OpenEBS-LVM 替换 local-storage

OpenEBS-LVM 对比 local-storage,主要新增了容量限额、动态分配PV、resize 功能,本文不做过多介绍,后面会单独讲 。

创建 sc 时,注意两个点,开启卷扩展,allowVolumeExpansion: true,卷绑定方式选择延迟绑定,volumeBindingMode: WaitForFirstConsumer

进阶功能介绍

设置超卖比[1]

kubectl -n kubevirt edit kubevirts.kubevirt.io kubevirt

...
spec:configuration:developerConfiguration:cpuAllocationRatio: 2 # CPU 超卖2倍memoryOvercommit: 200 # 内存超卖2倍
...

示例,设置虚拟机规格为 8c16g,不声明 Request

...spec:domain:cpu:cores: 8memory:guest: 16Gi
...

创建成功后, 查看 Pod 的 Request 值,发现是设置值的1/2 ,符合预期

      requests:cpu: "4"devices.kubevirt.io/kvm: "1"devices.kubevirt.io/tun: "1"devices.kubevirt.io/vhost-net: "1"ephemeral-storage: 50Mmemory: 8506Mi

登录虚拟机查看,为 8c16g,符合预期

如果声明了 Request 值,则优先走 Request 值

CPU/MEM 升配

修改 CPU/MEM 值, 重启 VM 即可

virtctl restart <vmi>

Kubevirt 也支持热升配[2],不停机,但有些限制,比如内核版本,存储读写模式等,后续实践后分享

磁盘在线扩容[3]

开启磁盘扩容功能

kubectl -n kubevirt edit kubevirts.kubevirt.io kubevirt

spec:configuration:developerConfiguration:featureGates:- ExpandDisks

查看当前数据盘大小,为500Gi

在线扩容到 600G 步骤, 手动修改关联 PVC 的大小即可, openebs-lvm 会自动扩容

...
spec:resources:requests:storage: "600Gi"

登录服务器,扩容文件系统

resize2fs /dev/vdb # ext4 文件系统,数据盘为 vdb

固定 IP、设置亲和性[4]

因为暂时还没实现固定 IP, 但是担心 虚拟机重启, IP 发生改变,对业务产生影响,所以暂时,指定 Node 进行分配 VM

从指定 的 Node 上选择 VMI IP:

# 查看 Node 分配的 block
kubectl  get blockaffinities.crd.projectcalico.org
# 挑选一个 没有分配的 IP 
calicoctl ipam show --ip=$(ip_addr)
# 指定 Pod IP
...
spec:template:metadata:annotations:cni.projectcalico.org/ipAddrs: '["pod-ip"]'

指定 Node 亲和性

...spec:nodeSelector:kubernetes.io/hostname: "nodename"
...

VM 完整 Yaml 文件如下:

apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:labels:kubevirt.io/vm: <vmi-name>name: <vmi-name>
spec:running: falsetemplate:metadata:labels:kubevirt.io/vm: <vmi-name>annotations:cni.projectcalico.org/ipAddrs: '["pod-ip"]'spec:nodeSelector:kubernetes.io/hostname: "nodename"domain:cpu:cores: 8memory:guest: 16Gidevices:disks:- disk:bus: virtioname: datavolumedisk1-sys- disk:bus: virtioname: datavolumedisk1-datainterfaces:- name: defaultbridge: {}#resources:#  requests:#    memory: 8Ginetworks:- name: defaultpod: {}volumes:- dataVolume:name: demo-1-sysname: datavolumedisk1-sys- dataVolume:name: demo-1-dataname: datavolumedisk1-datadataVolumeTemplates:- metadata:name: demo-1-sysspec:storage:storageClassName: openebs-lvmaccessModes:- ReadWriteOnceresources:requests:storage: 80Gisource:http:url: <img_url>- metadata:name: demo-1-dataspec:storage:storageClassName: openebs-lvmaccessModes:- ReadWriteOnceresources:requests:storage: 500Gisource:blank: {}

参考链接:

[1] Node overcommit:https://kubevirt.io/user-guide/compute/node_overcommit/#node-overcommit

[2] CPU Hotplug:https://kubevirt.io/user-guide/compute/cpu_hotplug/#cpu-hotplug

​ Memory Hotplug:https://kubevirt.io/user-guide/compute/memory_hotplug/#memory-hotplug

[3] disk expansion https://kubevirt.io/user-guide/storage/disks_and_volumes/#disk-expansion

[4] Node assignment https://kubevirt.io/user-guide/compute/node_assignment/#node-assignment

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

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

相关文章

自动化脚本本地可执行但是Jenkins上各种报错怎么解决

作者碎碎念&#xff1a; 测试环境 Jenkinsdockerpythonunittest&#xff0c; 测试问题&#xff1a;本人在写关于SAP4Me网站的自动化脚本时遇到一个问题 本地怎么都跑的通 但是一上Jenkins会出现各种各样的问题 因为在Jenkins里面脚本是放在docker环境里面跑的 所以环境的差异…

TaskBuilder前端组件简介

3.3.3.1前端组件的分类 前端页面是由众多组件层层嵌套构成的&#xff0c;这些组件是任讯信息自主研发的一套前端UI组件&#xff0c;称为tfp组件&#xff0c;这些组件根据其功能和特点又分为几大类&#xff0c;它们的继承关系如下图所示&#xff1a; 从图中可知&#xff0c;所…

linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

前言 今天在使用linux的时候&#xff0c;使用上下键想翻出历史命令时&#xff0c;却出现[[A[[A[[A[[B^[[B这种东东&#xff0c;而tab键补全命令的功能也无法使用。最终发现是由于当前用户使用的shell是/bin/sh的原因。 解决方法 运行以下命令&#xff0c;将默认 shell 设置为…

FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )

以Xilinx 公司Virtex-II 系列FPGA 为例&#xff0c;其基本结构由下图所示。它是主要由两大部分组成&#xff1a;可编程输入/输出&#xff08;Programmable I/Os&#xff09;部分和内部可配置&#xff08;Configurable Logic&#xff09;部分。 可编程输入/输出&#xff08;I/Os…

《零基础Go语言算法实战》【题目 1-11】格式化字符串

《零基础Go语言算法实战》 【题目 1-11】格式化字符串 在 Go 语言中&#xff0c;找到使用变量格式化字符串而不打印值的简单方法。 【解答】 在 Go 语言中&#xff0c;在不打印值的情况下进行格式化的最简单方法是使用 fmt.Sprintf() 函数&#xff0c; 它返回一个格式化的…

Virtualbox7.1.4安装Proxmox

准备工作 有以下两个大步骤&#xff1a; 第一步、安装Virtualbox 最新版本安装过程遇到问题参考&#xff1a; VirtualBox新版本报错 Invalid installation directory解决方案_virtualbox invalid installation directory-CSDN博客 第二步、下载Proxmox 官网下载地址&…

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…

yum换源

背景描述 源&#xff1a;阿里云&#xff1a; 系统&#xff1a;centos7 https://developer.aliyun.com/mirror/其他参考地址&#xff1a; https://developer.aliyun.com/mirror/centos?spma2c6h.13651102.0.0.3e221b11UchtP5https://developer.aliyun.com/mirror/centos-vau…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot&#xff08;1&#xff09;基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot&#xff08;2&#xff09;解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot&#xff08;3&#xff09;教你手工搭建Spring Boot项目纯手工玩法…

AIDD-人工智能药物设计-人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题

mLife | 人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题 优化酶的热稳定性对于蛋白质科学和工业应用至关重要。目前&#xff0c;通过&#xff08;半&#xff09;理性设计和随机诱变方法可以较为准确地设计多个增强酶热稳定性的单点突变。但当组合多个突变时&#…

Apache Hadoop YARN框架概述

一、YARN产生和发展简史 1.1背景 数据、程序、运算资源&#xff08;内存、CPU&#xff09;三者组在一起&#xff0c;才能完成数据的计算处理过程。在单机环境下&#xff0c;三者之间协调配合不是太大问题。为了应对海量数据的处理场景&#xff0c;Hadoop软件出现并提供了分布…

江科大STM32入门——UART通信笔记总结

wx&#xff1a;嵌入式工程师成长日记 1、简介 简单双向串口通信有两根通信线(发送端TX和接收端RX)TX与RX要交叉连接当只需单向的数据传输时&#xff0c;可以只接一根通信线当电平标准不一致时&#xff0c;需要加电平转换芯片 传输模式&#xff1a;全双工&#xff1b;时钟&…

KG-CoT:基于知识图谱的大语言模型问答的思维链提示

一些符号定义 知识图谱实体数量&#xff1a; n n n 知识图谱中关系类型数量&#xff1a; m m m 三元组矩阵&#xff1a; M ∈ { 0 , 1 } n n m \textbf{M} \in \{0, 1\}^{n \times n \times m} M∈{0,1}nnm&#xff0c; M i j k 1 M_{ij}^k 1 Mijk​1则说明实体 i i i和实…

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题&#xff0c;可以利用Github Action将需要的镜像转存到阿里云私有仓库&#xff0c;然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址&#xff1a;使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…

AIGC 新浪潮|Story CN meetups 将于 1 月 10-14 日举办!

随着 Web3 行业发展进入全新阶段&#xff0c;与生成式人工智能&#xff08;AIGC&#xff09;技术融合正在创造潜力新星项目。也是目前的互联网生态下&#xff0c;任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容&#xff0c;带来了用户生成内容&#xff08;UGC&am…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8&#xff08;You Only Look Once&#xff09;和OpenCV实现车道线和车辆检测&#xff0c;目标是创建一个可以检测道路上的车道并识别车辆的系统&#xff0c;并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

黑马跟学.苍穹外卖.Day04

黑马跟学.苍穹外卖.Day04 苍穹外卖-day04课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常…

SOLID原则学习,开闭原则

文章目录 1. 定义2. 开闭原则的详细解释3. 实现开闭原则的方法4. 总结 1. 定义 开闭原则&#xff08;Open-Closed Principle&#xff0c;OCP&#xff09;是面向对象设计中的五大原则&#xff08;SOLID&#xff09;之一&#xff0c;由Bertrand Meyer提出。开闭原则的核心思想是…

filebeat、kafka

elk的架构 es数据库&#xff1a;非关系型数据库&#xff0c;json格式 logstash&#xff1a;收集日志 kibana&#xff1a;图形化的工具 ↓ 以上三种结合起来即为日志收集系统 filebeat 作用&#xff1a;filebeat是一款轻量级的日志收集工具&#xff0c;不依赖java环境&…

Qt重写webrtc的demo peerconnection

整个demo为&#xff1a; 可以选择多个编码方式&#xff1a; cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…