如何获得部署在Kubernetes上的服务的延迟?

问题描述 投票:1回答:2

我在GCP的Kubernetes上部署了一个简单的spring boot应用程序。该服务公开给外部IP地址。我正在使用JMeter对该应用程序进行负载测试。这只是一个HTTP GET请求,它返回TrueFalse

我想随时间获取延迟指标,然后将其反馈给Horizo​​ntalPodAutoscaler以实现自定义自动缩放器。我该如何实施?

kubernetes google-cloud-platform prometheus latency google-cloud-stackdriver
2个回答
0
投票

有两种使用自定义指标自动缩放的方法:

1。您可以从部署中的每个Pod导出自定义指标,并指定每个Pod的平均值。2.您可以从Deployment外部的单个Pod中导出自定义指标,并定位总价值。因此,请遵循这些-1.要授予GKE对象访问Stackdriver中存储的指标的权限,您需要部署“自定义指标Stackdriver适配器”。要运行自定义度量适配器,您必须通过运行以下命令授予用户创建所需授权角色的能力:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin --user "$(gcloud config get-value account)"

要部署适配器-

kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter.yaml

  1. 您可以直接从应用程序中将指标导出到Stackdriver,也可以将其以Prometheus格式公开,然后将Prometheus-to-Stackdriver适配器添加到Pod的容器中。

您可以通过搜索custom / [METRIC_NAME]从Metrics Explorer中查看导出的指标您的指标需要满足以下要求:

  • 公制种类必须是量规
  • 指标类型可以是DOUBLE或INT64
  • 指标名称必须以custom.googleapis.com/前缀开头,后跟一个简单名称
  • 资源类型必须为“ gke_container”
  • 资源标签必须包括:
    • pod_id设置为Pod UID,可以通过Downward API获得
    • container_name =“”
    • project_id,zone,cluster_name,可以由您的应用程序从元数据服务器获取。要获取价值,您可以使用Google Cloud的计算元数据客户端。
  • namespace_id,instance_id,可以设置为任何值。3.一旦将指标导出到Stackdriver,就可以部署HPA以根据指标扩展部署。

GitHub上查看此附加代码


0
投票

因为您提到了Custom Auto Scaler。我建议这个简单的解决方案,它利用了您可能已经拥有的一些工具。

第一部分:用于创建服务或cron或任何基于时间的触发器,这些触发器将定期向已部署的应用程序发出请求。然后,该应用程序会将结果度量存储到持久性存储或文件或数据库等。

例如,如果您使用简单的Apache Benchmark CLI工具(您也可以使用Jmeter或生成结构化o / p的任何其他负载测试工具),则将获得单个查询的详细结果。使用this link得出结果以供参考。

第二部分是同一脚本还可以触发另一个事件,该事件将检查根据您的要求配置的延迟或响应时间限制。如果响应时间低于配置的值刻度,而响应时间低于缩小的比例。

缩减逻辑可能更琐碎,但我将留给您。

现在可以实际扩展部署了,您可以使用Kubernetes API。您可以参考官方文档或this answer了解详细信息。这是一个简单的流程图。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.