微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将kubernetesGKE服务层指标发送到GCP负载均衡器

如何解决将kubernetesGKE服务层指标发送到GCP负载均衡器

我正在使用GKE,并且有一个application-app1(pod),它使用NodePort公开,然后放在入口后面。

入口控制器已启动GCP负载平衡器。现在,来自路径/app1/的请求将路由到我的应用程序。

我启动了集群内部的stackdriver-metrics适配器,然后配置了HPA,该HPA使用了来自负载平衡器的请求/秒指标。 HPA从ExternalMetric获取特定后端名称的指标。

  - external:
      metricName: loadbalancing.googleapis.com|https|request_count
      metricSelector:
        matchLabels:
          resource.labels.backend_target_name: k8s-be-30048--my-backend
      targetAverageValue: 20
    type: External

一切正常。这是问题所在,

在kubernetes集群中运行的其他一些应用程序也称为app1。集群中的其他应用程序正在通过kubernetes FQDN app1.default.svc.cluster.local而不是通过负载均衡器路由来调用app1。这意味着这些请求不会通过入口负载均衡器。这意味着HPA不会以任何方式计算这些请求。

因此,总的来来的请求(Ct)是通过LoadBalancer(C1)和FQDN(C2),Ct = C1 + C2。我的猜测是,hpa仅考虑C1,而不考虑Ct。由于此处计算指标的方式,我的hpa无法相应地缩放我的应用程序。例如,如果Ct为120,但C1为90,则吊舱数将为3,但实际应为4。

在这里我是否认为负载均衡器不计入通过FQDN发出的请求是错误的?

如果要计算请求数,我想我将不得不使用在Pod级别计算请求数的东西。像普罗米修斯中间件一样。你们还能提出其他建议吗?

解决方法

回答以下评论:

是的,那是障碍。无法预测/关联流量类型。无论如何,如果可以预测它会有什么帮助?

如果可以预测(例如,始终为70%(外部)/ 30%(内部),则可以调整扩展指标以包含负载均衡器指标不知道的流量。


您可以选择使用Custom Metrics(例如:每秒查询)来代替从负载均衡器本身收集指标(不会考虑内部流量)。

您的应用程序可以向Cloud Monitoring报告自定义指标。您可以配置Kubernetes来响应这些指标并自动扩展您的工作量。例如,您可以根据指标来扩展应用程序,例如每秒查询,每秒写入,网络性能,与其他应用程序通信时的延迟或其他对您的工作负载有意义的指标。 可以为以下任意一项选择自定义指标:

  • 特定节点,Pod或任何类型的任何Kubernetes对象,包括CustomResourceDefinition(CRD)。
  • 部署中所有Pod报告的指标的平均值

- Cloud.google.com: Kubernetes Engine: Custom and external metrics: Custom metrics

有关于创建Custom Metrics的官方文档:

您还可以查看Metrics Explorer中的可用指标。


通过HPA进行缩放时,您还可以使用多个指标:

如果将工作负载配置为基于多个指标自动扩展,则HPA会分别评估每个指标,并使用扩展算法根据每个指标确定新的工作负载规模。自动缩放操作选择了最大比例。

- Cloud.google.com: Kubernetes Engine: HorizontalPodAutoscaler

关于更多解决方法,您还可以使用CPU使用量指标。


其他资源:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。