为何无法从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/metricsConnecting to localhost:9102 (127.0.0.1:9102) wget: can't open 'metrics': Permission denied command terminated with exit code 1
已完成的排查操作
- 查看Statsd Pod运行用户:
返回结果:kubectl exec deploy/airflow-statsd -n airflow -- whoaminobody - 查看webserver Pod运行用户:
返回结果:kubectl exec deploy/airflow-webserver -c webserver -n airflow -- whoamiairflow - 列出airflow命名空间下的Role:
返回结果:kubectl get roles -n airflowairflow-pod-launcher-role airflow-pod-log-reader-role - 检查RBAC绑定:确认
airflow-pod-log-reader-rolebinding已包含airflow-webserver服务账号;将airflow-statsd服务账号添加到该rolebinding并重建Pod,但权限问题仍未解决。
提问
为何无法从Statsd Pod内部访问其本地localhost metrics端点?
内容的提问来源于stack exchange,提问作者Amin Ba
相关产品推荐
相关产品推荐

