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