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

在Kubernetes中,如何获知负载均衡下各POD的请求占比?

Kubernetes Pod请求占比统计方法

在Kubernetes集群中使用负载均衡分发请求时,有多种实用方法可以统计不同Pod的请求占比,以下是常用方案:

1. 应用日志分析

让应用在请求日志中嵌入当前Pod的标识(Kubernetes会自动为Pod注入POD_NAME环境变量,无需额外配置),之后通过日志工具或命令行直接统计:

  • 应用日志示例:[INFO] 2024-05-20 10:00:00 - Handling request, pod_name: my-app-7f9d6c4b89-2xqzk
  • 用命令行快速统计指定Deployment下的Pod请求数:
    kubectl logs -l app=my-app --all-containers --since=1h | grep "pod_name:" | awk '{print $NF}' | sort | uniq -c
    
  • 日志量较大时,可通过ELK、Loki等系统收集日志,再用Kibana、Grafana做可视化聚合分析。

2. Service Mesh遥测(以Istio为例)

Istio这类Service Mesh会自动拦截服务流量,无需修改应用代码即可获取Pod级请求统计:

  • 部署Istio后,通过Prometheus采集istio_requests_total指标(该指标包含destination_pod标签)
  • 在Grafana中用PromQL计算请求占比:
    sum by (destination_pod) (rate(istio_requests_total[5m])) 
    / 
    sum(rate(istio_requests_total[5m]))
    * 100
    
  • 也可直接通过Kiali面板查看服务流量分布,直观看到每个Pod的请求占比。

3. 自定义应用Metrics + Prometheus

在应用中集成Prometheus客户端,暴露带Pod标识的请求计数指标:

  • 以Go应用为例,用prometheus/client_golang定义计数器:
    var (
        httpRequests = prometheus.NewCounterVec(
            prometheus.CounterOpts{
                Name: "http_requests_total",
                Help: "Total number of HTTP requests",
            },
            []string{"pod_name"},
        )
    )
    
    func init() {
        prometheus.MustRegister(httpRequests)
        podName := os.Getenv("POD_NAME")
        // 处理请求时递增计数器
        httpRequests.WithLabelValues(podName).Inc()
    }
    
  • 在Grafana中通过PromQL计算占比:
    sum by (pod_name) (rate(http_requests_total[5m])) 
    / 
    sum(rate(http_requests_total[5m]))
    * 100
    

4. Ingress/负载均衡器日志分析

如果使用NGINX Ingress或云厂商负载均衡器,它们的日志会记录后端Pod信息:

  • NGINX Ingress日志中的upstream_addr字段包含后端Pod的IP,可先映射IP与Pod名称,再统计请求数:
    # 生成Pod IP与名称的映射文件
    kubectl get pods -l app=my-app -o wide | awk '{print $6 " " $1}' > pod-ip-map.txt
    # 分析Ingress日志并统计每个Pod的请求数
    kubectl logs -n kube-system deployment/nginx-ingress-controller | grep "upstream_addr" | awk '{print $12}' | cut -d: -f1 | awk 'NR==FNR{a[$1]=$2;next}{print a[$1]}' pod-ip-map.txt - | sort | uniq -c
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:05:32