目前,我们有一套托管在kubernetes集群上的微服务。我们正在根据粗略的估计来设置hpa值。我计划使用grafana来监视水平的pod自动标度行为,以确保我们不会过多地分配CPU/内存等资源,并提出可能的成本优化建议。需要关于如何实现这一点的指导。
我对库伯奈特的世界很陌生。需要关于如何实现这一点的指导。
发布于 2022-12-01 08:52:45
tl;博士
存储器
作为一个起点,您可以监视每个吊舱的CPU和内存消耗。例如,您可以这样做:
sum by (pod) (container_memory_usage_bytes{container=...}/
sum by (pod) (kube_pod_container_resource_requests{container=...})如果您遵循设置Kubernetes请求和限制的实用指南中提供的建议,则限制设置与请求设置相关。对于这样的查询,您可以分析,如果每个荚请求的内存是大致真实的。根据自动分频器的配置,这可能会有所帮助。您可以定义一些grafana警报规则,如果使用内存和请求内存之间的期望比率超过了某个阈值,就会触发警报。
重启
如果吊舱超过给定的内存限制,吊舱将崩溃,库伯内特斯将触发重新启动。使用以下指标,您可以监视重新启动:
sum by (pod) (increase(kube_pod_container_status_restarts_total{...}[1h]))CPU
CPU的使用也是相关的:
process_cpu_usage{container="..."}对于其他查询,请查看Prometheus查询以获得kubernetes吊舱中CPU和内存的使用情况。
复制品
现在,既然您有了基本的度量标准,那么自动分词器本身呢?您将能够计算这样的活动荚数:
kube_horizontalpodautoscaler_status_current_replicas{}请注意,您可能需要通过标签horizontalpodautoscaler筛选此度量。但是,我建议您首先在没有过滤器的情况下运行度量,以获取有关所有运行的自动计算器的信息。
为了更好地控制成本,自动标度通常被限制在最大的副本。如果以最大的速度运行,则可能需要检查给定的最大值是否低。使用kubectl,您可以这样检查状态:
kubectl describe hpa看看条件ScalingLimited。
与地堑:
kube_horizontalpodautoscaler_status_condition{condition="ScalingLimited"}在kube状态度量上可以找到kubernetes度量的列表。看看卧式Pod自动分频器计量器和ReplicationController度量。
使用负载测试
在HorizontalPodAutoscaler漫游中,需要增加应用程序的负载。您可以为此使用几个工具,例如Apache或JMeter。
在我的经验中,升级是很容易实现的,棘手的部分是降级。因此,您需要增加和减少负载。
发布于 2022-12-01 12:41:12
水平缩放允许您根据设置的度量标准来缩放豆荚的数量。Kubernetes提供水平Pod自动分配器(HPA)服务,使您能够缩放豆荚,horizontally.Scaling是基于目标值的。例如,您可以创建有关CPU利用率的度量标准,并在CPU使用率为busy.Horizontal的情况下开发更多的pods来分配负载,自动标度是基于规则,即在某个资源达到上限或下限时启动或停止分配给它们的实例。这也有助于您优化成本。
开源Kubecost工具通过使用Kubernetes概念度量详细的使用情况,并将粒度使用数据与云提供商的计费信息或从open环境中的成本估计相关联来解决这个问题。
尽管HPA非常强大,但它确实需要大量的、持续不断的调优才能实现它的好处。为此,我们使用Grafana仪表板作为查看HPA活动的一种方便方式,该方法特定于特定的pod或环境。
https://stackoverflow.com/questions/74635000
复制相似问题