使用 Azure Monitor 监视 Kubernetes 的最佳做法

Azure Monitor 提供一 组服务 ,用于监视 Azure Kubernetes 服务(AKS)已启用 Azure Arc 的 Kubernetes 群集的运行状况和性能。 如果没有适当的配置,监视设置可能会错过关键问题或收集不必要的数据,从而导致可见性差距或成本增加。

本文提供了基于 Azure Well-Architected Framework 中体系结构卓越五大支柱的最佳做法,以帮助为 Kubernetes 群集配置可靠、安全且经济高效的监视。

Kubernetes 监控的最佳可靠性实践

通过启用 Prometheus 指标、容器见解、控制平面诊断设置和警报规则,确保 Azure Kubernetes 服务(AKS)和已启用 Azure Arc 的 Kubernetes 群集监视的可靠性。 这些建议可帮助你检测和响应群集及其监视组件中的故障。

设计清单

  • 为群集启用 Prometheus 指标抓取。
  • 启用容器监控,以便从群集收集日志和性能数据。
  • 创建诊断设置以收集 AKS 群集的控制平面日志。
  • 启用建议的 Prometheus 警报。
  • 确保支持容器见解的 Log Analytics 工作区可用。

配置建议

建议 益处
为群集启用 Prometheus 指标抓取。 如果还没有 Prometheus 环境,请在群集上使用适用于 Prometheus 的 Azure Monitor 托管服务启用 Prometheus。 使用 Azure Managed Grafana 分析收集的 Prometheus 数据。 请参阅在适用于 Prometheus 的 Azure Monitor 托管服务中自定义 Prometheus 指标的抓取,了解如何收集默认配置以外的其他指标。
启用从群集收集日志和性能数据。 容器见解从群集中的每个节点收集 stdout/stderr 日志、性能指标和 Kubernetes 事件。 它提供用于分析此数据的仪表板和报表,包括节点和其他组件的可用性。 使用 Log Analytics 识别收集的日志中的任何可用性错误。
创建诊断设置以收集 AKS 群集的控制平面日志。 AKS 将控制平面日志作为 Azure Monitor 中的资源日志实现。 创建诊断设置以将这些日志发送到 Log Analytics 工作区,以便使用日志查询来识别影响可用性的错误和问题。
启用建议的 Prometheus 警报。 Azure Monitor 中的警报会在检测到问题时主动通知你。 首先,使用一组建议的 Prometheus 警报规则 来检测群集最常见的可用性和性能问题。 请考虑使用容器见解收集的数据添加 日志搜索警报
确保支持容器见解的 Log Analytics 工作区可用。 容器见解依赖于 Log Analytics 工作区。 有关确保工作区可靠性的建议,请参阅 Azure Monitor 日志的最佳做法

Kubernetes 监控的安全最佳做法

Azure Monitor 支持 Kubernetes 群集的最低特权访问和深度防御。 这些安全建议涵盖托管标识身份验证、专用链接连接、网络可观测性和 Log Analytics 工作区安全性。

使用托管身份验证将群集连接到容器监控

托管标识身份验证 是新群集的默认身份验证方法。 如果使用旧身份验证,请迁移到托管标识以删除基于证书的本地身份验证。

说明迁移到托管标识身份验证

Prometheus 的 Azure 托管服务将其数据存储在 Azure Monitor 工作区中,该工作区默认使用公共终结点。 Microsoft使用端到端加密保护与公共终结点的连接。 如果需要专用终结点,请使用 Azure 专用链接 允许群集通过授权的专用网络连接到工作区。 还可以使用专用链接强制通过 ExpressRoute 或 VPN 引入工作区数据。

说明:有关如何配置群集以启用专用链接的详细信息,请参阅 在 Azure Monitor 中为 Kubernetes 监视启用专用链接 。 有关如何通过专用链接查询数据的详细信息,请参阅 适用于托管 Prometheus 和 Azure Monitor 工作区的专用终结点

使用流量分析监视传入和传出群集的网络流量

流量分析可以分析 Azure 网络观察程序 NSG 流日志,帮助洞察 Azure 云中的流量流。 使用此工具可确保群集没有数据外泄,并检测是否公开了任何不必要的公共 IP。

启用网络可观测性

AKS 的网络可观测性加载项 在 Kubernetes 网络堆栈的多个层之间提供可观测性。 监视和观察群集中服务之间的访问(东西向流量)。

说明为 Azure Kubernetes 服务设置容器网络可观测性(AKS)

保护 Log Analytics 工作区

容器见解将数据发送到 Log Analytics 工作区。 请确保保护 Log Analytics 工作区中的日志引入和存储。

说明日志引入和存储

Kubernetes 监控的成本优化

通过优化数据收集、配置适当的定价层和消除冗余指标收集来降低 Kubernetes 监视的 Azure Monitor 成本。 请参阅 Azure Monitor 成本和使用情况 ,了解如何使用 Azure Monitor 费用以及如何查看每月帐单。

注释

有关 Azure Monitor 的所有功能的成本优化建议,请参阅优化 Azure Monitor 中的成本

设计清单

  • 通过适用于 Prometheus 的 Azure Monitor 托管服务启用指标收集。
  • 配置代理收集以修改容器见解中的数据收集。
  • 按容器见解修改指标数据的收集设置。
  • 如果你不使用 Azure 门户中的容器见解体验,请禁用容器见解指标数据的收集。
  • 如果不定期查询容器日志表或将其用于警报,请将其配置为基本日志。
  • 限制收集不需要的资源日志。
  • 对 AKS 资源日志使用特定于资源的日志记录,并将表配置为基本日志。
  • 使用 OpenCost 收集有关 Kubernetes 成本的详细信息。

配置建议

建议 益处
通过适用于 Prometheus 的 Azure Monitor 托管服务启用指标收集。 请确保不要同时将 Prometheus 指标发送到 Log Analytics 工作区。 可以通过启用托管 Prometheus,使用适用于 Prometheus 的Azure Monitor 托管服务来抓取群集中的 Prometheus 指标。 还可以配置容器监控功能以 在 Log Analytics 工作区中收集 Prometheus 指标,但不推荐这种方法,因为它与托管的 Prometheus 数据冗余,因此会产生额外的成本。 有关详细信息,请参阅托管 Prometheus 定价
配置代理以修改容器见解中的数据收集。 按照优化容器见解的监视成本中的说明分析容器见解收集的数据,并调整配置以停止收集不需要的数据。
按容器见解修改指标数据的收集设置。 有关修改指标数据收集的频率和容器见解收集的命名空间的详细信息,请参阅 “启用成本优化设置 ”。
如果你不使用 Azure 门户中的容器见解体验,请禁用容器见解指标数据的收集。 容器见解会收集许多与托管 Prometheus 相同的指标值。 可以通过将容器见解配置为仅收集日志和事件来禁用这些指标的收集,如在容器见解中启用成本优化设置中所述。 此配置在 Azure 门户中禁用容器见解体验,但你可以使用 Grafana 将 Prometheus 指标可视化,并使用 Log Analytics 分析容器见解收集的日志数据。
如果不定期查询容器日志表或将其用于警报,请将其配置为基本日志。 将容器见解架构转换为 ContainerLogV2,该架构与基本日志兼容,可节省大量成本,如 “优化容器见解监视成本”中所述。
限制收集不需要的资源日志。 AKS 群集的控制平面日志作为 Azure Monitor 中的资源日志实现。 创建诊断设置,以便将此数据发送到 Log Analytics 工作区。 有关应收集的类别的建议,请参阅收集 AKS 群集的控制平面日志
对 AKS 资源日志使用特定于资源的日志记录,并将表配置为基本日志。 AKS 对资源日志支持 Azure 诊断模式或特定于资源的模式。 指定资源日志,以启用配置基本日志表的选项,此选项可降低仅用于偶尔查询且不用于警报的日志的引入费用。
使用 OpenCost 收集有关 Kubernetes 成本的详细信息。 OpenCost 是一个开源、供应商中立的CNCF 沙盒项目,用于了解 Kubernetes 成本和支持 AKS 成本可见性。 它将详细的成本数据和特定于客户的 Azure 定价导出到 Azure 存储,以帮助分析和分类成本。

Kubernetes 监控的运营卓越

使用 Azure Monitor 简化 Kubernetes 群集监视的运营管理。 这些建议涵盖所有 Kubernetes 层的监视指南、混合群集的 Azure Arc 集成、托管的云原生工具和基于策略的自动化数据收集。

设计清单

  • 查看有关监视 Kubernetes 环境所有层的指南。
  • 使用已启用 Azure Arc 的 Kubernetes 来监视 Azure 外部的群集。
  • 将 Azure 托管服务用于云原生工具。
  • 将 AKS 群集集成到现有的监视工具中。
  • 使用 Azure Policy 从 Kubernetes 群集启用数据收集。

配置建议

建议 益处
查看有关监视 Kubernetes 环境所有层的指南。 使用容器见解监视 Kubernetes 群集性能,包括从网络、群集和应用程序层监视整个 Kubernetes 环境的指南和最佳做法。
使用已启用 Azure Arc 的 Kubernetes 来监视 Azure 外部的群集。 已启用 Azure Arc 的 Kubernetes 允许使用与 AKS 群集相同的工具(包括适用于 Prometheus 的容器见解和 Azure Monitor 托管服务)监视在其他云中运行的 Kubernetes 群集。
将 Azure 托管服务用于云原生工具。 适用于 Prometheus 的 Azure Monitor 托管服务Azure 托管 Grafana 支持云本机工具 Prometheus 和 Grafana 的所有功能,而不必操作其底层基础结构。 可以以尽量小的开销快速预配这些工具并载入 Kubernetes 群集。 通过这些服务,可以访问广泛的社区规则和仪表板库来监视 Kubernetes 环境。
将 AKS 群集集成到现有的监视工具中。 如果您对 Prometheus 和 Grafana 有现有投资,请按照使用 Azure 服务和云原生工具监视 Kubernetes 群集中的指南,将 AKS 群集和 Azure 管理服务集成到您的现有环境中。
使用 Azure 策略启用从 Kubernetes 群集收集数据。 使用 Azure Policy 启用 Prometheus 指标日志收集和诊断设置。 这可确保自动监视任何新群集并强制实施其监视配置。

Kubernetes 监控的性能效率

通过启用 Prometheus 指标收集、容器见解和性能警报规则,使用 Azure Monitor 跟踪 Kubernetes 群集性能。 这些建议可帮助你识别性能瓶颈并有效地缩放群集。

设计清单

  • 为群集启用 Prometheus 指标集合。
  • 启用容器见解以跟踪群集的性能。
  • 启用建议的 Prometheus 警报。

配置建议

建议 益处
为群集启用 Prometheus 指标集合。 Prometheus 是来自 Cloud Native Computing Foundation 的云原生指标解决方案,也是用于从 Kubernetes 群集收集和分析指标数据的最常见工具。 如果还没有 Prometheus 环境,请在群集上使用适用于 Prometheus 的 Azure Monitor 托管服务启用 Prometheus。 使用 Azure 托管的 Grafana 分析 Prometheus 收集到的数据。

请参阅在适用于 Prometheus 的 Azure Monitor 托管服务中自定义 Prometheus 指标的抓取,了解如何收集默认配置以外的其他指标。
启用容器见解以跟踪群集的性能。 为 Kubernetes 群集启用容器见解时,可以使用视图工作簿来跟踪群集组件的性能。 此数据可能与 Prometheus 收集的数据重叠。 有关成本建议,请参阅 成本优化
启用建议的 Prometheus 警报。 Azure Monitor 中的警报会在检测到问题时主动通知你。 首先,使用一组建议的 Prometheus 警报规则 来检测群集最常见的可用性和性能问题。 请考虑使用容器见解收集的数据添加 日志搜索警报