【kubernetes】实战:HPA自动扩/缩容

news2024/11/23 8:18:45

实现原理

针对Pod 自动扩缩容,主要根据检测 CPU 使用率或自定义指标(metrics) 是否达到预定义限制,从而自动对 Pod 进行扩/缩容。

通常对Deployment,StatefulSet进行扩缩容。不适用于无法扩/缩容的对象(如:DaemonSet)

检测方法

1,控制管理器每隔30s对metrics的资源使用情况进行查询。
(间隔时间30s,可以通过-horizontal-pod-autoscaler-sync-period修改)。

2,支持三种metrics类型:

  • 预定义metrics(bPod的CPU)以利用率的方式计算
  • 自定义的Pod metrics,以始值(raw value)的方式计算
  • 自定义的object metrics

3,支持两种metrics查询方式:

  • Heapster
  • 自定义的REST API

4, 支持多metrics

具体步骤

第1步:定义deploy,指定副本数,设置资源限制

# cat hpa-nginx-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hpa-nginx-deploy
spec:
  replicas: 2         # 指定副本数
  selector:
    matchLabels:
      app: nginx-hpa
  template:
    metadata:
      labels:
        app: nginx-hpa
    spec:
      containers:
      - name: nginx
        image: nginx
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        resources:
          requests:          # 指定最小限制
            cpu: "30m"
            memory: "128Mi"
          limits:            # 指定最大限制
            cpu: "50m"
            memory: "128Mi"

第2步:创建一个 HPA(主要步骤)

当cpu占用超过20%时,进行扩容,最多增加到5个pod;
当cpu占用低于20%时,进行缩容,最少减少到2个pod;

kubectl autoscale deploy  <deploy名>  --cpu-percent=20  --min=2  --max=5

第3步:安装测试metrics插件

通过kubectl top pod <pod名> 查看pod或node的cpu和内存占用情况。需要安装插件。

# 下载插件文件
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -O metrics-server-components.yaml

# 替换镜像为阿里云
sed -i 's/registry.k8s.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g' metrics-server-components.yaml

# 配置文件增加参数(见下图)
 - --kubelet-insecure-tls

# 安装此文件
kubectl apply -f metrics-server-components.yaml

# 查看是否运行, running为正常
kubectl get pod --all-namespaces | grep metrics

# 查看cpu占用情况
kubectl top pods

在这里插入图片描述
在这里插入图片描述

第4步:验证测试

1,为deploy添加一个servce的四层代理,获取代理的ip和端口

# cat hpa-nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: hpa-nginx-service
  namespace: default
spec:
  selector:
    app: nginx-hpa
  ports:
  - name: web-nginx
    port: 80
    targetPort: 80
  type: NodePort                

在这里插入图片描述
获取ip:10.110.106.116
获取端口:80:31601/TCP

2,在另外两台node集群添加压力测试命令(死循环程序)

# 编写循环测试脚本提升内存与cpu 负载
while true; do wget -q -o- http://<ip:port> > /dev/null ; done

while true; do wget -q -o- http://10.110.106.116 > /dev/null ; done

# 另开终端,动态获取 HPA 信息比例
kubectl get hpa

第5步:结果

开始:
在这里插入图片描述

自动扩容:

在这里插入图片描述

自动缩容:
在这里插入图片描述
在这里插入图片描述
【注意】:自动缩容时间比较长,大概5-6分钟左右!

结束!

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

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

相关文章

6-Python基础编程之数据类型操作——数值、布尔和字符串

Python基础编程之数据类型操作——数值、布尔和字符串 数值整数浮点数复数常用操作 布尔类型字符串字符串拼接字符串切片常用函数查找计算转换操作填充压缩分割拼接判定操作 数值 表现形式&#xff1a;整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、…

Conmi的正确答案——MySQL的层级递归查询(递归公共表表达式,CTE)

数据库&#xff1a;oceanbase-ce 递归sql主体&#xff1a; WITH RECURSIVE country_area_tree AS (-- 非递归部分&#xff0c;初始化查询SELECT id, area_name, parent_id, 0 AS levelFROM country_areaWHERE id 589004044419077UNION ALL-- 递归部分&#xff0c;找到子节点S…

秋招春招,在线测评题库包含哪些?

各位小伙伴们&#xff0c;秋招春招的号角已经吹响&#xff0c;作为HR&#xff0c;我们又要开始忙碌起来了。面对众多的候选人&#xff0c;如何高效、准确地筛选出合适的人选呢&#xff1f; 在线测评就是一个非常有用的工具。本文就说说在线测评题库里的那些事儿&#xff0c;主…

中国书法——孙溟㠭浅析碑帖《三希堂法帖》

孙溟㠭浅析碑帖《三希堂法帖》 全称是《三希堂石渠宝笈法帖》&#xff0c;是中国清代宫廷刻帖&#xff0c;一共三十二册。 清朝高宗弘历收藏了晋王羲之《快雪时晴帖》&#xff0c;王献之的《中秋帖》&#xff0c;王珣的《伯远帖》三种王氏原墨迹。故而把所藏法书之所…

【hot100-java】【除自身以外数组的乘积】

R8-普通数组篇 印象题&#xff0c;计算前缀&#xff0c;计算后缀&#xff0c;计算乘积。 class Solution {public int[] productExceptSelf(int[] nums) {int n nums.length;int[] prenew int[n];pre[0]1;for (int i1;i<n;i){pre[i]pre[i-1]*nums[i-1];}int[] sufnew int[…

【支付】Stripe支付通道Java对接(产品 价格 支付 查询 退款 回调)

Stripe是一家美国科技公司&#xff0c;成立于2010年&#xff0c;由爱尔兰兄弟Patrick Collison和John Collison共同创立。该公司致力于提供高效、简洁的互联网支付收款服务&#xff0c;为开发者或商家提供支付API接口或代码&#xff0c;使商家的网站、移动APP支持信用卡付款。S…

微深节能 天车无人抓渣系统 格雷母线定位系统

微深节能的天车无人抓渣系统结合格雷母线定位系统&#xff0c;为工业自动化领域带来了显著的技术提升。 一、系统概述 微深节能的天车无人抓渣系统是一种高度自动化的解决方案&#xff0c;它集成了格雷母线定位系统&#xff0c;实现了天车在无人操作下的精准定位与高效作业。该…

新颖的团建分组方式

如何实现男女比例平均分组&#xff1f; 在组织团建活动时&#xff0c;采用新颖的分组方式可以增加团队的互动性和参与感。本文将介绍一种基于云分组小程序的男女比例平均分组方法&#xff0c;以及如何高效地邀请成员加入和管理分组。 步骤一&#xff1a;创建分组 1. 进入云分组…

JAVAWeb---JavaScript

第三章 JavaScript 一 JS简介 1.1 JS起源 Javascript是一种由Netscape(网景)的LiveScript发展而来的原型化继承的面向对象的动态类型的区分大小写的客户端脚本语言&#xff0c;主要目的是为了解决服务器端语言&#xff0c;遗留的速度问题&#xff0c;为客户提供更流畅的浏览效…

【English】长难句翻译

这里写目录标题 技巧知识点1. 定语从句 和 状从区别2. 定从 修饰词3. who 和 whom 区别4. 除了定从、状从,还有啥?5. 怎么在长难句快速定位到主谓宾而不被各种从句中的动词影响判断6. 没有,的那种一大堆从句连起来的长难句怎么办7. 时态怎么放在翻译里总结技巧 知识点 1. 定语…

游戏论坛网站|基于Springboot+vue的游戏论坛网站系统游戏分享网站(源码+数据库+文档)

游戏论坛|游戏论坛系统|游戏分享网站 目录 基于Springbootvue的游戏论坛网站系统游戏分享网站 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大…

[数据集][目标检测]汽车头部尾部检测数据集VOC+YOLO格式5319张3类别

数据集制作单位&#xff1a;未来自主研究中心(FIRC) 版权单位&#xff1a;未来自主研究中心(FIRC) 版权声明&#xff1a;数据集仅仅供个人使用&#xff0c;不得在未授权情况下挂淘宝、咸鱼等交易网站公开售卖,由此引发的法律责任需自行承担 数据集格式&#xff1a;Pascal VOC格…

DWS=业务库创建

数据库对象命名 数据库对象命名需要满足约束&#xff1a;长度不超过63个字符&#xff0c;以字母或下划线开头&#xff0c;中间字符可以是字母、数字、下划线、$、#。 【建议】避免使用保留或者非保留关键字命名数据库对象。可以使用select * from pg_get_keywords()查询GaussDB…

有什么好用的视频倒放软件?2024帮助你快速进行视频倒放软件

有什么好用的视频倒放软件&#xff1f;2024帮助你快速进行视频倒放软件 视频倒放是一种常见的视频编辑效果&#xff0c;能够为视频增添趣味或实现特殊的视觉效果。以下是5款好用的视频倒放软件&#xff0c;帮助你快速进行视频倒放操作&#xff1a; 口袋视频转换器 这是专业的…

会议音频设备行业调研:未来几年年复合增长率CAGR为3.5%

本报告中的会议音频设备主要包括扬声器和会议电话、麦克风&#xff08;桌面麦克风、吸顶麦克风、悬挂麦克风、鹅颈麦克风等&#xff09;、扬声器、视频吧、发送器和接收器、放大器和处理器以及其他配件。 据QYResearch调研团队最新报告“全球会议音频设备市场报告2024-2030”显…

QMT软件怎么申请开通?QMT软件到底是谁在用啊?QMT量化软件K线驱动介绍

QMT提供了三种运行机制&#xff0c;其中K线驱动是最为重要的一种。它主要通过handlebar函数来实现&#xff0c;具体表现为逐K线驱动。 历史K线驱动&#xff1a;在运行开始时&#xff0c;QMT量化软件会遍历所选周期的历史K线。从左向右&#xff0c;每根K线都会触发一次handlebar…

java微信机器人制作教程

Java实现微信小号做机器人 随着人工智能技术的发展&#xff0c;机器人在各行各业扮演着越来越重要的角色。在社交领域&#xff0c;微信机器人也逐渐受到人们的关注。本文将介绍如何使用Java实现一个简单的微信小号做机器人的功能。 常见开发功能&#xff1a; 好友管理&#…

王牌功能 | 法大大“用户角色权限管理”,合同数据分流、管理权限分层都搞定!

合同签了还得管&#xff0c; 按业务、按项目、按岗位级别… 关于法大大“用户角色权限管理”功能的使用&#xff1a;企业操作人员在电子合同平台创建企业后&#xff0c;需添加企业组织架构&#xff0c;主要添加合同操作相关的人员&#xff0c;即可实现合同操作与数据权限的管理…

springboot+vue+mybatis计算机毕业设计老年人健康管理系统+PPT+论文+讲解+售后

近些年来&#xff0c;随着科技的飞速发展&#xff0c;互联网的普及逐渐延伸到各行各业中&#xff0c;给人们生活带来了十分的便利&#xff0c;老年人健康管理系统利用计算机网络实现信息化管理&#xff0c;使整个老年人健康管理的发展和服务水平有显著提升。 本文拟采用Eclips…

基于MATLAB的全景图像拼接系统实现

简要的论文框架和技术思路 摘要 本文深入探讨了基于MATLAB平台的块匹配全景图像拼接系统的设计与实现。通过详细解析SIFT/SURF特征提取、RANSAC变换估计、APAP局部对齐、图割算法拼接缝选择及multi-band blending图像融合等关键技术&#xff0c;构建了高效且高质量的全景图像…