我们想要轻松入门Kubernetes平台,并掌握它,我们就要考虑到Kubernetes的复杂性、基础设施的弹性、可扩展性和安全性,从这几个方面入手我们就可以大体掌握这个平台的核心内容,接下为大家带来2024最新Kubernetes平台入门指引。
可观察性和监控通常作为同义词使用,但它们的方法和范围有所不同。监控侧重于跟踪预定义的指标并在违反阈值时触发警报,而可观察性则通过组合指标、日志、事件和跟踪来提供系统状态的整体视图。 Kubernetes 环境中的可观察性包含各种组件,这些组件协同工作以提供对应用程序和基础设施的运行状况和性能的可见性。可观察性使您能够获得更深入的见解并更有效地诊断问题。传统上,可观察性依赖于三个支柱:指标、日志和跟踪。然而,在 Kubernetes 部署环境中,事件在故障排除和深入了解集群运行状况方面发挥着重要作用。因此,我们将探讨 Kubernetes 可观察性的这四个内容,如下所示。
container_cpu_usage_seconds_total{container_name=”oauth-server”, namespace=”production”}[5m]
This metric measures the total CPU time consumed by the oauth-server container in the production
namespace over the last 5 minutes.
2024-03-14T10:00:00Z ERROR [oauth-server] Failed to connect to database: timeout exceeded.
This metric measures the total CPU time consumed by the oauth-server container
in the production namespace over the last 5 minutes.
2024-03-14T10:05:00Z INFO [kubelet] Successfully pulled image “myapp:latest” for pod “myapp-pod” in namespace “production”.
This log shows kubelet's success in pulling the latest image for "myapp-pod"
in the "production" namespace.
Trace ID: 12345. Operation: GET /api/v1/users. Duration: 250ms. Status: Success.
This trace captures a successful GET request to the /api/v1/users endpoint,
taking 250 milliseconds to complete.
Alert: CPU utilization for pod “api-server” in namespace “production” exceeds 80% for more than 5 minutes.
This alert notifies that the CPU utilization of the "api-server" pod has been above 80%
for over 5 minutes, potentially indicating an issue.
可观察性跨越多个层:
通过捕获并关联来自上述各层的数据,您可以全面了解系统的行为并更有效地检测问题。
另一个需要考虑的重要方面是您是运行单个集群还是多个集群。在多集群环境中,可观察性变得更加重要,因为您需要跨不同集群(可能跨越多个区域或云提供商)聚合和关联数据。
对于 ISV 或初创公司来说,在收集的可观察性数据和所需的见解之间取得平衡至关重要。开发人员可能需要更精细的数据来调试和优化特定组件,而操作员和站点可靠性工程师 (SRE) 可能会关注更高级别的指标和事件,以提供整个系统运行状况的全面视图。
考虑到这一点,让我们回顾一下如何使用可观测性数据来解决问题、查找根本原因并采取行动的示例。
想象一下,您正在 Kubernetes 上运行一个流行的电子商务应用程序,在销售高峰期,您开始收到客户的投诉,称在将商品添加到购物车时响应时间慢和间歇性错误。您如何确定此问题的根本原因并解决它?
让我们看一下这个假设场景:
有了这种洞察力,您可以立即采取措施解决问题,例如扩展购物车服务及其数据库。此外,您可以设置适当的警报和通知,以便将来主动检测类似问题。
此示例展示了可观察性在快速识别和诊断复杂分布式系统中的问题方面的强大功能。通过利用指标、日志、跟踪和事件,并将这些来源的数据关联起来,您可以深入了解应用程序的行为,并查明性能问题或故障的根本原因,最终实现更快的解决方案和更好的用户体验。
在 Kubernetes 环境中实现有效的可观察性可能会带来一些挑战,特别是对于资源有限的初创公司和 ISV 而言。以下是一些常见的挑战和注意事项:
为了有效应对这些挑战,ISV 应考虑采用适合其特定需求和限制的可观测性最佳实践,如下节所述。
在 Kubernetes 环境中实现有效的可观察性需要采用结构化方法并遵守最佳实践。以下是关键建议清单。
可观察性是一个持续的过程;它不是一次性的实施成本。随着 Kubernetes 环境的发展,您的可观察性需求也会发生变化。采用迭代方法,不断完善和优化您的可观察性实践,以适应新的要求、新兴技术和不断变化的工作负载。
在开始之前,请定义明确的目的和目标。这些目标可以简单而集中,例如:
对于任何可观察性策略来说,指标都是绝对必要的。从指标开始您的可观察性之旅;它们为理解系统行为和性能提供了基础。
随着您的可观察性之旅逐渐成熟,逐渐将日志和事件合并到您的可观察性堆栈中。日志提供有关应用程序行为的详细信息,有助于进行故障排除和根本原因分析。事件可让您深入了解 Kubernetes 集群中的状态变化和重大事件。
通常不建议中小企业规模的 ISV 从分布式跟踪开始,除非您清楚地了解其复杂性和优势。
对于资源有限的 ISV 和初创公司来说,利用 SaaS 可观察性平台是最佳实践,因为它使他们能够专注于核心业务目标,同时受益于企业级可观察性功能。通过将可观测性基础设施外包给托管服务提供商,团队可以减少运营开销,最大限度地减少对专业知识的需求,并确保其可观测性堆栈的可扩展性和可靠性。
SaaS 可观察性平台提供广泛的功能和优势,包括:
大多数ISV和初创公司资源有限,需要专注于核心业务。利用软件即服务 (SaaS) 可观测性解决方案是一个不错的选择。 Logtail、Papertrail、Datadog、New Relic、Elastic Cloud 或 Grafana Cloud 等托管服务可以以最小的运营开销提供全面的可观察性平台,使您能够专注于核心业务目标,同时受益于可扩展的企业级可观察性。在评估 SaaS 可观察性平台时,请考虑定价、易用性、与现有工具和平台的集成以及客户支持等因素。
使用 kube-prometheus-stack 是自托管可观察性的最佳实践,因为它提供了专门为 Kubernetes 环境量身定制的经过实战测试的集成解决方案。通过利用该堆栈,团队可以快速建立强大的监控和警报系统,而无需进行大量的配置和集成工作。该堆栈遵循最佳实践,并为 Kubernetes 可观察性提供坚实的基础。
kube -prometheus-stack是 Kubernetes 清单、Grafana 仪表板和 Prometheus 规则的集合,提供全面且易于部署的监控和警报堆栈。该堆栈包括流行的开源工具,例如 Prometheus、Grafana 和 Alertmanager,具有最佳实践警报,并经过预先配置以与 Kubernetes 无缝协作。该堆栈可以扩展以监视和分析 Kubernetes 事件和日志,从而提供有关集群状态和资源变化的宝贵见解。我们推荐使用 K ubernetes 入门套件(第 4 章 – 可观察性)教程来自定义安装,包括数据管理。
我们推荐Loki使用 Grafana 来记录日志。 Loki 是 Grafana Labs 开发的一个可扩展且高度可用的多租户日志聚合系统,专注于简单性和效率。它旨在为存储和查询大量日志数据(在 S3/Spaces 存储中)提供经济高效的解决方案。与对日志内容进行索引的传统日志聚合系统不同,Loki 允许用户使用标签来搜索日志,而不需要全文搜索。这种设计选择显着降低了存储和计算要求。 Loki 与 Grafana 无缝集成,支持丰富的查询和可视化功能。
为了进一步增强 kube-prometheus-stack 的警报功能,请考虑集成Robusta等工具。 Robusta 可以丰富来自 Alertmanager 和 Kubernetes 事件的警报,提供额外的上下文并简化警报管理。它有助于主动识别和响应问题。
使用 Grafana 仪表板时,建议对其进行定制以满足不同的用户角色。开发人员可能需要更精细的信息来进行调试和优化,而运营商和 SRE 可能会从更高级别的系统运行状况和性能视图中受益。根据用户角色自定义仪表板可以提高工作效率并提供可行的见解。
控制可观测性成本涉及实施管理和优化可观测性数据的存储和保留的策略。随着 Kubernetes 环境的发展并生成越来越多的指标、日志和事件,这些数据的存储需求可能会迅速升级,如果管理不当,会导致巨大的成本。
为了理解成本控制的重要性,让我们考虑一个 10 节点 Kubernetes 集群的示例。假设每个节点平均每天生成 100 MB 的日志数据,每分钟生成 100 个指标。在这种情况下,每日存储需求为:
日志数据:10个节点×100MB/天=1GB/天
指标数据:10 个节点 × 100 个指标/分钟 × 1440 分钟/天 × 8 字节/指标 = 115 MB/天
每月大约有 30 GB 的日志和 3.45 GB 的指标。这些费用会迅速增加,从而增加您的成本。
为了控制成本,请考虑以下策略:
许多 ISV 运营多个 Kubernetes 集群。虽然您仍然可以通过 kube-prometheus-stack 的独立部署和良好的警报(例如 slack 集成)进行管理,但集中可观察性成为这些情况下的最佳实践。
集中可观察性具有以下好处。
上图描述了这样的架构。要在多集群环境中集中可观察性,您可以利用 Grafana Mimir 或 Thanos 等工具。这些工具旨在聚合和联合来自多个 Prometheus 实例的可观测性数据,这些数据通常用于监控 Kubernetes 集群。
Grafana Mimir 是一个高度可扩展的分布式时间序列数据库,可以从多个 Prometheus 服务器获取和存储指标。您只需将 Mimir 作为数据源连接到 Grafana 即可。它节省了大量配置,而且您不必在每个集群上公开每个 prometheus 服务。现在,您可以拥有跨所有连接集群的全局查询视图,从而能够执行跨集群分析和可视化。 Mimir 还提供水平可扩展性、高可用性和长期存储功能等功能。
在集中可观测性时,请考虑以下几个方面:
可观察性是一个持续的旅程;持续改进和适应是成功的关键。定期审查和完善您的可观察性实践,以适应不断变化的业务需求和技术进步。
随着我们继续探索 ISV 采用 Kubernetes 的旅程,我们正在进行的博客系列将更深入地探讨部署的弹性、效率和安全性。
其中每个内容对于解决 Kubernetes 的复杂性、增强基础设施的弹性、可扩展性和安全性都至关重要,希望上面的2024最新Kubernetes入门指引可以让你轻松掌握平台的使用技巧。