当前位置: 首页 > news >正文

12-k8s-HPA自动扩缩容

文章目录

    • 一、k8s弹性伸缩类型
    • 二、HPA原理
    • 三、metrics-server插件
    • 四、创建nginx提供负载测试
    • 五、部署HPA

master操作即可

一、k8s弹性伸缩类型

  1. Cluster-Autoscale: 集群容量(node数量)自动伸缩,跟自动化部署相关的,依赖iaas的弹性伸缩,主要用于虚拟机容器集群
  2. Vertical Pod Autoscaler: 工作负载Pod垂直(资源配置)自动伸缩,如自动计算或调整deployment的Pod模板limit/request,依赖业务历史负载指标
  3. Horizontal-Pod-Autoscaler: 工作负载Pod水平自动伸缩,如自动scale deployment的replicas,依赖业务实时负载指标

二、HPA原理

HPA在k8s中也由一个controller控制,controller会间隔循环HPA,检查每个HPA中监控的指标是否触发伸缩条件,默认的间隔时间为15s。一旦触发伸缩条件,controller会向k8s发送请求,修改伸缩对象(statefulSet、replicaController、replicaSet)子对象scale中控制pod数量的字段。k8s响应请求,修改scale结构体,然后会刷新一次伸缩对象的pod数量。伸缩对象被修改后,自然会通过list/watch机制增加或减少pod数量,达到动态伸缩的目的。

三、metrics-server插件

  1. 概念:用来收集K8s集群中的资源使用情况。每15秒进行一次数据采集(可以通过-horizontal-pod-autoscaler-sync-period修改查询metrics的资源使用情况),占用资源少,每个Node占用1 mili core的CPU和2 MB内存,目前只能对CPU和内存进行监控

  2. 下载yaml文件:wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml

  3. 修改yaml文件配置:vi components.yaml

    1. 注释- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname在底下添加- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP    # node address类型的优先权设置- --kubelet-insecure-tls    # 取消安全验证 
    2. 注释image: registry.k8s.io/metrics-server/metrics-server:v0.6.3在底下添加image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.1
    
  4. 部署:kubectl apply -f components.yaml

  5. 查看pod:kubectl get pod -n kube-system
    在这里插入图片描述

  6. 查看资源使用情况:

    1)kubectl top node
    在这里插入图片描述

    2)kubectl top pod -n kube-system

    ps:查看全部空间的命令为kubectl top pod --all-namespaces
    在这里插入图片描述

四、创建nginx提供负载测试

  1. 创建yaml:vi /opt/pod-controller.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:name: pod-controllerlabels:controller: deploy 
    spec:replicas: 1selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latestports:- name: nginx-portcontainerPort: 80protocol: TCPresources: # 要设置每个容器最低使用的CPU,不然测试不出效果requests:cpu: "0.1"
    
  2. 创建pod:kubectl apply -f /opt/pod-controller.yaml

  3. 暴露端口:kubectl expose deployment pod-controller --name=nginx-service --type=NodePort --port=80 --target-port=80

  4. 查看端口:kubectl get svc
    在这里插入图片描述

  5. 访问:http://192.168.248.11:31409/

五、部署HPA

  1. 新建pod-hpa.yaml:vi /opt/pod-hpa.yaml

    ps:也可以直接设置控制器的资源限制:kubectl autoscale deploy 控制器 --cpu-percent=3 --min=1 --max=10

    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:                                 name: pod-hpa                             # hpa的名称labels:controller: hpa                         # 给hpa打标签
    spec:minReplicas: 1                            # 缩容最小Pod数量maxReplicas: 10                           # 扩容最大Pod数量targetCPUUtilizationPercentage: 3         # 为了便于测试,这里设置CPU使用率警戒线为3%scaleTargetRef:                           # 指定要控制的Deployment的信息apiVersion: apps/v1kind: Deploymentname: pod-controller
    
  2. 创建pod:kubectl apply -f /opt/pod-hpa.yaml

  3. 查看HPA: kubectl get hpa
    在这里插入图片描述

  4. 查看服务pod个数:kubectl get deploy pod-controller -o wide
    在这里插入图片描述

  5. 使用postman测压工具不断访问:http://192.168.248.11:31409/
    在这里插入图片描述

相关文章:

12-k8s-HPA自动扩缩容

文章目录 一、k8s弹性伸缩类型二、HPA原理三、metrics-server插件四、创建nginx提供负载测试五、部署HPA master操作即可 一、k8s弹性伸缩类型 Cluster-Autoscale: 集群容量(node数量)自动伸缩,跟自动化部署相关的,依赖iaas的弹性伸缩,主要用…...

从十月稻田,看大米为何能卖出200亿市值?

国无农不稳,民无粮不安。新时代的农村农民,需要现代化的农业作依托,而在农业现代化的过程中,品牌化、数字化成为至关重要的一环。 金秋十月,从南到北,从东到西,中国农村的每一块土地都洋溢着丰…...

功能集成,不占空间,同为科技TOWE嵌入式桌面PDU超级插座

随着现代社会人们生活水平的不断提高,消费者对生活质量有着越来越高的期望。生活中,各式各样的电气设备为我们的生活带来了便利,在安装使用这些用电器时,需要考虑电源插排插座的选择。传统的插排插座设计多暴露于空间之中&#xf…...

使用pdf.js预览pdf文件时如何兼容chrome66版本

最近在做一个需求,在PC端实现预览pdf文件的功能,但是要最低兼容chrome的66版本,因为公司用的chrome浏览器最低版本就是66版本。 现在下载PDF.js(链接:https://mozilla.github.io/pdf.js/) 下载下来的版本是…...

一篇文章讲明白double、float丢失精度的问题

1.背景 1.10.1 1.2000000000000002 发现上面计算的值竟然和数学计算不一致 2. 问题 计算机是通过二进制计算的,如果我们在二进制的视角来看待上面问题,就很容易发现问题了。 例如:把「0.1」转成二进制的表示,然后还原成十进制&…...

Day 2 Qt

#include "my_widget.h" #include "ui_my_widget.h"My_Widget::My_Widget(QWidget *parent): QWidget(parent), ui(new Ui::My_Widget) {ui->setupUi(this);//窗口的相关设置 // this -> resize(800,500);this -> setWindowTitle("QQ聊天…...

ArmSoM-W3之RK3588 MPP环境配置

1. 简介 瑞芯微提供的媒体处理软件平台(Media Process Platform,简称 MPP)是适用于瑞芯微芯片系列的 通用媒体处理软件平台。该平台对应用软件屏蔽了芯片相关的复杂底层处理,其目的是为了屏蔽不 同芯片的差异,为使用者…...

【C++ 拷贝构造函数详解】

在 C 编程中,拷贝构造函数是一个重要的概念,用于创建一个对象的副本。拷贝构造函数允许你在不改变原始对象的情况下创建一个新的对象,这在很多情况下非常有用。在本篇博客中,我们将详细讨论 C 拷贝构造函数的用法和实现。 什么是…...

[计算机提升] 用户和用户组

1.1 用户和用户组 1.1.1 用户 用户账户是计算机操作系统中用于标识和管理用户身份的概念。 每个用户都拥有一个唯一的用户账户,该账户包含用户的登录名、密码和其他与用户身份相关的信息。 用户账户通常用于验证用户身份,并授权对系统资源的访问权限。…...

开路、断路和短路区别

文章目录 开路和断路击穿电源短路、用电器短路、对地短路和对电源短路 开路和断路 开路和断路是电路中两种用于描述电流流动情况的状态。 两者易混淆,常被混淆使用,但是它们还是有所不同。 开路表示电路中存在一个断链,电流无法从一个点流到…...

springBoot web开发自动配置和默认效果

web开发自动配置和默认效果 自动配置默认配置 自动配置 绑定了配置文件的一堆配置项 1、springMVC的所有配置 spring.mvc 2、Web场景通用配置 spring.web 3、文件上传配置 spring.servlet.multipart 4、服务器的配置serve: 比如:编码方式等 默认配置 重要&#xf…...

论文阅读:Efficient Point Cloud Segmentation with Geometry-Aware Sparse Networks

来源:ECCV2022 链接:Efficient Point Cloud Segmentation with Geometry-Aware Sparse Networks | SpringerLink 0、Abstract 在点云学习中,稀疏性和几何性是两个核心特性。近年来,为了提高点云语义分割的性能,人们提…...

1-k8s1.24-底座搭建-基于containerd

文章目录 一、服务器准备二、安装Containerd三、安装k8s四、安装部署dashboard ps:第一遍搭建ks8的时候,由于k8s在1.24版本之后就放弃了对docker的支持,如果要继续使用docker需要自己加载插件。所以一开始就是直接使用 k8s1.24containerd进行…...

Java文件前后端上传下载工具类

任何非压缩格式下载 package com.pisx.pd.eco.util;import java.io.*; import java.util.Collections; import java.util.HashMap; import java.util.Map;import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse;import org.springframewo…...

内燃机可变气门驱动研究进展

Review of Advancement in Variable Valve Actuation of Internal Combustion Engines AbstractIntroduction燃烧和气体交换需要电子控制 paper Abstract 近年来,人们对空气污染和能源使用的日益关注导致了车辆动力总成系统的电气化。 另一方面,一个多世…...

NEFU离散数学实验2-容斥原理

相关概念 离散数学中的容斥原理是一种使用集合运算的技巧,通常用于计算两个或更多集合的并集或交集的大小。以下是一些与容斥原理相关的常见概念和公式。 概念: 1. 集合:由元素组成的对象,通常用大写字母表示,如A、B、…...

解决Windows内存溢出/占满死机问题-PoolMon工具

某一天, 工作所用笔记本突然越来越卡直至死机 以为只是windows11的抽风行为,之前就因为windows11资源管理器经常卡死(后升级小版本好多了)。 遂长按电源键强制关机重启。 然慢慢又越来越卡,直至卡死,无…...

【ROS】ros-noetic和anaconda联合使用【教程】

【ROS】ros-noetic和anaconda联合使用【教程】 文章目录 【ROS】ros-noetic和anaconda联合使用【教程】1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1. 安装anaconda 在Ubuntu20.04中安装…...

自动化RPA开发 --获取所有窗口信息和进程信息

场景 准备做一个RPA工具,可以从桌面和浏览器选择元素,获取窗口信息和进程信息是必要的,因为获取了窗口信息和进程,可用对程序做一些想要的操作。 coding 工具类 /*** Windows系统工具类*/ public class WinOsUtils {static fi…...

【Qt之布局】QVBoxLayout、QHBoxLayout、QGridLayout、QFormLayout介绍及使用

在Qt中,布局管理器(Layout)用于管理窗口中的控件的位置和大小,以适应不同大小的窗口。 常用的布局管理器包括QVBoxLayout、QHBoxLayout、QGridLayout和QFormLayout。 先放张布局UI: 1. QVBoxLayout(垂直布…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起&#xff0c;为了跨网段推流&#xff0c;千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...

NineData数据库DevOps功能全面支持百度智能云向量数据库 VectorDB,助力企业 AI 应用高效落地

NineData 的数据库 DevOps 解决方案已完成对百度智能云向量数据库 VectorDB 的全链路适配&#xff0c;成为国内首批提供 VectorDB 原生操作能力的服务商。此次合作聚焦 AI 开发核心场景&#xff0c;通过标准化 SQL 工作台与细粒度权限管控两大能力&#xff0c;助力企业安全高效…...