你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

可靠性

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

设计清单

  • 为群集启用 Prometheus 指标的抓取。
  • 启用容器见解,以便从群集收集日志和性能数据。
  • 创建诊断设置以收集 AKS 群集的控制平面日志。
  • 启用建议的 Prometheus 警报。
  • 确保支持容器见解的 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 工作区,以便使用日志查询来识别影响可用性的错误和问题。
启用建议的 Prometheus 警报。 检测到问题时,Azure Monitor 中的警报会主动通知你。 首先,使用一组建议的 Prometheus 警报规则 来检测群集最常见的可用性和性能问题。 可以使用容器见解收集的数据添加日志搜索警报
确保支持容器见解的 Log Analytics 工作区可用。 容器见解依赖于 Log Analytics 工作区。 有关确保工作区可靠性的建议,请参阅 Azure Monitor 日志的最佳做法

安全性

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

设计清单

  • 使用群集的托管标识身份验证连接到容器见解。
  • 请考虑使用群集的 Azure 专用链接,通过专用终结点连接到 Azure Monitor 工作区。
  • 使用流量分析来监视传入和传出群集的网络流量。
  • 启用网络可观测性。
  • 确保支持容器见解的 Log Analytics 工作区的安全性。

配置建议

建议 好处
使用群集的托管标识身份验证连接到容器见解。 托管标识身份验证是新群集的默认设置。 如果使用旧式身份验证,应迁移到托管标识以删除基于证书的本地身份验证。
请考虑使用群集的 Azure 专用链接,通过专用终结点连接到 Azure Monitor 工作区。 Prometheus 的 Azure 托管服务将其数据存储在默认使用公共终结点的 Azure Monitor 工作区中。 与公共终结点的连接通过端到端加密进行保护。 如果需要使用专用终结点,可以使用 Azure 专用链接来支持群集通过授权的专用网络连接到工作区。 专用链接还可用于通过 ExpressRoute 或 VPN 强制引入工作区数据。

有关为专用链接配置群集的详细信息,请参阅在 Azure Monitor 中启用专用链接以进行 Kubernetes 监视。 有关使用专用链接查询数据的详细信息,请参阅将专用终结点用于托管 Prometheus 和 Azure Monitor 工作区
使用流量分析来监视传入和传出群集的网络流量。 流量分析可以分析 Azure 网络观察程序 NSG 流日志,帮助洞察 Azure 云中的流量流。 使用此工具可确保群集没有数据外泄,并检测是否公开了任何不必要的公共 IP。
启用网络可观测性。 AKS 的网络可观测性加载项提供在 Kubernetes 网络堆栈中的多个层的可观测性。 监视和观察群集中服务(东西向流量)之间的访问。
确保支持容器见解的 Log Analytics 工作区的安全性。 容器见解依赖于 Log Analytics 工作区。 有关确保工作区安全性的建议,请参阅 Azure Monitor 日志的最佳做法

成本优化

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

配置建议

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

性能效率

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

设计清单

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

配置建议

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

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

后续步骤