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

启用Stackdriver监控导致metadata-agent Pod崩溃问题求助

解决GKE集群事后启用Stackdriver监控导致metadata-agent频繁重启的问题

问题现象

在GKE 1.11.6-gke.3集群中,通过Cloud Console事后启用Stackdriver监控后,metadata-agent Pod出现异常频繁的重启现象,部分Pod重启次数甚至高达数百次:

➜ kubectl get pods --namespace=kube-system | grep metadata-agent
NAME READY STATUS RESTARTS AGE
metadata-agent-cluster-level-579ffb7c5f-vm8q8 1/1 Running 908 3d
metadata-agent-gdnb6 1/1 Running 908 3d
metadata-agent-q7vct 1/1 Running 885 3d
metadata-agent-rcfl8 1/1 Running 907 3d
metadata-agent-vvtss 1/1 Running 908 3d
metadata-agent-zvz6f 1/1 Running 816 3d

查看metadata-agent的日志,发现核心报错是持续的403 Forbidden,无法从metadata server获取授权令牌:

➜ kubectl logs pods/metadata-agent-gdnb6 --namespace=kube-system
I0130 10:32:38 7eff97c7f740 updater.cc:40 Not starting DockerUpdater
I0130 10:32:38 7eff97c7f740 kubernetes.cc:1324 Watching for node-level metadata
I0130 10:32:38 7eff94e58700 kubernetes.cc:1163 Watch thread (pods) started for node gke-rain-rain-node-pool-16891a38-p99s
I0130 10:32:38 7eff8effd700 kubernetes.cc:1203 Watch thread (node) started for node gke-rain-rain-node-pool-16891a38-p99s
I0130 10:32:38 7eff7ffff700 reporter.cc:46 Metadata reporter started
I0130 10:32:41 7eff7ffff700 environment.cc:270 No credentials found at /etc/google/auth/application_default_credentials.json
I0130 10:32:41 7eff7ffff700 environment.cc:146 Got project id from metadata server: 11111111
I0130 10:32:41 7eff7ffff700 oauth2.cc:283 Getting auth token from metadata server
E0130 10:32:41 7eff7ffff700 reporter.cc:64 Metadata request unsuccessful: Server responded with 'Forbidden' (403): Transport endpoint is not connected
E0130 10:33:41 7eff7ffff700 reporter.cc:64 Metadata request unsuccessful: Server responded with 'Forbidden' (403): Transport endpoint is not connected

补充背景:仅在集群创建完成后事后启用Stackdriver监控时出现该问题,集群创建阶段直接启用则无此异常。

问题根源

当在集群创建时启用Stackdriver监控,GCP会自动完成全套配置:为metadata-agent关联的服务账号绑定monitoring.metricWriter、logging.logWriter等必要IAM角色,同时正确配置节点的metadata访问规则。但事后启用监控时,部分权限配置步骤会被遗漏,导致metadata-agent无法通过metadata server获取合法授权令牌,触发Pod的重启机制。

解决方案

1. 补全服务账号IAM权限

首先定位metadata-agent使用的服务账号:

kubectl describe pod metadata-agent-gdnb6 -n kube-system | grep "Service Account"

通常这个服务账号名为metadata-agent,接下来为其添加所需的IAM角色(替换YOUR_PROJECT_ID为你的项目ID):

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
  --member=serviceAccount:metadata-agent@YOUR_PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/monitoring.metricWriter

gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
  --member=serviceAccount:metadata-agent@YOUR_PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/logging.logWriter

2. 重启监控组件刷新配置

强制重启metadata-agent的DaemonSet和Deployment,让组件加载新的权限配置:

kubectl rollout restart daemonset metadata-agent -n kube-system
kubectl rollout restart deployment metadata-agent-cluster-level -n kube-system

3. 验证修复效果

等待Pod重启完成后,检查Pod状态和日志:

# 查看Pod重启次数是否停止增长
kubectl get pods -n kube-system | grep metadata-agent

# 查看最新日志是否无403错误
kubectl logs metadata-agent-gdnb6 -n kube-system --tail=20

如果日志中不再出现Forbidden报错,且RESTARTS数值不再持续增加,说明问题已解决。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:18:45