You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EKS Fargate(K8s 1.23) Prometheus监控报错及资源数据缺失排查

EKS Fargate 1.23 Prometheus监控问题排查与解决

错误原因

  • EKS Fargate是AWS托管的节点方案,kubelet、cadvisor等核心组件由AWS完全管控,不向外暴露节点级的metrics访问端点,所以执行kubectl get --raw /metrics或kubectl get --raw /api/v1/nodes/${NODE_NAME}/proxy/metrics/cadvisor会返回NotFound错误。
  • kube-state-metrics仅采集Kubernetes资源对象(如Pod、Deployment、Service)的状态元数据,不包含CPU、内存、磁盘I/O等实时资源使用指标,这是你无法获取性能数据的核心原因。

解决方法

1. 利用AWS Container Insights采集指标

AWS Container Insights原生适配EKS Fargate,可自动采集Pod级资源使用数据,还能与Prometheus集成:

  • 启用Container Insights:通过AWS控制台或CLI为目标EKS集群开启Fargate的Container Insights功能,AWS会自动部署Fluent Bit等采集组件到Fargate Pod中。
  • 对接Prometheus:如果使用自建Prometheus,可通过CloudWatch Exporter将Container Insights的指标导入;如果使用Amazon Managed Prometheus(AMP),可配置远程写入规则直接接收数据。

2. 注入Sidecar采集容器

由于Fargate无法访问节点级组件,可给业务Pod添加Sidecar容器来采集Pod内的资源指标:

  • 选择适配Fargate的采集工具,如轻量版cadvisor、或针对Pod优化的node-exporter变体。
  • 通过Kubernetes Admission Webhook实现Sidecar自动注入,或手动在Pod模板中添加Sidecar配置。
  • 配置Prometheus抓取规则,指向Sidecar容器暴露的metrics端口(如默认的9100、8080)。

3. 部署Fargate兼容的Prometheus Operator

如果使用Prometheus Operator管理监控栈,需调整部署配置适配Fargate:

  • 移除依赖节点级访问的组件(如node-exporter DaemonSet),替换为Pod级采集方案。
  • 创建Fargate Profile,指定Prometheus所在的命名空间,确保Prometheus Pod能调度到Fargate节点。
  • 调整Prometheus的RBAC权限,确保其能访问集群内的metrics端点。

验证操作

  • 开启Container Insights后,登录CloudWatch进入Metrics > Container Insights > EKS Clusters,确认能看到目标Pod的CPU、内存使用率数据。
  • 注入Sidecar后,执行命令kubectl exec <pod-name> -c <sidecar-container-name> -- curl localhost:<metrics-port>/metrics,验证能返回有效指标数据。
  • 访问Prometheus UI的Targets页面,确认新增的采集端点状态为UP。

内容的提问来源于stack exchange,提问作者Andrew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:50:28