研发工程师玩转Kubernetes——自动扩缩容

news2024/11/25 23:34:49

在《研发工程师玩转Kubernetes——使用Deployment进行多副本维护》一文中,我们通过Deployment实现了多副本维护——即维持在一个确定数量的副本个数。而在现实场景中,我们往往需要根据服务的压力,采用水平(横向)扩容的方式——即增加多个副本,来分担压力。当服务压力降低时,又需要减少副本数来节约成本。本节我们将介绍如何根据服务压力进行自动的扩缩容。

部署

我们借用《研发工程师玩转Kubernetes——CPU配额》中的代码。它是一个Http服务,接受请求后执行一段消耗CPU的操作。

推送镜像

docker build -t simple_http:v5 .
docker tag simple_http:v5 localhost:32000/simple_http:v5
docker push localhost:32000/simple_http:v5

Deployment清单

Deployment可以通过spec.replicas指定需要维护的副本个数。但是本节我们需要动态扩缩容,副本个数根据服务压力动态改变,而不会固定在一个固定的副本个数上,所以spec.replicas字段不需要指定。
在这里插入图片描述

HorizontalPodAutoscaler清单

HorizontalPodAutoscaler是用来设置动态扩缩容条件的组件。我们可以通过它来设置诸如:最少副本数量,最多副本数量和触发扩容的条件(如CPU达到80%时开始扩容)。

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: simple-http-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: simple-http-deployment
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 80

上面的例子意思是:针对名字(name)叫simple-http-deployment、类型(kind)是Deployment的Pod集合,最低维持(minReplicas)2个副本。如果Pod的CPU利用率超过80%,则开始扩容,最大(maxReplicas)不超过10个副本。

执行部署

上述清单我们都放在simple_http_deployment.yaml文件中,只要执行create指令就行

kubectl create -f simple_http_deployment.yaml

deployment.apps/simple-http-deployment created
service/simple-http-service created
horizontalpodautoscaler.autoscaling/simple-http-hpa created

测试

查看HorizontalPodAutoscaler副本数量

kubectl get horizontalpodautoscalers.autoscaling simple-http-hpa 

在这里插入图片描述
此时只有2个副本。
我们使用《研发工程师玩转Kubernetes——CPU配额》中的wrk进行压力测试。
在这里插入图片描述

 wrk -t10 -c10 -d300  http://192.168.137.248:30000

在压测过程中,我们使用下面命令查看CPU负载。

kubectl get horizontalpodautoscalers.autoscaling simple-http-hpa 
NAMEREFERENCETARGETSMINPODSMAXPODSREPLICASAGE
simple-http-hpaDeployment/simple-http-deployment1%/80%21024m48s
simple-http-hpaDeployment/simple-http-deployment10%/80%(CPU负载开始增加)21025m1s(开始压测)
simple-http-hpaDeployment/simple-http-deployment95%/80%(CPU负载超过阈值80%)21025m16s
simple-http-hpaDeployment/simple-http-deployment97%/80%2103(开始动态扩容)5m33s
simple-http-hpaDeployment/simple-http-deployment89%/80%(CPU负载开始下降)21046m53s
simple-http-hpaDeployment/simple-http-deployment89%/80%21069m17s
simple-http-hpaDeployment/simple-http-deployment85%/80%21079m43s
simple-http-hpaDeployment/simple-http-deployment79%/80%(CPU负载开始低于阈值80%)210710m(压测结束)
simple-http-hpaDeployment/simple-http-deployment1%/80%210710m
simple-http-hpaDeployment/simple-http-deployment1%/80%2102(自动缩容)15m

我们使用wrk压测了5分钟。这5分钟容器的CPU负载一直很高,Pod也一直在自动扩容。
5分钟后wrk停止,CPU利用率降低到1%。大概又过了5分钟,Pod自动缩容到最低的副本数2。

参考资料

  • https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

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

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

相关文章

分享给你这几款冷门好用的工具

分享一:Hi HiSlide Hi HiSlide是一个在线演示文稿制作工具,它可以帮助用户轻松地创建出色的演示文稿。以下是该网站的一些功能和特点: 多种模板选择**:Hi HiSlide提供了多种演示文稿模板,适合不同行业和场合的演示需…

chatgpt赋能python:Python%.6f:一门强大且易于学习的编程语言

Python%.6f:一门强大且易于学习的编程语言 Python是一门免费开源的高级编程语言,用于快速开发脚本、Web应用、科学计算、数据分析、人工智能等应用程序。Python的灵活性、易学性、可读性和强大的第三方库使其成为全球最受欢迎的编程语言之一。 Python的…

面对当下各种不确定性,如何面对,每天很忙碌,不慌

(点击即可收听) 疫情时期,都难,疫情之后,发现还更难 随着互联网的热度的下降,各大小公司纷纷勒紧裤腰带,受打击最大的无疑是底层打工人 每天一打开手机,会发现,一些大厂裁员信息霸榜头条,年龄也是一道坎 刚刚看到一个大v发的: 一个原先是跨国…

Go编程快闪之logrus日志库

成文耗时1小时,阅读3min,有用指数4颗星。 golang中常见的日志包是logrus, 根据logrus的胚子和我们的生产要求,给出一个生产可用的logrus实践姿势。 主谓宾定状补 logrus是一个结构化的、可插拔的、兼容golang标准log api的日志库。…

ARD2F智能电动机保护器在合盛硅业股份有限公司的应用

摘要:介绍安科瑞ARD2F智能电动机保护器在合盛硅业股份有限公司项目的应用。用于新疆西部合盛硅业20万吨密封胶项目及新疆合盛硅业新材料有限公司二期年产20万吨硅氧烷及下游深加工项目中电动机回路的参数测量、故障保护、起停控制以及后台通讯,为项目的安…

chatgpt赋能python:PythonWMI:掌握Windows管理工具的关键

Python WMI: 掌握Windows管理工具的关键 在Windows系统上,WMI (Windows Management Instrumentation)是一个无价的管理工具,允许用户监控和管理各种Windows组件,包括硬件、操作系统,和应用程序。在Python编程中,通过使…

Android Studio Flamingo 稳定版正式发布

作者 / Android Studio 产品经理 Steven Jenkins 我们非常激动地宣布用于构建 Android 应用的官方 IDE 最新稳定版—— Android Studio Flamingo🦩 现已发布! Android Studio Flamingohttps://developer.android.google.cn/studio 此版本加入了多项改进&…

【30天熟悉Go语言】3 怀着Java看Go的编程规约

文章目录 一、前言二、语法Go和Java的语法区别 注释Go和Java的注释区别 三、代码规范四、API包五、总结和后续 一、前言 Go系列文章: GO开篇:手握Java走进Golang的世界2 Go开发环境搭建、Hello World程序运行 Go专栏传送链接:https://blog.cs…

ChatGPT之后,值得关注的垂直领域大模型

垂直领域大模型是指在特定的领域或行业中经过训练和优化的大型语言模型。与通用语言模型相比,垂直领域大模型更专注于某个特定领域的知识和技能,具备更高的领域专业性和实用性。 题图 from unsplash 与通用大模型相比,垂直领域大模型具有以下…

DMBOK知识梳理for CDGA/CDGP——第一章数据管理(附常考知识点)

第一章 数据管理 第一章在 CDGA|CDGP考试中分值占比均不是很高,主要侧重点是考概念性的知识,理解数据管理的目标原则、还有与其他概念的区别点,同时掌握几个关键核心的图(车轮图、六边形图、语境关系图)。总体来说难度…

ESP32 CAM 模块和 OpenCV 的二维码扫描器

概述 该项目是关于使用 ESP32 CAM 模块和 OpenCV 设计的二维码扫描仪或阅读器。我们将使用 ESP32 摄像头模块和 python 库开发一个程序和设备,我们可以用它来扫描二维码。使用 ESP32 CAM,项目变得更便宜。 QR 码现在已经成为我们日常生活的一部分,因为我们几乎在任何地方都…

JavaScript 中如何计算代码段运行时间

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈 …

一起来学习文本怎么翻译吧

你是否曾经需要将一篇文章或一段文字翻译成另一种语言?翻译是一种非常重要的技能,它可以帮助我们更好地沟通和理解不同文化之间的差异。既然翻译这么重要,你知道文本怎么翻译才简单快捷吗?如果你还不会文本翻译的话,请…

Java实现支付宝沙箱环境支付,SDK接口远程调试

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转发自cpolar内网穿透的文章:Java支付宝沙箱环境支付&#xff0…

实时互动下视频 QoE 端到端轻量化网络建模

在实时视频互动中,影响观众对视频体验的有较多且复杂的因素,包括:画质、流畅度以及与其耦合的观看设备等。传统客观算法会利用网络传输或编解码参数拟合接收端人的感知体验,或者使用图像质量结合其他相关参数拟合实时视频质量。由…

chatgpt赋能python:Python[-5:-1]:一种高效且灵活的编程语言

Python[-5:-1]:一种高效且灵活的编程语言 Python被广泛应用于数据分析、机器学习、网络爬虫和自动化测试等领域。Python最新的版本是Python 3.10。 Python[-5:-1]的优点 Python[-5:-1]是Python语言中最新的版本。它的优点如下: 1.更快的性能 Python…

卡方检验Chi-square test

1.什么是卡方检验 卡方检验是一种用途很广的假设检验方法,属于非参数检验的范畴。 主要是比较两个或两个以上样本率以及两个分类变量的关联性分析。 根本思想是在于比较理论频次与实际频次的吻合程度或拟合优度问题。 分子代表了实际值与期望值的偏差,而…

.Net8顶级技术:边界检查之IR解析(二)

前言 IR技术应用在各个编程语言当中,它属于JIT的核心部分,确实有点点麻烦。但部分基本明了。本篇通过.Net8里面的边界检查的小例子了解下。前情提要,看这一篇之前建议看看前一篇:点击此处,以便于理解。 概括 1.前奏 先…

POSTGRESQL PG15关于归档的新模式

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到3群(共…

chatgpt赋能python:PythonSoup对于爬虫程序员来说为什么如此重要

Python Soup 对于爬虫程序员来说为什么如此重要 介绍 Python是现代编程世界中最广泛使用的语言之一。它是一个高级编程语言,可用于许多应用程序,从机器学习到游戏开发再到网络爬虫。对于网络爬虫,Python Soup是非常重要的工具之一。Soup是一…