HPA自动扩缩容

2024-01-24 09:44
文章标签 自动 hpa 扩缩容

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

HPA是什么???

Horizontal Pod Autoscaling: k8s自带的模块,pod的水平自动伸缩,对象是pod。

pod占用cpu比率达到一定的阈值,将会触发伸缩机制。

replication controller 副本控制器

deployment controller 节点控制器

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 部署到集群当中,对外提供度量的数据。

hpa部署

在所有节点上传metrics-server.tar包
#导入为镜像
docker load -i metrics-server.tar#在master上传components.yaml
kubectl apply -f components.yaml

HPA的规则:

1、定义pod的时候必须要有资源限制,否则HPA无法进行监控。

2、扩容是即时的,只要超过阀值会立刻扩容,不是立刻扩容到最大副本数。他会在最小值和最大信波动。如果扩容的数量满足了需求,不会在扩容

3、缩容是缓慢的。如果业务的峰值较高,回收的策略太积极的话,可能会产生业务的崩溃。缩容的速度是比较慢的。周期性的获取数据,缩容的机制问题。

你是怎么对pod的副本数进行伸缩???

副本数扩缩容有两种方式:

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

方法一
kubectl scale deployment centos-test --replicas=3
方法二
apply -f
方法三
kubectl edit deployments.apps centos-test

2、自动扩缩容

hpa: hpa的监控是cpu

声明式

kubectl autoscale deployment centos-test --cpu-percent=50 --max=10 --min=1

陈述式

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos7
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: centos-testminReplicas: 1maxReplicas: 5targetCPUUtilizationPercentage: 50#超过50%就扩展

资源限制:

pod的资源限制

命名空间资源限制

lucky-cloud项目-----部署在test1的命名空间,如果lucky-coloud不做限制,或者命名空间不做限制,他依然会占满所有集群资源。

k8s部署pod的最大数量:10000个

busybox: 就是最小化的centos 4M

对pod资源的限制

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-testnamespace: test2labels:test: centos
spec:replicas: 1selector:matchLabels:test: centostemplate:metadata:labels:test: centosspec:containers:- name: centos1image: centos:7command: ["/bin/bash","-c","yum -y install epel-release.noarch; yum -y install stress;sleep 3600"]resources:limits:cpu: "1"memory: 512Mi
---
apiVersion: v1
kind: LimitRange
#表示使用limitrange来进行资源控制
metadata:name: test2-limitnamespace: test2
spec:limits:- default:memory: 512Micpu: "1"defaultRequest:memory: 256Micpu: "0.5"type: Container
#default: 相当于limit
#defaultRequest: 相当于request
#type: Container pod pvc(很少有)

限制pod副本数

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-test2namespace: test1labels:test: centos2
spec:replicas: 10selector:matchLabels:test: centos2template:metadata:labels:test: centos2spec:containers:- name: centos1image: centos:7command: ["/bin/bash","-c","yum -y install epel-release.noarch; yum -y install stress;sleep 3600"]resources:limits:cpu: "1"memory: 512Mi
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos7
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: centos-test2minReplicas: 1maxReplicas: 5targetCPUUtilizationPercentage: 50---
apiVersion: v1
kind: ResourceQuota
metadata:name: ns-resourcenamespace: test1
spec:hard:pods: "2"

最开始副本为1,运行后deployment是1/1

限制数为2,副本数为3,运行后deployment是2/3

限制数为8,副本数为3, 运行后deployment是2/3

限制数为8,副本数为4, 运行后deployment是4/4

命名空间资源限制

apiVersion: apps/v1
kind: Deployment
metadata:name: centos-test2namespace: test1labels:test: centos2
spec:replicas: 10selector:matchLabels:test: centos2template:metadata:labels:test: centos2spec:containers:- name: centos1image: centos:7command: ["/bin/bash","-c","yum -y install epel-release.noarch; yum -y install stress;sleep 3600"]resources:limits:cpu: "1"memory: 512Mi
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:name: hpa-centos7
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: centos-test2minReplicas: 1maxReplicas: 5targetCPUUtilizationPercentage: 50---
apiVersion: v1
kind: ResourceQuota
metadata:name: ns-resourcenamespace: test1
spec:hard:pods: "2"requests.cpu: "2"requests.memory: 1Gilimits.cpu: "4"limits.memory: 2Giconfigmaps: "10"
#在当前命名空间能创建最大的configmap的数量 10个persistentvolumeclaims: "4"
#当前命名空间只能使用4个pvcsecrets: "9"
#创建加密的secrets,只能9个services: "5"
##创建service只能5个services.nodeports: "2"
#nodeport类型的svc只能两个

总结

HPA自动扩缩容 命名空间

第一种:

ResourceQuota 可以对命名空间进行资源限制。

第二种

limitRange:直接声明在命名空间当中创建的pod,容器的资源限制,这是一种统一限制,所有的pod都受这个条件制约。

pod资源限制 一般是我们创建的时候声明好的,必加选项。

pod资源限制

resources:

limit

对命名空间资源限制,对命令空间使用cpu和内存一定会做限制(cpu、内存),防止整个集群的资源被一个服务或者一个命名空间占用。

命名空间资源限制 ResourceQuota

核心:防止整个集群的资源被一个服务或者一个命名空间占用。

命名空间统一资源限制 LimitRange

HPA:自动伸缩。 nodeName固难在一个pod,观察,扩容之后,阀值是否会下降。

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



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

相关文章

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

Spring使用@Retryable实现自动重试机制

《Spring使用@Retryable实现自动重试机制》在微服务架构中,服务之间的调用可能会因为一些暂时性的错误而失败,例如网络波动、数据库连接超时或第三方服务不可用等,在本文中,我们将介绍如何在Sp... 目录引言1. 什么是 @Retryable?2. 如何在 Spring 中使用 @Retryable

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机