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

这篇具有很好参考价值的文章主要介绍了研发工程师玩转Kubernetes——自动扩缩容。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在《研发工程师玩转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字段不需要指定。
研发工程师玩转Kubernetes——自动扩缩容

HorizontalPodAutoscaler清单

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

# simple_http_deployment.yaml部分内容
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个副本。
完整的yaml如下:

# simple_http_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-http-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: simple_http
  template:
    metadata:
      labels:
        app: simple_http
    spec:
      containers:
      - name: simple-http-container
        image: localhost:32000/simple_http:v4
        ports:
        - containerPort: 8888
        command: ["python","main.py","-port","$(SERVER_PORT)"]
        env:
        - name: SERVER_PORT
          value:  "8888"
        resources:
          limits:
            cpu: 100m
---
apiVersion: v1
kind: Service
metadata:
  name: simple-http-service
spec:
  type: NodePort
  selector:
    app: simple_http
  ports:
  - port: 80
    targetPort: 8888
    nodePort: 30000 
---
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

执行部署

上述清单我们都放在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 

研发工程师玩转Kubernetes——自动扩缩容
此时只有2个副本。
我们使用《研发工程师玩转Kubernetes——CPU配额》中的wrk进行压力测试。
研发工程师玩转Kubernetes——自动扩缩容

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

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

kubectl get horizontalpodautoscalers.autoscaling simple-http-hpa 
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
simple-http-hpa Deployment/simple-http-deployment 1%/80% 2 10 2 4m48s
simple-http-hpa Deployment/simple-http-deployment 10%/80%(CPU负载开始增加) 2 10 2 5m1s(开始压测)
simple-http-hpa Deployment/simple-http-deployment 95%/80%(CPU负载超过阈值80%) 2 10 2 5m16s
simple-http-hpa Deployment/simple-http-deployment 97%/80% 2 10 3(开始动态扩容) 5m33s
simple-http-hpa Deployment/simple-http-deployment 89%/80%(CPU负载开始下降) 2 10 4 6m53s
simple-http-hpa Deployment/simple-http-deployment 89%/80% 2 10 6 9m17s
simple-http-hpa Deployment/simple-http-deployment 85%/80% 2 10 7 9m43s
simple-http-hpa Deployment/simple-http-deployment 79%/80%(CPU负载开始低于阈值80%) 2 10 7 10m(压测结束)
simple-http-hpa Deployment/simple-http-deployment 1%/80% 2 10 7 10m
simple-http-hpa Deployment/simple-http-deployment 1%/80% 2 10 2(自动缩容) 15m

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

Kubernetes HorizontalPodAutosc文章来源地址https://www.toymoban.com/news/detail-459016.html

参考资料

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

到了这里,关于研发工程师玩转Kubernetes——自动扩缩容的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 研发工程师玩转Kubernetes——使用Node特性定向调度Pod

    在《研发工程师玩转Kubernetes——使用污点(taint)驱逐Pod》中我们提到亲和性(affinity)中的requiredDuringSchedulingIgnoredDuringExecution,它可以定向调度Pod。本节我们将使用相关特性完成定向调度的介绍。 我们先模拟Pod被部署在Master Node上的场景。这个时候我们可以使用nodeSelector对

    2024年02月08日
    浏览(41)
  • 【个人介绍】后端研发工程师

    1. 熟悉JAVA基础、多线程、并发编程、设计模式、数据结构与算法、JVM原理与调优等。 2. 熟悉SpringBoot、SpringCloud、SpringCloud Alibaba、JPA、MyBatis等框架。 3. 熟悉数据库设计、MySQL原理与索引优化、Redis、Memecache、MongoDB等。 4. 熟悉Nginx、主从集群、TCP/IP、NIO编程、Reactor模式、Nett

    2023年04月09日
    浏览(47)
  • 一些研发工程师在Springboot注意点

    1. 正确设计代码目录结构 虽然您有很大的自由度,但有一些基本规则值得遵循来设计您的源代码结构。 避免使用默认包。确保所有内容(包括入口点)都在命名良好的包中,这样您就可以避免与组装和组件扫描相关的意外情况; 将 Application.java(应用程序的入口类)放在顶

    2024年02月08日
    浏览(38)
  • 技术精英求职必备:大数据研发工程师简历模板

    原则 撰写针对大数据研发工程师职位的简历时,关键在于准确展现您在 大数据处理、分析和应用开发方面的综合技能、项目经验和技术成就 。简历应作为您展示跨多个技术栈的 编程能力、构建完整大数据解决方案和有效解决大数据技术问题 的能力的窗口。确保每一项经历

    2024年02月21日
    浏览(52)
  • 技术精英求职必备:AIGC(图像生成)研发工程师简历指南

    核心原则 撰写针对AIGC(图像生成)研发工程师职位的简历时,关键在于准确展现您在深度学习、计算机视觉和图像生成算法方面的综合技能、项目经验和技术成就。简历应作为您展示跨多个技术栈的编程能力、构建完整的图像生成解决方案和有效解决AIGC技术问题的能力的窗口

    2024年03月25日
    浏览(66)
  • 《研发效能(DevOps)工程师》课程简介(二)丨IDCF

    为贯彻落实《关于深化人才发展体制机制改革的意见》,推动实施人才强国战略,促进专业技术人员提升职业素养、补充新知识新技能,实现人力资源深度开发,推动经济社会全面发展,根据《中华人民共和国劳动法》有关规定,工业和信息化部教育与考试中心联合有关部门

    2024年02月07日
    浏览(44)
  • 【社招】【中国电信-天翼云】诚聘高级FPGA研发工程师

    基础架构部门介绍: 天翼云是中国电信旗下云计算品牌,致力于成为领先的云计算服务提供商。 基础架构部作为天翼云的核心部门,负责构建天翼云的整个物理基础设施。打造了包括紫金DPU、物理服务器、物理网络、RDMA网络、操作系统、虚拟化、IDC在内的核心底座产品。基

    2024年02月03日
    浏览(43)
  • 阿里云研发工程师刘睿:阿里云消息生态及最佳实践

    2022 年 9 月 24 日,阿里云用户组(AUG)第 12 期活动在厦门举办。活动现场,阿里云消息中间件研发工程师刘睿,向参会企业代表分享了阿里云消息生态及最佳实践。本文根据演讲内容整理而成。 众所周知,消息中间件作为现代软件体系中的底层基础软件,和数据库一样广泛

    2023年04月09日
    浏览(35)
  • 博冠光电8K事业部招聘研发工程师及产品经理

    一、高级结构工程师 工作职责:1、负责公司产品的机械结构设计、模具开发和量产导入;2、负责机械结构方向的技术预研,包括技术专题研究,技术难题攻关; 3、负责结构组的技术管理工作,包括带新人,材料选型,设计审核;4、领导安排的其他工作。任职要求:1.、本

    2024年02月12日
    浏览(35)
  • 突破职场竞争,引领未来发展:考取《研发效能(DevOps)工程师职业技术认证》

    就业形势堪忧,什么最有保障?考个“国家级”证书傍身吧! 工信部教考中心作为中国领先的行业技能认证机构,其颁发的认证证书不仅代表了个人在信息技术领域的专业能力,更可以录入工业和信息化技术技能人才数据库,这是一个重要的信息资源平台,它可以帮助企业和

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包