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

相关文章

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

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

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

以后写代码都是AI自动写了,Cursor+Claude-3.5-Sonnet,Karpathy 点赞的 AI 代码神器。如何使用详细教程

Cursor 情况简介 AI 大神 Andrej Karpathy 都被震惊了!他最近在试用 VS Code Cursor +Claude Sonnet 3.5,结果发现这玩意儿比 GitHub Copilot 还好用! Cursor 在短短时间内迅速成为程序员群体的顶流神器,其背后的原因在于其默认使用 OpenAI 投资的 Claude-3.5-Sonnet 模型,这一举动不仅改变了代码生成

在 Qt Creator 中,输入 /** 并按下Enter可以自动生成 Doxygen 风格的注释

在 Qt Creator 中,当你输入 /** 时,确实会自动补全标准的 Doxygen 风格注释。这是因为 Qt Creator 支持 Doxygen 以及类似的文档注释风格,并且提供了代码自动补全功能。 以下是如何在 Qt Creator 中使用和显示这些注释标记的步骤: 1. 自动补全 Doxygen 风格注释 在 Qt Creator 中,你可以这样操作: 在你的代码中,将光标放在

Jenkins自动构建部署项目

1. 楔子 在实际开发中,经常需要编译、静态代码检查、自动化测试、打包、部署、启动等一连串重复机械的动作,浪费时间、而且容易出错,而Jenkins就是专门Continuous integration(CI)/ Continuous Deploy(CD)开源工具,本文简单介绍Jenkins的使用。 在线无安装免费试用Jenkins:http://www.jenkins.org.cn/test

【Spring Boot】 SpringBoot自动装配-Condition

目录 一、前言二、 定义2.1 @Conditional2.2 Condition2.2.1 ConditionContext 三、 使用说明3.1 创建项目3.1.1 导入依赖3.1.2 添加配置信息3.1.3 创建User类3.1.4 创建条件实现类3.1.5 修改启动类 3.2 测试3.2.1 当user.enable=false3.2.2 当user.enable=true 3.3

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置(误~🙏🙏)三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口@SpringBootApplication3、@SpringBootConfiguration的@Configuration4、@EnableAutoConfiguration的@AutoConfigurationPackage和@Import5、Auto

利用Mybatis-generator工具自动生成代码

配置JAVA环境变量; 执行生成代码之前,我们须要做的准备工作。  1、新建一个文件夹,作为我们的工作空间,例如:  D:\generator  注意:这里的路径不要带有中文字符,这是规范,即使带有中文字符不会出什么问题。  2、在 generator 这路径下  (1)放置 mybatis-generator-core-1.3.2.jar;  (2)放置 mysql-connector-ja