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

K8S HPA自动扩缩容实战指南

文章目录前言1、简介2、工作原理3、HPA版本变革4、监控指标类型4、HPA配置资源清单4.1 基于CPU负载实现自动扩缩容NAME这是 HPA 对象的名称REFERENCEHPA 监控和自动扩展的目标对象。TARGETS当前和目标的资源使用情况MINPODSHPA 配置的最小 Pod 副本数量。MAXPODSHPA 配置的最大 Pod 副本数量REPLICAS当前运行的 Pod 副本数量。AGEHPA 对象的年龄前言VPA(Vertical Pod Autoscaler)垂直扩展Vertical Scaling根据负载调整单个 Pod 的资源请求和限制如 CPU 和内存。HPA (Horizontal Pod Autoscaler)水平扩展Horizontal Scaling根据负载增加或减少 Pod 的副本数量。1、简介​ Horizontal Pod Autoscaler (HPA) 是 Kubernetes 中的一项功能它能够根据 CPU 使用率或其他应用程序指标自动扩展或缩减应用程序的副本数量。HPA 有助于确保应用程序在负载增加时能够自动扩展以处理更多请求在负载减少时则自动缩减以节省资源。2、工作原理Kubernetes中的某个Metrics Server持续采集所有Pod副本的指标数据。HPA控制器通过Metrics Server的API获取这些数据基于用户定义的扩缩容规则进行计算得到目标Pod的副本数量。当目标Pod副本数量与当前副本数量不同时HPA控制器就向Pod的副本控制器 Deployment、RC或ReplicaSet发起scale操作调整Pod的副本数量 完成扩缩容操作。3、HPA版本变革[rootk8s-master01 ~]# kubectl get apiservices | grep -i autoautoscaling/v1版本仅支持基于CPU使用率指标的自动扩缩容。autoscaling/v2版本支持基于内存使用率指标、自定义指标及外部指标的自动扩缩容并且进一步扩展以支持多指标缩放能力当定义了多个指标时HPA会跟据每个指标进行计算其中缩放幅度最大的指标会被采纳。4、监控指标类型​ kube-Master节点的kube-controller-manager服务持续监测目标Pod的某种性能指标以计算是否需要调整副本数量。目前Kubernetes支持的指标类型如下Pod资源使用率Pod级别的性能指标通常是一个比率值例如CPU使用率。Pod自定义指标Pod级别的性能指标通常是一个数值例如接收的请求数量。Object自定义指标或外部自定义指标通常是一个数值需要容器应用以某种方式提供例如通过HTTP URL“/metrics”提供或者使用外部服务提供的指标采集URL。4、HPA配置资源清单4.1 基于CPU负载实现自动扩缩容deploy资源清单准备[rootk8s-master01 ~]# vim nginx-deploy.yaml---apiVersion:apps/v1kind:Deploymentmetadata:labels:app:nginxname:nginxspec:replicas:1selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-image:nginximagePullPolicy:IfNotPresentname:nginxresources:# 资源请求配置requests:cpu:10m# cpu资源请求书1颗cpu1000m# 创建资源[rootk8s-master01 ~]# kubectl create -f nginx-deploy.yamldeployment.apps/nginx created# 查看资源[rootk8s-master01 ~]# kubectl get po -owideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-6dc8dbb669-nf5lm 1/1 Running 0 54s 172.16.195.23 k8s-master03 nonenoneservice资源清单编写# 查看生成的资源清单[rootk8s-master01 ~]# vim nginx-service.yaml---apiVersion:v1kind:Servicemetadata:labels:app:nginxname:nginxspec:ports:-port:80protocol:TCPtargetPort:80selector:app:nginx# 创建serice资源[rootk8s-master01 ~]# kubectl create -f nginx-service.yamlservice/nginx created# 查看资源[rootk8s-master01 ~]# kubectl get svc -owideNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR kubernetes ClusterIP 10.96.0.1 none443/TCP 4d10h nonenginx ClusterIP 10.96.11.64 none80/TCP 23s appnginx# 测试连通性[rootk8s-master01 ~]# curl 10.96.11.64!DOCTYPEhtmlhtmlheadtitleWelcome to nginx!/titlestylehtml{color-scheme:light dark;}body{width:35em; margin:0 auto;font-family:Tahoma,Verdana,Arial,sans-serif;}/style/headbodyh1Welcome to nginx!/h1pIf you see this page,the nginx web server is successfully installed and working. Further configuration is required./ppFor online documentation and support please refer to a hrefhttp://nginx.org/nginx.org/a.br/Commercial support is available at a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p/body/html# 查看Pod的指标(如果指标不能查看则需要安装metrics)[rootk8s-master01 ~]# kubectl top poNAME CPU(cores) MEMORY(bytes) nginx-6dc8dbb669-nf5lm 0m 5Mi 安装metrics 1、下载开启指标的yaml配置文件 wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml-O metrics-server-components.yaml 2、修改镜像地址为国内的地址 sed-i s/registry.k8s.io\/metrics-server/registry.cn-hangzhou.aliyuncs.com\/google_containers/g metrics-server-components.yaml 3、修改metrics-server-components.yaml配置 修改容器的ts配置不验证ts在containers的args参数中增加--kubelet-insecure-tls 参数如下图 4、加载资源清单 kubectl apply-f metrics-server-components.yamlHPA资源清单编写vimnginx-hpa.yaml --- apiVersion: autoscaling/v1#API版本kind: HorizontalPodAutoscaler# 对象的类型metadata:# 元数据name: nginx# HPA对象的名称spec:# 定义了HPA的规格maxReplicas:10# 定义了Pod副本数量的最大值即在负载增加时最多可以扩展到10 个Pod。minReplicas:1# 定义了Pod副本数量的最小值即在负载减少时最少保留1个Pod。scaleTargetRef:# 指定HPA作用的目标对象。apiVersion: apps/v1# 目标对象的API版本。kind: Deployment# 目标对象的类型name: nginx# 目标Deployment的名称targetCPUUtilizationPercentage:10# 目标CPU使用率当CPU使用率超过10% 时HPA会增加Pod副本数量当CPU使用率低于10%时HPA会减少Pod副本数量。# 创建资源[rootk8s-master01 ~]# kubectl create -f nginx-hpa.yamlhorizontalpodautoscaler.autoscaling/nginx created# 查看资源[rootk8s-master01 ~]# kubectl get hpa字段解释NAME这是 HPA 对象的名称REFERENCEHPA 监控和自动扩展的目标对象。TARGETS当前和目标的资源使用情况MINPODSHPA 配置的最小 Pod 副本数量。MAXPODSHPA 配置的最大 Pod 副本数量REPLICAS当前运行的 Pod 副本数量。AGEHPA 对象的年龄测试压测[rootk8s-master01 ~]# while true; do curl http://10.96.39.85 /dev/null; done[rootk8s-master01 ~]# kubectl get hpa[rootk8s-master01 ~]# kubectl top po[rootk8s-master01 ~]# kubectl get po注意事项[rootk8s-master01 ~]# while true; do curl http://10.96.39.85 /dev/null; done[rootk8s-master01 ~]# kubectl get hpa[rootk8s-master01 ~]# kubectl top po[rootk8s-master01 ~]# kubectl get po 注意事项 使用HPA CPU自动扩充是时尽量用于前端应用后端再扩容时尽量使用自定义指标。后端应用会有多方面原因引起负载过高。

相关文章:

K8S HPA自动扩缩容实战指南

文章目录前言1、简介2、工作原理3、HPA版本变革4、监控指标类型4、HPA配置资源清单4.1 基于CPU负载实现自动扩缩容NAME:这是 HPA 对象的名称REFERENCE:HPA 监控和自动扩展的目标对象。TARGETS:当前和目标的资源使用情况MINPODS:HP…...

Windows 上彻底卸载 Node.js

一、前言 电脑环境混乱,记录一下完整卸载的过程。 二、卸载流程 2.1 控制面板卸载 打开控制面报点击程序 -> 卸载程序找到 nodejs选择更加提示完成卸载 2.2 删除残留的文件 这里我按照默认按照路径操作,如果你自己安装的时候自定义了,…...

Redis分片集群散列插槽

一、前言:为什么 Redis Cluster 用 16384 个槽?在 Redis 分片集群(Cluster)中,数据不是随机分布,而是通过“散列插槽”(Hash Slot)机制进行分片。 你可能好奇:为什么是 1…...

大模型和芯片工程师都会犯错——凭什么用零缺陷标准要求前者?

跨时钟域漏处理、验证约束文件过约束了——这些问题在流片前几乎每个项目都会遇到。没有人会因为工程师犯了这些错误就说"这个人不能用"。那为什么大模型一旦出错,就有人开始质疑它的价值?这个双重标准值得认真想一想。现在很多团队在用大模型…...

投研人如何养“虾“?

扫描下载文档详情页: https://www.didaidea.com/wenku/16586.html...

NumPy:ndarray 数组属性

在使用 NumPy 进行科学计算或数据分析时,数组对象不仅存储数据本身,还包含描述数组结构与内存布局的信息,这些信息被称为数组属性(array attributes)。通过这些属性,我们可以了解数组的维度结构、元素数量、…...

WinClaw CLI 工具开发指南

你可以给 AI 一个工具。但更好的做法是:告诉它怎么发现工具、怎么理解工具、怎么组合工具。 WinClaw 的 CLI 工具体系,就是为此而设计的。一、AI 时代,工具开发的逻辑变了过去做 CLI 工具,用户是人。帮助文档写给人看,…...

Debian/Ubuntu 18.04 上安装 GLIBC 2.28 (2026)

Ubuntu 18.04 上安装 GLIBC 2.28 (2026) 引言 某些现代软件(例如 Visual Studio Code Server 1.88 及更新版本)要求系统 GLIBC 版本不低于 2.28,而 Ubuntu 18.04 默认提供的是 GLIBC 2.27。直接升级系统级 GLIBC 可能导…...

在Linux x86_64系统中编译mission

以下在ubuntu18.10 gcc8.3编译通过。安装编译工具:sudo apt install build-essential sudo apt install cmake重命名以下目录中的wsf_module为wsf_module-(子目录的不用管)以屏蔽图形界面相关的模块:swdev/src/engage swdev/src/…...

黑客与画家的品牌时代主动式Agent时代的品牌#The Brand Age

主动式 Agent 时代的品牌Paul Graham 在《品牌时代》(The Brand Age)中复盘了瑞士钟表业如何从“精准计时”的黄金时代,转型为“身份象征”的品牌时代。他提出了一个冷峻的定义:当产品之间的实质性差异消失时,品牌就是…...

告别OSPF!EVE-NG专业版+BGP Unnumbered打通Underlay的完整实战

吃一堑,长一智。有了前面的经验教训(ECN配置折戟记:vEOS模拟器局限性深度剖析),我们这次在换镜像的时候,提前把后面实验用到的命令先验证一下(从屡战屡败到一气呵成:EVE-NG专业版 C…...

威拉里发布多款金属3D打印新材料!三期项目与国外工厂全力推进!

当前,3D打印正迈入规模化生产新阶段,金属粉末的品质一致性与供应稳定性,直接决定了规模化生产的可行性与经济性。近日,国内3D打印金属粉末领域的龙头企业威拉里,接连发布多款针对不同高端制造领域的新型金属粉末材料&a…...

深入理解 Dify 插件守护进程:从加载到执行的完整链路

❝本文深入剖析 Dify 插件系统的核心机制,揭秘插件守护进程如何加载、启动和执行插件代码,以及参数传递的完整链路。❞一、前言Dify 作为一款开源的 LLM 应用开发平台,其插件系统是扩展平台能力的核心机制。很多开发者在阅读源码时会产生疑问…...

探索大数据领域Flink的CEP复杂事件处理

探索大数据领域Flink的CEP复杂事件处理 Keywords: Apache Flink, Complex Event Processing (CEP), 大数据实时分析, 事件流, 模式检测, 状态机, 实时报警系统 Summary: 本文将带您深入探索Apache Flink中的复杂事件处理(CEP)技术,一种在大数…...

当SSD退役时必做的5件事:基于NVMe Sanitize的完整数据销毁流程

NVMe SSD退役数据销毁全指南:从Sanitize操作到二手处置 当企业级NVMe SSD面临退役时,数据安全销毁是技术团队必须严肃对待的环节。一块未经妥善处理的存储设备,即使被标记为"已删除",仍可能通过专业工具恢复敏感数据。本…...

4步突破:Cursor无限制使用完全指南

4步突破:Cursor无限制使用完全指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We have this limit in…...

问题解决方法:keil软件用st-link烧录代码报错

问题:今天用st-link烧录代码报错说芯片和识别的芯片不一样?难道是盗版?解决方法:把这个使能引脚取消就可以成功烧录了...

SQL Server查看数据库中每张表的数据量和总数据量

查询将返回每个表的名称和表中的数据行数(RowCounts),并按数据量从大到小排序 -- 查询数据库中每张表的行数(数据量) SELECT t.name AS TableName, -- 表的名称SUM(p.rows) AS RowCounts -- 表中所有分区的行数之和…...

GME-Qwen2-VL-2B辅助AE视频制作:智能生成视频片段描述与标签

GME-Qwen2-VL-2B辅助AE视频制作:智能生成视频片段描述与标签 1. 引言 如果你经常用After Effects做视频,肯定遇到过这样的场景:项目文件夹里塞满了各种素材片段,时间线拉得老长,想找一个特定镜头或者回忆某个片段的用…...

MATLAB麦克风实时采集与波形显示:两种方法对比与性能优化

MATLAB麦克风实时采集与波形显示:两种方法对比与性能优化 在音频信号处理领域,实时采集与可视化是许多应用的基础环节。无论是语音识别系统开发、环境噪声监测,还是音乐分析工具构建,快速准确地获取声音波形并实时显示都是关键的第…...

Phi-3-mini-4k-instruct Ollama镜像免配置教程:零基础快速上手文本生成

Phi-3-mini-4k-instruct Ollama镜像免配置教程:零基础快速上手文本生成 你是不是也想体验最新的人工智能文本生成,但被复杂的安装配置劝退了?今天我要介绍的Phi-3-mini-4k-instruct镜像,让你完全跳过所有技术门槛,直接…...

VideoAgentTrek Screen Filter 与数据库联动:构建可查询的屏幕内容审计系统

VideoAgentTrek Screen Filter 与数据库联动:构建可查询的屏幕内容审计系统 你有没有遇到过这样的场景?在金融交易、远程运维或者政务审批这类关键操作中,需要对电脑屏幕上的所有活动进行记录和审计。传统的录屏方式虽然能记录画面&#xff…...

提升JMeter测试效率:WebSocket插件与5个必备插件的安装指南

提升JMeter测试效率:WebSocket插件与5个必备插件的安装指南 在性能测试领域,JMeter因其开源、可扩展的特性成为工程师的首选工具。但原生功能往往难以满足复杂场景需求,这正是插件生态大显身手的地方。本文将带您深入WebSocket测试的核心配置…...

Qwen3.5-35B-A3B-AWQ-4bit Web界面使用教程:上传控件+输入框+响应流式输出详解

Qwen3.5-35B-A3B-AWQ-4bit Web界面使用教程:上传控件输入框响应流式输出详解 你是不是也遇到过这样的场景:手里有一张图片,想快速知道里面有什么,或者想针对图片内容问几个问题,但不知道用什么工具?今天&a…...

Chord视觉定位模型实战:一句话让AI在图片里找到目标,新手3步搞定

Chord视觉定位模型实战:一句话让AI在图片里找到目标,新手3步搞定 1. 什么是Chord视觉定位模型? Chord是基于Qwen2.5-VL多模态大模型的视觉定位服务,它能理解自然语言描述并在图像中精确定位目标对象。想象一下,你只需…...

探索LD2410:实现精准人体存在检测的创新方法

探索LD2410:实现精准人体存在检测的创新方法 【免费下载链接】ld2410 An Arduino library for the Hi-Link LD2410 24Ghz FMCW radar sensor. 项目地址: https://gitcode.com/gh_mirrors/ld/ld2410 副标题:掌握24GHz雷达传感器的技术原理与实践应…...

Python结合Cartopy实现地形晕染图的进阶技巧与实战应用

1. 为什么需要地形晕染图? 地形晕染图(Shaded Relief Map)是地理信息可视化中常用的技术手段。我第一次接触这个概念是在做一个气象数据分析项目时,当时需要展示台风路径与海底地形的关系。普通的等高线图虽然能显示海拔变化&…...

开源工具突破Cursor设备限制:跨平台解决方案全解析

开源工具突破Cursor设备限制:跨平台解决方案全解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We hav…...

Transformer在医学图像分割中的进化史:从UNet到CSWin-UNet

Transformer在医学图像分割中的进化史:从UNet到CSWin-UNet 医学图像分割技术正经历一场由Transformer架构引领的范式转移。当放射科医生需要从CT扫描中精确勾勒肿瘤边界,或是研究人员试图量化心脏MRI中的心室容积时,他们依赖的算法核心已从传…...

SUNFLOWER MATCH LAB 模型压缩实战:使用PyTorch进行知识蒸馏

SUNFLOWER MATCH LAB 模型压缩实战:使用PyTorch进行知识蒸馏 最近在做一个移动端的图像匹配项目,用上了SUNFLOWER MATCH LAB这个模型,效果确实不错,匹配精度很高。但问题也来了,这模型有点“胖”,部署到手…...