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

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

可靠性

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

设计清单

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

配置建议

建议 好处
启用容器见解,以便从群集收集日志和性能数据。 容器见解从群集中的每个节点收集 stdout/stderr 日志、性能指标和 Kubernetes 事件。 它提供用于分析此数据的仪表板和报表,包括节点和其他组件的可用性。 使用 Log Analytics 识别收集的日志中的任何可用性错误。
创建诊断设置以收集 AKS 群集的控制平面日志。 AKS 将控制平面日志作为 Azure Monitor 中的资源日志实现。 创建诊断设置以将这些日志发送到 Log Analytics 工作区,以便使用日志查询来识别影响可用性的错误和问题。
确保支持容器见解的 Log Analytics 工作区可用。 容器见解依赖于 Log Analytics 工作区。

安全性

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

设计清单

  • 使用群集的托管标识身份验证连接到容器见解。
  • 使用流量分析来监视传入和传出群集的网络流量。
  • 启用网络可观测性。
  • 确保支持容器见解的 Log Analytics 工作区的安全性。

配置建议

建议 好处
使用群集的托管标识身份验证连接到容器见解。 托管标识身份验证是新群集的默认设置。 如果使用旧式身份验证,应迁移到托管标识以删除基于证书的本地身份验证。
使用流量分析来监视传入和传出群集的网络流量。 流量分析可以分析 Azure 网络观察程序 NSG 流日志,帮助洞察 Azure 云中的流量流。 使用此工具可确保群集没有数据外泄,并检测是否公开了任何不必要的公共 IP。
启用网络可观测性。 AKS 的网络可观测性加载项提供在 Kubernetes 网络堆栈中的多个层的可观测性。 监视和观察群集中服务之间的访问。
确保支持容器见解的 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 外部的群集。
  • 将 AKS 群集集成到现有的监视工具中。
  • 使用 Azure policy 启用从 Kubernetes 群集收集数据。

配置建议

建议 好处
查看有关监视 Kubernetes 环境所有层的指南。 使用容器见解监视 Kubernetes 群集性能,包括从网络、群集和应用程序层监视整个 Kubernetes 环境的指南和最佳做法。
使用已启用 Azure Arc 的 Kubernetes 来监视 Azure 外部的群集。 已启用 Azure Arc 的 Kubernetes 允许使用与 AKS 群集相同的工具(包括容器见解)来监视在其他云中运行的 Kubernetes 群集。
将 AKS 群集集成到现有的监视工具中。 如果已经在 Prometheus 和 Grafana 有所投入,请使用使用 Azure 服务和云原生工具监视 Kubernetes 群集中的指南,将 AKS 群集和 Azure 托管服务集成到现有环境中。
使用 Azure policy 启用从 Kubernetes 群集收集数据。 使用 Azure Policy 启用数据收集,以便启用容器见解诊断设置。 这可确保自动监视任何新群集并强制实施其监视配置。

性能效率

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

设计清单

  • 启用容器见解以跟踪群集的性能。

配置建议

建议 好处
启用容器见解以跟踪群集的性能。 为 Kubernetes 群集启用容器见解时,可以使用视图工作簿来跟踪群集组件的性能。 有关成本的建议,请参阅成本优化

后续步骤