hpa自动伸缩

2024-01-23 16:28
文章标签 自动 伸缩 hpa

本文主要是介绍hpa自动伸缩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、定义:hpa全称horizontal pod autoscaling(pod的水平自动伸缩),这是k8s自带的模块。pod占用CPU的比率到达一定阀值会触发伸缩机制(根据CPU使用率自动伸缩)

replication controller副本控制器,控制pod的副本数

deployment controller节点控制器,部署pod

hpa控制副本的数量以及控制部署pod

(1)hpa基于kube-controll-manager服务,周期性的检测pod的CPU使用率,默认30秒检测一次

(2)hpa和replication controller、deployment controller都属于k8s的资源对象,通过跟踪分析副本控制器和deployment的pod的负载变化,针对性的调整目标pod的副本数(针对性:有一个阀值,正常情况下,pod的副本数,以及达到阀值后pod的扩容最大数量)

(3)metrics-server部署到集群中去,对外提供度量的数据

2、hpa规则【面试】

(1)定义pod时必须要有资源限制,否则hpa无法进行监控

(2)扩容是即时的,只要超过阀值会立刻扩容,但不是立刻扩容到最大副本数,会在最小值和最大值之间波动。若扩容数量满足需求,不会再扩容

(3)缩容是缓慢的,若业务峰值较高,回收策略太积极可能对业务产生崩溃。周期行的获取数据,缩容的机制问题

3、pod的副本数扩缩容有两种方式

(1)手动方式,修改控制器的副本数

方式1:命令行通过kubectl scale deployment nginx --replicas=3

方式2:edit修改控制器

方式3:修改yaml文件,使用apply -f部署更新

(2)hpa自动扩缩容

监控指标是cpu

hpa自动扩缩容实验

1、安装镜像包(每个节点)

docker load -i metrics-server.tar

2、安装yaml文件(master节点)查看pod以及node节点占用cpu情况

3、实现hpa

4、模拟cpu负载,压力测试

下降原因:每个pod部署在不同节点上

5、再做压力测试观察数据

结论:一旦超过阀值,立刻扩容

6、缩容:关闭压力测试

4资源限制

(1)pod的资源限制limit

(2)命名空间资源限制★★★

lucky-cloud项目部署在test1的命名空间,若pod不做限制,或命名空间不做限制,依然会占满所有集群资源

①ResourceQuata可以对命名空间进行资源限制

②LimitRange直接声明在命名空间中创建的pod或容器的资源限制(这是一个统一限制,所有在这个命名空间中的pod都受这个条件的限制)

• ResourceQuata

创建命名空间test1

对命名空间进行资源限制

测试

①调整pod副本数

结论:在此命名空间只能创建3个有效的pod

②缩容

③命名空间其他限制条件

configmaps: "10"

在当前名命名空间创建最大的configmap的数量10个

persistentvolumeclaims: "4"

在当前命名空间只能使用4个pvc

secrets: "5"

创建加密的secret只能5个

services: "5"

创建service的个数只能5个

services.nodeports: "2"

创建service的nodeport类型的svc只能2个

测试

①创建svc1

结论:第1个svc创建成功

②创建svc2

结论:第2个svc创建成功

③创建svc3

结论:在test1这个命名空间中限制只能创建2个service.nodeport

查看命名空间的限制

 LimitRange

创建命名空间

压力测试

结论:最多只能占1个cpu(1000m代表1个cpu)

type类型

container(常用)

pod

pvc

这篇关于hpa自动伸缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/636840

相关文章

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Flask 验证码自动生成的实现示例

《Flask验证码自动生成的实现示例》本文主要介绍了Flask验证码自动生成的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 目录生成图片以及结果处理验证码蓝图html页面展示想必验证码大家都有所了解,但是可以自己定义图片验证码