最近更新时间: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的集群ID,进入该集群操作页面。
选择自动伸缩 > HPA,进入HPA列表页。
单击新建,在新建HPA页面,根据以下提示进行HPA配置:
名称:输入要创建HPA的名称。
命名空间:请根据实际需求进行选择。
关联Deployment:请根据实际需求进行选择。
触发策略:HPA功能依赖的策略指标。
实例范围:请根据实际需求进行选择,实例数量会在设定的范围内自动调节,不会超出该设定范围。
注
当前支持设置的触发策略指标:
CPU利用率:容器CPU使用量和CPU request值的比率
CPU使用量:容器CPU使用量(核)
内存使用率:容器内存的使用量和内存 request值的比率
内存使用量:容器内存使用量(MiB)
单击创建,完成HPA创建。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要新建HPA的集群ID,进入该集群操作页面。
选择工作负载 > Deployment,进入Deployment列表页。
单击新建,在创建Deployment页面,第二步部署配置流程中选择自动调节并根据以下提示进行设置:
触发策略:HPA功能依赖的策略指标。
实例范围:请根据实际需求进行选择,实例数量会在设定的范围内自动调节,不会超出该设定范围。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要新建HPA的集群ID,进入该集群操作页面。
选择自动伸缩 > HPA,进入HPA列表页。
单击页面右上角YAML创建资源,在YAML创建资源页面,根据实际需求编辑内容,单击创建,即可新建HPA。
可以通过以下三种方式调整HPA配置。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要调整HPA配置的集群ID,进入该集群操作页面。
选择自动伸缩 > HPA,进入HPA列表页。
单击调整配置,在出现的弹窗中,根据实际需求进行调整,并单击确定,即可调整HPA配置。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要调整HPA配置的集群ID,进入该集群操作页面。
选择自动伸缩 > HPA,进入HPA列表页。
单击编辑YAML,在更新YAML页面,根据实际需求进行调整,并单击确定,即可调整HPA配置。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要调整HPA配置的集群ID,进入该集群操作页面。
选择工作负载 > Deployment,进入Deployment列表页。
单击调节实例数量,在出现的弹窗中,选择自动调节并根据实际需求进行调整,单击确定即可调整HPA设置。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要查看HPA相关信息的集群ID,进入该集群操作页面。
选择自动伸缩 > HPA,进入HPA列表页。
单击需要查看HPA信息的名称。
进入HPA详情页,可以选择详情、事件、YAML进行相关信息查看。
登录容器服务控制台。
在左侧导航栏中,选择集群,进入集群管理页面。
选择需要删除HPA的集群ID,进入该集群操作页面。
选择自动伸缩 > HPA,进入HPA列表页。
单击删除,在出现的弹窗中,点击确认即可删除HPA。
可以通过 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分钟
保证用户请求的负载均衡
纯净模式