k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
文章目录
- 前言
- VPA简介
- 简单理解
- 详细解释
- VPA的优缺点
- 优点
- 1.自动化资源管理
- 2.资源优化
- 3.性能和稳定性提升
- 5.成本节约
- 6.集成性和灵活性
- 缺点
- 1.Pod 重启影响可用性
- 2.与 HPA 冲突
- 3.资源监控和推荐滞后:
- 4.实现复杂度:
- 核心概念
- Resource Requests 和 Limits
- 自动调节
- VPA 的工作原理
- VPA 组件
- VPA 使用场景
- 应用
- 环境
- 1.部署metrics-server及VPA
- (1)部署metrics-server
- (2)升级openssl(所有节点)
- (3)部署VPA
- 2.VPA策略
前言
有任何疑问或不懂的地方均可评论或私信,欢迎交流
VPA简介
官方链接
https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler
简单理解
与HPA类似,区别在于HPA自动控制的pod副本数量
而VPA则自动控制的是CPU 和 内存 的requests,从而允许在节点上进行适当的调度,以便为每个 Pod 提供适当的资源。
注: 不能与HPA(Horizontal Pod Autoscaler )一起使用
这个是博主写的有关HPA的博客,有兴趣的可以看看
链接: HPA详细解释与应用
详细解释
在 Kubernetes(k8s)中,Vertical Pod Autoscaler(VPA)是一种自动调节 Pod 中容器资源请求(CPU 和内存)的工具。它可以根据 Pod 的实际使用情况自动调整这些资源请求,以确保应用程序具有足够的资源运行,并同时避免资源的浪费。
VPA的优缺点
优点
1.自动化资源管理
简化运维:VPA 自动调整 Pod 的资源请求,减少手动调整的工作量。
动态响应:能实时根据实际资源使用情况调整请求,适应负载变化。
2.资源优化
避免资源浪费:确保 Pod 只请求所需的资源,降低不必要的资源分配。
提高资源利用率:通过优化资源请求,增加集群中可用资源的数量,提高整体资源利用率。
3.性能和稳定性提升
防止资源不足:自动增加资源请求,确保应用在高负载时也能正常运行。
优化性能:通过合理的资源配置,确保应用程序性能得到保障。
5.成本节约
降低运营成本:通过精准的资源配置,减少过度配置带来的成本,提高资源利用效率。
6.集成性和灵活性
兼容性好:VPA 可以与 Kubernetes 中的其他工具(如 HPA)一起使用,以实现全面的自动扩展策略。
可配置性强:提供多种更新策略(如 Auto、Recreate、Initial),适应不同的应用场景。
缺点
1.Pod 重启影响可用性
重启开销:资源请求的更新通常需要重启 Pod,这可能会导致服务短暂不可用,影响用户体验。
滚动更新问题:在滚动更新过程中,如果频繁调整资源请求,可能会导致更新过程复杂化。
2.与 HPA 冲突
配置复杂
同时使用 VPA 和 Horizontal Pod Autoscaler (HPA) 时,可能会产生冲突,需要谨慎配置和管理。
负载模式不同
HPA 和 VPA 针对不同的负载模式(水平扩展 vs. 垂直扩展),混用时需要综合考虑应用负载特性。
3.资源监控和推荐滞后:
数据滞后 :VPA 基于历史资源使用数据做出推荐,可能存在一定的滞后性,无法实时反映最新的负载变化。
推荐准确性:在负载波动剧烈的情况下,推荐值可能不够准确,导致资源配置不够理想。
4.实现复杂度:
依赖数据质量:VPA 的推荐依赖于准确的资源使用数据,集群监控和数据收集的质量对 VPA 的效果有直接影响。
维护复杂度:需要对 VPA 本身进行维护和监控,确保其正常运行和推荐的准确性。
核心概念
Resource Requests 和 Limits
Requests
容器启动时所需的最小资源量,Kubernetes 会基于 requests 来做调度决策。
Limits
容器能使用的最大资源量,防止单个容器使用过多资源。
自动调节
Vertical Scaling:不同于水平扩展(Horizontal Scaling)通过增加 Pod 数量来应对负载,垂直扩展(Vertical Scaling)是调整单个 Pod 的资源配额。
VPA 的工作原理
监控:VPA 通过监控 Pod 的实际资源使用情况来确定是否需要调整资源请求。
推荐:基于历史数据和当前使用情况,VPA 会生成资源请求的推荐值。
更新:VPA 可以自动更新 Pod 的资源请求,触发 Pod 重启使配置生效。
更新策略可以配置为以下几种:
Auto:自动更新 Pod。
Recreate:删除并重新创建 Pod。
Initial:只在 Pod 初始创建时设置资源请求。
VPA 组件
Recommender:收集资源使用数据并生成资源请求的推荐值。
Updater:负责执行资源请求的更新,可以根据策略决定是否重启 Pod。
Admission Controller:在 Pod 创建和更新时应用资源请求的推荐值。
VPA 使用场景
应用负载变化:适合那些资源需求动态变化的应用。
节省成本:通过合理配置资源请求和限制,避免资源浪费。
提高稳定性:确保应用有足够的资源应对高负载情况。
应用
环境
虚拟机
| Ip | 主机名 | cpu | 内存 | 硬盘 |
|---|---|---|---|---|
| 192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
| 192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
| 192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
版本 centos7.9
已部署k8s-1.27
1.部署metrics-server及VPA
(1)部署metrics-server
master上操作
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
kubelet 证书需要由集群证书颁发机构签名
(或者通过向 Metrics Server 传递参数 --kubelet-insecure-tls 来禁用证书验证)。
更改文件
vim high-availability-1.21+.yaml
149行添加

解释
因为是虚拟机环境,这条命令是允许 kubelet 使用不安全的 TLS 连接,生产环境不建议使用,这里是便于快速部署和测试已看到效果。
kubectl apply -f high-availability-1.21+.yaml
watch kubectl get pods -n kube-system
耐心等待,如果一直起不来就先删除pod再重启个节点docker。

kubectl top nodes

kubectl top pods -n kube-system

这里就部署好了
(2)升级openssl(所有节点)
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y openssl-devel openssl11 openssl11-devel
检查下载的 OpenSSL新库版本
openssl11 version

查看旧版本路径
which openssl

查看新版本路径
which openssl11

删除系统默认版本,并创建一个软连接指向新版本
rm -rf `which openssl`
ln -s /usr/bin/openssl11 /usr/bin/openssl
查看默认版本,可以看到已经是新版本了
openssl version

(3)部署VPA
master节点
mkdir vpa
cd vpa
git clone https://github.com/kubernetes/autoscaler.git
cd autoscaler/vertical-pod-autoscaler/
ls hack/
bash ./hack/vpa-up.sh
cd ..
kubectl get pods -n kube-system
没有running就等一会

这样就好了
2.VPA策略
在VPA中,updateMode 是一个重要的配置选项,它决定了VPA如何应用其提供的资源建议。根据不同的设置,VPA可以采取不同的策略来更新Pod的资源配置:
Off:
VPA不会应用任何资源推荐,只是收集和显示数据。
Initial:
VPA只会在Pod创建时应用资源推荐。一旦Pod启动,即使后续有新的资源推荐,也不会再进行调整。
Recreate:
当VPA生成新的资源推荐时,它会终止当前的Pod并重新创建一个新的Pod,新Pod将采用最新的资源推荐。这种方式会导致服务短暂中断,但能确保立即应用新的资源设置。
Auto:
这是默认模式。在这种模式下,VPA会尝试在线调整运行中的Pod的资源请求和限制,而无需重启Pod。如果无法在线调整(例如,由于内核或Kubernetes版本的限制),则会选择重新创建Pod。
由于篇幅过长,关于模式的演示会单独出(水)一篇博客
相关文章:
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
文章目录 前言VPA简介简单理解详细解释VPA的优缺点优点1.自动化资源管理2.资源优化3.性能和稳定性提升5.成本节约6.集成性和灵活性 缺点1.Pod 重启影响可用性2.与 HPA 冲突3.资源监控和推荐滞后:4.实现复杂度: 核心概念Resource Requests 和 Limits自动调…...
【OS】相关知识点收集
1 页面置换 页面置换算法是在计算机内存管理中用于决定哪些页面应该被替换出内存,以便为新的页面腾出空间的策略。以下是关于页面置换算法的详细回答,参考了多篇相关文章的信息。 1. 页面置换算法概述 页面置换算法主要应用于在存储体系当中ÿ…...
如何开发高效服务(C++ )
在 C 开发高效服务器时,常用的开发模式和设计模式能够帮助你构建高效、可扩展和可维护的服务器。以下是一些常见的模式和设计模式: 1. 并发和并行编程模型 1.1 Reactor 模式 Reactor 模式是一种事件驱动设计模式,广泛用于高性能服务器编程…...
STM32实现多级菜单界面显示
1、main函数中,while循环之前 MenuStruct menu[30] //定义多级菜单结构体数组{{0,0,0,1,show0}, //第一个元素表示索引号,第二个元素表示该按键按下后要返回的界面,第三个元素表示该按键按下后要切换的菜单条目界面,第四个元素…...
Qt事件处理和传递流程
事件系统的概述 事件的类型 Qt 支持多种事件类型,每种类型代表不同的用户交互或系统事件。常见的事件类型包括: 输入事件:如鼠标事件(QMouseEvent)、键盘事件(QKeyEvent)。窗口事件ÿ…...
基于STM32移植U8g2图形库——OLED显示(HAL库)
文章目录 一、U8g2简介1、特点2、U8g2的使用步骤 二、I2C相关介绍1、I2C的基本原理2、I2C的时序协议 三、OLED屏的工作原理四、汉字点阵显示原理五、建立STM32CubeMX工程六、U8g2移植1、U8g2源码2、移植过程 七、代码编写1、参考博主实现的U82G的demo例程(1…...
C语言概述与历史
引言 C语言是一门历史悠久且影响深远的编程语言。它不仅为后继的许多编程语言奠定了基础,同时因其高效性和灵活性在系统编程和嵌入式开发领域得到了广泛应用。本篇文章将全面介绍C语言的起源与发展、设计目标与理念,以及C语言的标准演化历程,…...
钉钉Stream模式推送程序环境部署
python3.10版本需要openssl1.1.1及以上版本 参考链接:https://blog.csdn.net/weixin_42806458/article/details/110678710 wget https://www.openssl.org/source/openssl-1.1.1q.tar.gz unzip openssl-1.1.1q.tar.gz cd openssl-1.1.1q ./config --prefix/usr/loc…...
c# 二维图形绘制实践
1.等边三角形 1.1 概述 1.2 代码 using System; using System.Drawing; using System.Windows.Forms;public partial class TriangleForm : Form {public TriangleForm(){//InitializeComponent();// 确保窗体大小足够大,以容纳三角形 this.ClientSize new Siz…...
Nvidia TensorRT系列01-TensorRT的功能1
Nvidia TensorRT系列01-TensorRT的功能1 B站:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 博客:肆十二-CSDN博客 问答:(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com) C和Python API TensorRT的API同时支持C和Pyth…...
Vatee万腾平台:创新科技,助力企业腾飞
在全球化竞争日益激烈的今天,企业如何借助科技力量实现转型升级,已成为摆在众多企业家面前的重大课题。Vatee万腾平台凭借其卓越的创新科技和专业的服务能力,成为众多企业实现腾飞的得力助手。 一、创新科技,引领企业前行 Vatee万…...
搭建k8s集群报错unknown command “\u00a0“ for “kubeadm init“
搭建k8s报错unknown command “\u00a0” for “kubeadm init” 网上搜了一下,是因为复制过来的命令前面包含了空格,将复制的命令放到idea可以清楚看到几个命令前面有空格,删除掉就好了,记录一下...
【数据结构】三路快速排序
1. 简介 传统快速排序用的是双路快速排序,即将大于基准值的部分放到基准值右侧,小于基准值的部分放到基准值左侧,但是这种算法面对过多的重复数据的数组,时间复杂度会增多,于是就有了三路快速排序的思想,其…...
中国菜刀,蚁剑,哥斯拉,冰蝎的流量特征区别
中国菜刀、蚁剑、哥斯拉、冰蝎这四种Webshell连接工具的流量特征各有区别,以下是它们之间的主要差异: 中国菜刀(CaiDao) 流量特征: 请求包: UA头可能伪装为百度、火狐等浏览器的User-Agent。请求体中存在…...
华为OD刷题C卷 - 每日刷题32(执行任务赚积分,计算三叉搜索树的高度)
1、(执行任务赚积分): 这段代码是解决“执行任务赚积分”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算在有限的时间内,处理任务可以获得的最多积分。 main方法首先读取任务…...
QT系列教程(11) TextEdit实现Qt 文本高亮
文本高亮 对于textedit里录入的部分单词我们可以实现高亮,实现高亮主要依赖于QSyntaxHighlighter。 我们先创建一个Qt Application类,类名MainWindow, 然后新增一个C类,类名为MySyntaxHighlighter。 #ifndef MYSYNTAXHIGHLIGHTER_H #define …...
蓝队-溯源技巧
溯源技巧 大致思想 通常情况下,接到溯源任务时,获得的信息如下 攻击时间 攻击 IP 预警平台 攻击类型 恶意文件 受攻击域名/IP其中攻击 IP、攻击类型、恶意文件、攻击详情是溯源入手的点。 通过攻击类型分析攻击详情的请求包,看有没有攻击者…...
【5】JDK、JRE和JVM的区别与联系
JDK、JRE和JVM的区别与联系 Java是一种广泛使用的编程语言,它的跨平台特性得益于Java虚拟机(JVM)。然而,在Java的世界里,JDK、JRE和JVM这三个术语常常让人感到困惑。本文将阐述它们各自的功能,以及它们是如…...
【DevOps】Logstash详解:高效日志管理与分析工具
在现代软件开发和运维过程中,日志管理与分析是至关重要的环节。日志可以帮助我们追踪系统行为、诊断问题、优化性能以及确保安全合规。Logstash,作为ELK Stack(Elasticsearch、Logstash、Kibana)的核心组件之一,是一个…...
Vue3 之 Pinia 核心概念(八)
核心概念 State:这是你的应用程序的状态,是一个响应式的对象。 Getters:类似于 Vuex 中的 getters,它们是基于 state 的计算属性。 Actions:类似于 Vuex 中的 mutations 和 actions,它们用于改变 state。但…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
