Pod弹性伸缩

最近更新时间:2021-03-03 10:31:50

查看PDF

Pod弹性伸缩(Horizontal Pod Autoscaling,简称HPA)是Kubernetes中实现POD水平自动伸缩的功能,可以根据CPU使用率或者其他自定义的指标自动扩展部署中的Pod数量。

自动伸缩算法

HPA组件会每隔30s从集群中的Metrics Server组件获取pod的监控指标(如果设置了目标利用率,则需要计算监控指标与每个pod中容器的resource request的百分比;如果设置了目标原始值,则直接使用该原始metrics值),根据工作负载当前副本数和该指标的目标值计算出期望副本数,作为工作负载的期望副本数,具体计算公式如下:

扩缩容算法:期望副本数量=采集的使用率/用户自定义使用率*当前pod数量

支持设置多个弹性伸缩的策略,HPA会根据每个指标的目标值,分别计算出目标副本数,然后取最大的一个作为最终目标副本数。

容器服务控制台操作说明

新建HPA

可以通过以下三种方式新建HPA。

方式一:通过单击新建HPA
  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要新建HPA的集群ID,进入该集群操作页面。
  4. 选择自动伸缩 > HPA,进入HPA列表页。
  5. 单击新建,在新建HPA页面,根据以下提示进行HPA配置:
    • 名称:输入要创建HPA的名称。
    • 命名空间:请根据实际需求进行选择。
    • 关联Deployment:请根据实际需求进行选择。
    • 触发策略:HPA功能依赖的策略指标。
    • 实例范围:请根据实际需求进行选择,实例数量会在设定的范围内自动调节,不会超出该设定范围。


当前支持设置的触发策略指标:

  • CPU利用率:容器CPU使用量和CPU request值的比率
  • CPU使用量:容器CPU使用量(核)
  • 内存使用率:容器内存的使用量和内存 request值的比率
  • 内存使用量:容器内存使用量(MiB)
  1. 单击创建,完成HPA创建。
方式二:通过创建部署时,设置pod的弹性伸缩
  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要新建HPA的集群ID,进入该集群操作页面。
  4. 选择工作负载 > Deployment,进入Deployment列表页。
  5. 单击新建,在创建Deployment页面,第二步部署配置流程中选择自动调节并根据以下提示进行设置:
    • 触发策略:HPA功能依赖的策略指标。
    • 实例范围:请根据实际需求进行选择,实例数量会在设定的范围内自动调节,不会超出该设定范围。

image.png

方式三:通过YAML创建
  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要新建HPA的集群ID,进入该集群操作页面。
  4. 选择自动伸缩 > HPA,进入HPA列表页。
  5. 单击页面右上角YAML创建资源,在YAML创建资源页面,根据实际需求编辑内容,单击创建,即可新建HPA。

调整HPA配置

可以通过以下三种方式调整HPA配置。

方式一:通过单击调整配置修改
  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要调整HPA配置的集群ID,进入该集群操作页面。
  4. 选择自动伸缩 > HPA,进入HPA列表页。
  5. 单击调整配置,在出现的弹窗中,根据实际需求进行调整,并单击确定,即可调整HPA配置。
方式二:通过编辑YAML更新
  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要调整HPA配置的集群ID,进入该集群操作页面。
  4. 选择自动伸缩 > HPA,进入HPA列表页。
  5. 单击编辑YAML,在更新YAML页面,根据实际需求进行调整,并单击确定,即可调整HPA配置。
方式三:通过调节实例数量时,调整pod的弹性伸缩
  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要调整HPA配置的集群ID,进入该集群操作页面。
  4. 选择工作负载 > Deployment,进入Deployment列表页。
  5. 单击调节实例数量,在出现的弹窗中,选择自动调节并根据实际需求进行调整,单击确定即可调整HPA设置。

查看HPA相关信息

  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要查看HPA相关信息的集群ID,进入该集群操作页面。
  4. 选择自动伸缩 > HPA,进入HPA列表页。
  5. 单击需要查看HPA信息的名称。
  6. 进入HPA详情页,可以选择详情事件YAML进行相关信息查看。

删除HPA

  1. 登录容器服务控制台
  2. 在左侧导航栏中,选择集群,进入集群管理页面。
  3. 选择需要删除HPA的集群ID,进入该集群操作页面。
  4. 选择自动伸缩 > HPA,进入HPA列表页。
  5. 单击删除,在出现的弹窗中,点击确认即可删除HPA。

Kubectl 命令操作说明

可以通过 YAML 文件创建和编辑 HPA 。以下为配置文件的示例:

hpa-example.yaml示例:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-example
  namespace: default
spec:
  minReplicas: 1                    #最小副本数
  maxReplicas: 3                    #最大副本数
  metrics:
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50       #当CPU使用率为50时触发HPA,实例范围为1-3
  scaleTargetRef:
    apiVersion: apps/v1beta2
    kind: Deployment
    name: nginx

创建hpa-example.yaml

# kubectl apply -f hpa-example.yaml

注意事项

  • 当使用cpu/内存使用率作为伸缩策略指标时,请务必设置容器request的值,否则不支持
  • HPA在计算目标副本数时会有一个 10% 的波动因子,如果在波动范围内,HPA 并不会调整副本数目。
  • HPA在每一次作出决策后的一段时间内,将不再进行扩展决策。对于扩容而言,这个时间段为3分钟,缩容为5分钟
  • 保证用户请求的负载均衡

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

  • 内容不全,不深入
  • 内容更新不及时
  • 描述不清晰,比较混乱
  • 系统或功能太复杂,缺乏足够的引导
  • 内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈