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

为何无法从Statsd Pod内部访问其本地localhost metrics端点

问题:无法从Statsd Pod内部访问本地localhost metrics端点

环境搭建过程

1. 创建本地Kind集群

集群配置文件kind-cluster.yaml:

# kind-cluster.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
containerdConfigPatches:
- |-
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:${reg_port}"]
    endpoint = ["http://${reg_name}:${reg_port}"]
nodes:
- role: control-plane
- role: worker
  kubeadmConfigPatches:
  - |
    kind: JoinConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "node=worker_1"
- role: worker
  kubeadmConfigPatches:
  - |
    kind: JoinConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "node=worker_2"
- role: worker
  kubeadmConfigPatches:
  - |
    kind: JoinConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "node=worker_3"

执行创建命令:

kind create cluster --name airflow-cluster --config kind-cluster.yaml

2. 构建自定义Docker镜像

Dockerfile内容:

# Dockerfile
FROM apache/airflow
USER root
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
         vim \
  && apt-get autoremove -yqq --purge \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
RUN apt-get install curl
USER airflow

执行构建命令:

docker build --pull --tag my-image:0.0.1 .

加载镜像到Kind集群:

kind load docker-image my-image:0.0.1 --name airflow-cluster

3. 通过Helm部署Airflow

执行部署命令:

helm repo add apache-airflow https://airflow.apache.org
helm repo update
kubectl create ns airflow
helm upgrade --install airflow apache-airflow/airflow --namespace airflow \
    --set images.airflow.repository=my-image \
    --set images.airflow.tag=0.0.1

问题现象

  • 从webserver Pod内部调用Statsd metrics端点,可正常返回指标:
    kubectl exec deploy/airflow-webserver -n airflow -- curl airflow-statsd:9102/metrics
    
  • 从Statsd Pod内部调用本地端点时,出现权限错误:
    执行命令:
    kubectl exec deploy/airflow-statsd -n airflow -- wget localhost:9102/metrics
    
    返回错误:
    Connecting to localhost:9102 (127.0.0.1:9102)
    wget: can't open 'metrics': Permission denied
    command terminated with exit code 1
    

已完成的排查操作

  1. 查看Statsd Pod运行用户:
    kubectl exec deploy/airflow-statsd -n airflow -- whoami
    
    返回结果:nobody
  2. 查看webserver Pod运行用户:
    kubectl exec deploy/airflow-webserver -c webserver -n airflow -- whoami
    
    返回结果:airflow
  3. 列出airflow命名空间下的Role:
    kubectl get roles -n airflow
    
    返回结果:
    airflow-pod-launcher-role
    airflow-pod-log-reader-role
    
  4. 检查RBAC绑定:确认airflow-pod-log-reader-rolebinding已包含airflow-webserver服务账号;将airflow-statsd服务账号添加到该rolebinding并重建Pod,但权限问题仍未解决。

提问

为何无法从Statsd Pod内部访问其本地localhost metrics端点?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:07:49