我正在尝试通过指标适配器(https://github.com/Azure/azure-k8s-metrics-adapter)在AKS集群中实现自定义指标。
在各种示例之后,我能够部署适配器,但不能部署自定义指标,例如:
apiVersion: azure.com/v1alpha2
kind: CustomMetric
metadata:
name: count-ready-pods
namespace: custom-metrics
spec:
metric:
metricName: kube_pod_status_ready
正确配置了资源结果(我在默认名称空间和自定义指标中都尝试过),并查看azure-k8s-metrics-adapter的pod的日志,似乎已处理完毕。
一般来说,我既无法从kubectl get --raw“ /apis/custom.metrics.k8s.io/v1beta1”也无法从特定的hpa(导致 unknown 当前值)。
检查Application Insights,我得到了这些指标。
我的集群运行kubernetes 1.13.12。
有人知道我在做什么错吗? 如何检查生成的服务主体可以有效访问所需的应用程序见解?
有人建议改用Prometheus吗?如果是这样,最好的方法是什么?
答案 0 :(得分:2)
您要扩展什么指标?它必须在App Insights中,这意味着您需要将AppInsights客户端SDK安装到容器中运行的代码中。您可以使用https://dev.applicationinsights.io/apiexplorer/metrics来测试它是否在应用程序见解实例中。参见example walkthrough。
指标kube_pod_status_ready
不是我所了解的应用程序见解所收集的指标。您可能正在Log Analytics工作区中查找并打开了Container Insights。这就是为什么您找不到的原因。该指标由Container Insights收集。
对于Kubernetes集群,通常要收集三层指标:
我也想知道为什么您要尝试扩展kube_pod_status_ready
?这与处于Ready
状态的数字吊舱有关,这意味着它们正在运行。您更可能希望扩展cpu, memory,每秒请求或延迟或事件是否导致队列中项目的数量(结帐Keda)。
关于在Prometheus上使用AppInsights和Containers Insights(您将需要ELK堆栈之类的东西来收集日志)或使用第三方(例如datadog),有很多选择,并且取决于许多变量,例如成本,所涉及工具的操作复杂性和舒适度。这是一个涉及堆栈的对话,在堆栈溢出时很难进行,但是从根本上讲是托管还是自行运行。
披露:我目前在Microsoft工作,并构建了度量适配器,并参与了KEDA项目。