使用Azure AKS的自定义指标

时间:2019-12-18 15:20:54

标签: azure-aks

我正在尝试通过指标适配器(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吗?如果是这样,最好的方法是什么?

1 个答案:

答案 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集群,通常要收集三层指标:

  • 基础结构-基础虚拟机的CPU /内存/网络/等。在Azure中,这主要是由Azure Monitor收集的。
  • 平台-每个Pod和Kubernetes平台的CPU /内存/网络/等(pod就绪/ K8s事件/等)。通常,如果您安装了此容器,则通常由Container Insights收集,但也可以由其他第三方工具(例如Prometheus)收集。
  • 应用-每秒请求数,请求延迟或其他自定义指标。通过将指标推送到后端的sdk库(例如应用程序见解)或通过轮询类型的机制(例如Prometheus)来轮询应用程序上的指标端点。

我也想知道为什么您要尝试扩展kube_pod_status_ready?这与处于Ready状态的数字吊舱有关,这意味着它们正在运行。您更可能希望扩展cpu, memory,每秒请求或延迟或事件是否导致队列中项目的数量(结帐Keda)。

关于在Prometheus上使用AppInsights和Containers Insights(您将需要ELK堆栈之类的东西来收集日志)或使用第三方(例如datadog),有很多选择,并且取决于许多变量,例如成本,所涉及工具的操作复杂性和舒适度。这是一个涉及堆栈的对话,在堆栈溢出时很难进行,但是从根本上讲是托管还是自行运行。

披露:我目前在Microsoft工作,并构建了度量适配器,并参与了KEDA项目。