我在GCP的Kubernetes上部署了一个简单的spring boot应用程序。该服务公开给外部IP地址。我正在使用JMeter对该应用程序进行负载测试。这只是一个HTTP GET
请求,它返回True
或False
。
我想随时间获取延迟指标,以将其反馈给HorizontalPodAutoscaler以实现自定义自动缩放器。我该如何实现?
答案 0 :(得分:3)
自从您提到自定义自动缩放器。我会建议这个简单的解决方案,它利用您可能已经拥有的一些工具。
第一部分::将创建服务或cron或任何基于时间的触发器,这些触发器将定期向已部署的应用程序发出请求。然后,该应用程序会将结果指标存储到持久性存储或文件或数据库等中。
例如,如果您使用简单的Apache Benchmark CLI工具(您也可以使用Jmeter或生成结构化o / p的任何其他负载测试工具),则将获得单个查询的详细结果。使用this link来获取结果以供参考。
第二部分是同一脚本还可以触发另一个事件,该事件将检查根据您的要求配置的延迟或响应时间限制。如果响应时间低于配置的值刻度,而响应时间低于缩小的比例。
缩小规模的逻辑可能更琐碎,但我将留给您。
现在要实际扩展部署,可以使用Kubernetes API。您可以参考官方文档或this answer以获取详细信息。这是一个简单的流程图。
答案 1 :(得分:1)
使用自定义指标自动缩放的方法有两种:
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
您可以通过搜索自定义/ [METRIC_NAME]
从Metrics Explorer中查看导出的指标。
您的指标需要满足以下要求:
在GitHub上查看此代码以获取其他代码