【问题标题】:Custom metrics with azure AKS使用 azure AKS 的自定义指标
【发布时间】:2019-12-19 03:44:28
【问题描述】:

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

【问题讨论】:

    标签: azure-aks


    【解决方案1】:

    您要扩展什么指标?它必须在 App Insights 中,这意味着您需要将 AppInsights 客户端 SDK 安装到容器中运行的代码中。您可以使用https://dev.applicationinsights.io/apiexplorer/metrics 测试它是否在您的应用程序洞察实例中。请参阅example walkthrough

    指标kube_pod_status_ready 不是我所知道的应用程序洞察收集的指标。您可能正在查看您的日志分析工作区并打开了 Container Insights。这就是为什么你没有找到。该指标由Container Insights 收集。

    对于 Kubernetes 集群,您通常需要收集三层指标:

    • 基础设施 - 底层 VM 的 CPU/内存/网络/等。在 Azure 中,这主要由 Azure Monitor 收集
    • 平台 - 每个 pod 和 Kubernetes 平台的 CPU/内存/网络/等(pod 就绪/K8s 事件/等)。这通常由 Container Insights 收集(如果您安装它),但也可以由其他第三方工具(例如 Prometheus)收集。
    • 应用程序 - 每秒请求数、请求延迟或其他自定义指标。通过将指标推送到后端的 sdk 库(例如应用程序洞察)或通过拉式机制(例如 Prometheus)轮询应用程序上的指标端点。

    我还想知道您为什么要尝试在 kube_pod_status_ready 上进行扩展?这与处于Ready 状态的 Pod 数量有关,这意味着它们正在运行。您更有可能希望在cpu, memory、每秒请求数或延迟上进行扩展,或者如果事件驱动队列中的项目数(结帐Keda)。

    至于在Prometheus 上使用 AppInsights 和 Containers Insights(您将需要 ELK 堆栈之类的东西来收集日志)或使用第三方(例如 datadog),有很多选择,并且取决于许多变量,例如成本、运营所涉及工具的复杂性和舒适度。这是一个在 stack-overflow 上很难进行的复杂对话,但其基础是托管与自己运行。

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

    【讨论】:

    • 实际上,要了解在哪里收集了哪些指标并不是那么容易,尤其是要了解应用程序洞察背后的逻辑。我是否已接受 AKS 洞察中收集的指标?我找不到对应的 key 和 ID 。我确实创建了一个单独的应用程序洞察力,但是查看“外部”演练我虽然我可以访问一般的资源组。关于缩放案例,我已经实现了 CPU 指标,并且我正在探索其他可能性,例如缩放一种与另一种必要性相关的 pod。
    • 例如,我在 docs.microsoft.com/en-us/azure/azure-monitor/platform/… 上找到的对您使用的自定义指标 performanceCounters/requestsPerSecond 的唯一引用,它属于 Microsoft.Insights/Components 部分。虽然 kube_pod_status_ready 属于 Microsoft.ContainerService/managedClusters,但在我看来收集起来更合理。一般来说,我从演练中得到,我应该能够访问从我的资源组中的 Azure Monitor 收集的所有指标。如果 sp 有什么问题,我想知道。
    • @jsturtevant 如果我错了,请纠正我。 github.com/Azure/azure-k8s-metrics-adapter 是否能够支持基于每秒请求的缩放,而 KEDA 目前还没有?
    • 这似乎已经过时了,我的 prometheus 指标只需添加一些注释即可进入 appinsights。我不知道如何将它们转换为可以在仪表板中填充折线图的指标...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多