如何在GKE集群中为Metrics Server设置--metric-resolution=15s参数?
在GKE集群中自定义Metrics Server的metric-resolution参数
GKE默认的Metrics Server由集群插件管理器(addon manager)管控,任何直接修改Deployment的操作都会被自动 reconcile 回默认配置,包括删除相关标签/注解也会被插件控制器重新添加。要设置--metric-resolution=15s,需要绕过默认插件管理,手动部署自定义的Metrics Server:
步骤1:禁用GKE自带的Metrics Server插件
通过gcloud命令禁用集群的Metrics Server插件:
gcloud container clusters update <你的集群名称> --region <集群区域> --update-addons=MetricsServer=DISABLED
也可以通过GKE控制台操作:进入集群详情页 → 「添加组件」→ 找到Metrics Server → 设置为「已禁用」。
步骤2:部署自定义配置的Metrics Server
- 下载对应版本(v0.5.2)的官方部署yaml:
wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.2/components.yaml
- 编辑yaml文件,找到
kube-system命名空间下的metrics-serverDeployment,修改容器的args部分,添加--metric-resolution=15s参数(替换原有的30s配置):
containers: - name: metrics-server image: k8s.gcr.io/metrics-server/metrics-server:v0.5.2 args: - --cert-dir=/tmp - --secure-port=4443 - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname - --kubelet-use-node-status-port - --metric-resolution=15s # 新增/修改此参数
- 应用修改后的yaml:
kubectl apply -f components.yaml
步骤3:验证配置生效
- 查看Metrics Server Pod的日志,确认参数已加载:
kubectl logs -n kube-system -l k8s-app=metrics-server | grep "metric-resolution"
输出中应该能看到--metric-resolution=15s的记录。
2. 等待2-3分钟后,通过kubectl top nodes或kubectl top pods多次查询指标,观察数据更新频率是否变为15秒左右。
注意事项
- 禁用GKE自带插件后,Metrics Server的版本更新、故障排查需要自行维护,集群升级不会自动同步该组件。
- 确保手动部署的Metrics Server版本与GKE集群版本兼容:v0.5.2支持Kubernetes 1.24-1.27,与你的集群版本(v1.26.12-gke)匹配。
- 如果遇到kubelet连接问题,可尝试添加
--kubelet-insecure-tls参数到args中,但仅在测试环境使用,生产环境建议配置正确的证书信任。
内容的提问来源于stack exchange,提问作者Vitor Rodrigues
相关产品推荐
相关产品推荐

