前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 笔记 012 Pod 的自动扩容与缩容

Kubernetes 笔记 012 Pod 的自动扩容与缩容

作者头像
Linux云计算网络
发布2019-05-25 16:52:45
9180
发布2019-05-25 16:52:45
举报
文章被收录于专栏:Linux云计算网络Linux云计算网络

Hi,大家好,欢迎大家和我一起学 K8S,这是系列第 12 篇。

上一篇我们了解了 Pod 的手动扩容和缩容,本篇来看看自动的方式。

K8S 作为一个集群式的管理软件,自动化、智能化是免不了的功能。Google 在 K8S v1.1 版本中就加入了这个 Pod 横向自动扩容的功能(Horizontal Pod Autoscaling,简称 HPA)。

HPA 与之前的 Deployment、Service 一样,也属于一种 K8S 资源对象。

HPA 的目标是希望通过追踪集群中所有 Pod 的负载变化情况,来自动化地调整 Pod 的副本数,以此来满足应用的需求和减少资源的浪费。

HAP 度量 Pod 负载变化情况的指标有两种:

  • CPU 利用率(CPUUtilizationPercentage)
  • 自定义的度量指标,比如服务在每秒之内的请求数(TPS 或 QPS)

如何统计和查询这些指标,要依托于一个组件——Heapster。Heapster 会监控一段时间内集群内所有 Pod 的 CPU 利用率的平均值或者其他自定义的值,在满足条件时(比如 CPU 使用率超过 80% 或 降低到 10%)会将这些信息反馈给 HPA 控制器,HPA 控制器就根据 RC 或者 Deployment 的定义调整 Pod 的数量。

HPA 实现的方式有两种:配置文件和命令行

  1. 配置文件

这种方式是通过定义 yaml 配置文件来创建 HPA,如下是基本定义:

代码语言:javascript
复制
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
  namespace: default
spec:
  scaleTargetRef:               # (1)
    kind: Deployment   
    name: php-apache
  minReplicas: 1                # (2)
  maxReplicas: 10
  targetAverageUtilization: 50  # (3)

文件 kind 类型是 HorizontalPodAutoscaler,其中有 3 个地方需要额外注意下:

(1)scaleTargetRef 字段指定需要管理的 Deployment/RC 的名字,也就是提前需要存在一个 Deployment/RC 对象。

(2) minReplicasmaxReplicas 字段定义 Pod 可伸缩的数量范围。这个例子中扩容最高不能超过 10 个,缩容最低不能少于 1 个。

(3)targetAverageUtilization 指定 CPU 使用率,也就是自动扩容和缩容的触发条件,当 CPU 使用率超过 50% 时会触发自动动态扩容的行为,当回落到 50% 以下时,又会触发自动动态缩容的行为。

  1. 命令行

这种方式就是通过 kubectl autoscale 命令来实现创建 HPA 对象,实现自动扩容和缩容行为。比如和上面的例子等价的命令如下:

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

通过参数来引入各个字段。

OK,本文就到这里,更多实践的例子大家可以参考 K8S 官网。下文我们将会探索 K8S 的容错机制。


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档