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

本文提供了用于监视 Azure Kubernetes 服务 (AKS)已启用 Azure Arc 的 Kubernetes 群集运行状况和性能的最佳做法。 本指南基于 Azure 架构良好的框架中描述的卓越体系结构的五大支柱。

可靠性

在云端,我们承认故障总会发生。 我们的目标不是试图防止各种故障,而是最大程度地减轻单个组件故障造成的影响。 使用以下信息来确保 Kubernetes 群集和监视环境的可靠性。

设计清单

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

配置建议

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

安全

安全性是任何体系结构最为重视的方面之一。 Azure Monitor 提供了采用最低特权原则和深度防御原则的功能。 使用以下信息监视 Kubernetes 群集,并确保只有授权用户可以访问收集的数据。

使用托管标识身份验证将群集连接到容器见解

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

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

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 工作区中保护日志引入和存储。

说明日志引入和存储

成本优化

成本优化是指可以减少不必要的费用以及提高运营效率的方法。 通过了解不同的配置选项和减少数据收集量的可能设置,可以显著降低 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 集群的运行监控要求降到最低。

设计清单

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

配置建议

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

性能效率

性能效率是指工作负荷能够以高效的方式扩展以满足用户对它的需求。 使用以下信息监视 Kubernetes 群集的性能,并确保它们的配置可实现最佳性能。

设计清单

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

配置建议

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

请参阅在适用于 Prometheus 的 Azure Monitor 托管服务中自定义 Prometheus 指标的抓取,了解如何收集默认配置以外的其他指标。
启用容器见解以跟踪群集的性能。 为 Kubernetes 群集启用容器见解时,可以使用视图工作簿来跟踪群集组件的性能。 此数据可能与 Prometheus 收集的数据重叠。 有关成本的建议,请参阅成本优化

后续步骤