如何观察 Kubernetes 指标和部署:全面指南

Kubernetes 是一个高度动态的容器编排系统,有效监控它对维护性能、可靠性和安全至关重要。Kubernetes 的可观察性确保高可用性和系统的最佳性能。由于 Kubernetes 环境动态且分布式,有效监控部署、Pod 和系统指标需要全面的可观察性方法。这包括跟踪实时指标、日志和追踪,以了解应用程序和基础设施组件的行为。 在此了解更多关于 Kubernetes 监控的信息。

本指南涵盖如何执行 Kubernetes 监控 针对指标和部署进行深入探讨,使用本地工具 (kubectl,Metrics Server) 和第三方解决方案 (Prometheus,Grafana,ManageEngine Applications Manager).

Kubernetes 可观察性的必要性:为何比以往更重要

Kubernetes 环境本质上是短暂且复杂的。工作负载不断创建、扩展和销毁。此动态性加上微服务架构的分布式特性,需要强大的可观察性策略。缺乏策略将导致:

  • 无法预测的性能: 短暂的工作负载和自动扩展可能导致资源波动,影响应用性能。
  • 排查难题: 分布式微服务使得没有端到端请求跟踪时难以定位问题根因。
  • 安全漏洞: 缺乏对应用行为的可见性,会使系统容易受到安全威胁。
  • 资源浪费: 资源分配效率低下会导致不必要的成本。

为缓解这些风险并确保 Kubernetes 部署的顺利运行,必须拥抱可观察性的三大支柱:

  • 指标: 实时的数值数据,提供系统和应用性能的量化视图。
  • 日志: 事件和错误的文本记录,提供应用行为的上下文洞察。
  • 追踪: 请求在微服务中传播的端到端跟踪,揭示依赖关系和延迟。

结合这些元素,DevOps 团队可以检测异常、排查问题并优化性能。

观察 Kubernetes 指标:您的集群脉搏

指标提供了对 Kubernetes 环境的实时、量化视图。Kubernetes 提供多种内置和外部工具以捕获指标。以下是获取 Kubernetes 指标的几种方法:

1. 利用 Kubernetes Metrics Server 获取基本资源洞察:

Metrics Server 是一个轻量级的集群内资源使用数据聚合器,适用于:

  • 水平 Pod 自动扩展(HPA): 基于资源利用率实现动态扩展。
  • 快速资源检查: 提供节点和 Pod 的 CPU 与内存使用快照。
  • 排查突发峰值: 识别即时资源瓶颈。

安装:

使用以下 bash 脚本:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

验证:

kubectl get deployment metrics-server -n kube-system

常用命令:

Kubernetes 通过 Metrics Server 暴露关键资源使用数据。以下是获取资源使用的部分命令:

  • kubectl top nodes: Node CPU/memory usage.
  • kubectl top pods --all-namespaces: Pod CPU/memory usage.
  • kubectl describe pod <pod-name>: Detailed pod info (resource requests/limits).
  • kubectl get pods --all-namespaces: Pod status list.

限制:

Metrics Server 不存储历史数据,限制了其对长期趋势分析的适用性。

2. Prometheus 监控 Kubernetes 指标

Prometheus 是 Kubernetes 指标监控的事实标准,因其提供:

  • 长期存储: 支持历史数据分析和趋势识别。
  • PromQL: 一种强大的查询语言,用于从指标中提取细粒度洞察。
  • Grafana 集成: 提供丰富的可视化和仪表盘。

设置 Prometheus 进行 Kubernetes 监控的步骤:

使用 Helm 部署 Prometheus:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

验证安装:

kubectl get pods -n monitoring

访问 Prometheus 仪表盘:

kubectl port-forward svc/prometheus-server 9090:80 -n monitoring

关键指标和 PromQL 查询:

查询描述
up{job="kubernetes-nodes"}检查节点可用性。
sum(rate(node_cpu_seconds_total{mode="user"}[5m])) by (node)计算每个节点的 CPU 使用率。
sum(kube_pod_container_status_restarts_total) by (pod, namespace)跟踪 Pod 重启次数。
histogram_quantile(0.95, rate(http_server_requests_seconds[5m]))测量 95 百分位请求延迟。

或者,

为简化 Kubernetes 监控 体验,ManageEngine Applications Manager 提供预配置仪表盘和 AI 驱动的异常检测,避免了手动配置 Prometheus 的复杂性。

观察 Kubernetes 部署

观察 Kubernetes 部署有两种方法:

1. 使用 Kubectl 监控部署

如何监控 Kubernetes 部署

可以使用以下命令实时观察 Kubernetes 部署:

命令描述
kubectl get deployments --all-namespaces列出所有部署。
kubectl describe deployment <deployment-name>描述特定部署。
kubectl rollout status deployment <deployment-name>监控滚动更新。
kubectl logs -f <pod-name>查看详细 Pod 日志。

2. 使用 Grafana 可视化部署

结合 Grafana 的可视化能力和 Prometheus 的指标收集,可深入了解 Kubernetes 部署。以下是获取 Kubernetes 部署可视化报告的步骤:

  • 通过 Helm 安装 Grafana:

    helm install grafana grafana/grafana
  • 访问仪表盘:

    kubectl port-forward svc/grafana 3000:80
  • 从 Grafana Labs 导入预构建的 Kubernetes 监控仪表盘。

或者,

ManageEngine Applications Manager 可直接集成 Kubernetes,实现实时部署可视化和异常监控。它通过与 Prometheus 无缝集成,允许摄取现有 Prometheus 指标并与其他 IT 基础设施数据集中管理,提供预构建仪表盘、AI 驱动的异常检测减少警报疲劳及关联能力加速排障,同时支持 Kubernetes 资源的自动发现并保持供应商中立,简化了 Kubernetes 的可观察性,无需复杂的独立 Prometheus 配置。

观察 Kubernetes 日志以获取更深入的洞察

日志对于调试、排查问题和深入了解应用内部工作机制至关重要。有效的日志可观察性对于识别部署失败、定位性能瓶颈和维护 Kubernetes 环境整体健康非常关键。以下是两种日志观察方法:

1. 原生 Kubernetes 日志

Kubernetes 命令行工具 kubectl 提供直接访问 Pod 日志的功能,是检查应用行为的快速高效方式。

命令目的用例
kubectl logs <pod-name>获取指定 Pod 中主容器的日志。该命令适合快速检查单个应用进程的输出。快速诊断单容器 Pod 中的问题,检查应用初始化消息,或监视特定进程的输出。
kubectl logs <pod-name> --all-containers聚合并显示指定 Pod 中所有容器的日志。适用于调试包含多个 sidecar 容器或紧密交互微服务的复杂 Pod。排查多容器间的交互问题,检查 sidecar 容器(例如日志代理、服务网格)的日志,或分析多组件应用的行为。

2. 使用 Fluentd & Elasticsearch 集中日志聚合

对于大规模 Kubernetes 部署,集中日志聚合解决方案不可或缺。EFK 堆栈(Fluentd、Elasticsearch、Kibana)提供了强大且可扩展的日志管理与分析平台。

观察 Kubernetes 追踪以监控微服务

在微服务架构中,请求遍历多个服务,分布式追踪对于理解请求流和定位性能瓶颈不可或缺。

用于 Kubernetes 追踪的 Jaeger

Jaeger 是领先的开源追踪解决方案,可视化请求路径并识别微服务间的延迟问题。

实施步骤:

  • 通过 Helm 安装 Jaeger:

    helm install jaeger jaegertracing/jaeger
  • 使用 OpenTelemetry SDK 为应用进行自动化埋点。
  • 访问 Jaeger UI:

    kubectl port-forward svc/jaeger-query 16686:80

或者,

ManageEngine Applications Manager 简化了追踪过程。避免安装配置 Jaeger 和 SDK 埋点的复杂性。Applications Manager 提供集成的分布式追踪,简化微服务的可观察性。

总之,有效的 Kubernetes 可观察性不是一次性设置,而是持续监控、分析和优化的过程。通过拥抱三大支柱并利用合适的工具,您可以保障 Kubernetes 部署的健康、性能和安全。

使用 ManageEngine Applications Manager 实现 Kubernetes 可观察性自动化

说实话,手动配置上述可观察性指南非常繁琐。对于寻求简化、无忧碍 Kubernetes 监控 解决方案,提供主动洞察和运营效率的企业,ManageEngine Applications Manager 是一个强大且直观的平台。它旨在减轻复杂 Kubernetes 监控设置的负担,提供一套强大功能,带来即时价值和长期收益。其核心功能包括:

  • 预配置 Kubernetes 监控仪表盘: 消除从零构建自定义仪表盘的耗时过程。Applications Manager 提供现成仪表盘,可即时显示 Kubernetes 集群、节点、Pod 和容器的健康与性能。这些仪表盘精心设计,展示关键指标和日志,帮助团队快速识别趋势、异常和潜在问题。
  • 集群、节点和 Pod 健康的实时警报: 通过实时警报,及时获知关键事件和性能偏差,领先潜在问题。Applications Manager 智能警报系统监控 Kubernetes 基础设施的健康,立即通知节点故障、Pod 崩溃、资源枯竭等关键情况,确保团队迅速响应,最大限度减少停机时间。
  • AI 驱动的异常检测: 超越传统阈值警报,采用 AI 异常检测。Applications Manager 的机器学习算法分析历史数据,识别 Kubernetes 指标中不寻常的模式,使您能够主动发现微妙的性能劣化和潜在问题,减少误报从而降低警报疲劳。
  • 多集群可视化: 实现跨多个集群和云提供商的 Kubernetes 部署统一视图。ManageEngine Applications Manager 提供集中可视化,帮助您从单一界面监控和管理整个 Kubernetes 生态系统,简化多集群管理,确保所有环境中一致的监控实践。
  • 轻松集成 Prometheus: 与现有可观察性工具和流程无缝集成。ManageEngine Applications Manager 提供与 Prometheus 等流行工具的开箱即用集成,充分利用现有投资,构建统一的可观察性生态系统。此供应商中立的做法尤为重要。

通过正确的可观察性策略,组织能够主动检测问题,优化资源利用,并保持 Kubernetes 基础设施的弹性。

为什么选择 Applications Manager?

凭借直观的界面、强大的警报功能和灵活的部署选项,Applications Manager 使组织能够减少停机时间,提升运营效率,并提供卓越的用户体验。无论您管理的是本地、云端还是混合环境,Applications Manager 都能简化 IT 监控的复杂性。

使用 Applications Manager 提升您的 Kubernetes 监控水平。 立即下载 体验不同,或 安排个性化演示 获得专人导览。

 

Angeline, 市场分析师

Angeline 是 ManageEngine 市场团队成员,热衷于探索技术领域,尤其是可观察性、DevOps 和 AIOps。她擅长简化复杂话题,帮助读者导航不断发展的技术格局。

 

受到世界各地客户的喜爱

"具有广泛监控功能的Standout工具"

它允许我们跟踪关键指标,如响应时间、资源利用率、错误率和交易性能。实时监控告警会及时通知我们任何问题或异常,使我们能够立即采取行动。

审稿人角色:研究与开发

carlos-rivero
"我喜欢 Applications Manager,因为它帮助我们检测服务器和 SQL 数据库中存在的问题."
卡洛斯·里韦罗

Lexmark技术支持经理

受到全球6000多家企业的信任

我们的客户