全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

Pod弹性伸缩

最近更新时间:2024-09-10 16:07:39

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分钟

  • 保证用户请求的负载均衡

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈