如何修改Kubernetes metrics-server端口并适配kubectl指标查询?
问题根因
该报错和kubectl本地配置无关,请求链路是kubectl -> kube-apiserver(6443端口) -> 聚合层 -> metrics-server服务,你只修改了metrics-server服务本身的端口,但是kube-apiserver的聚合层注册的APIService资源里,仍然配置为访问metrics-server的443端口,导致apiserver无法正常转发指标请求。
临时修复(立即生效,可能被K3S默认的HelmChart管理逻辑重置)
- 直接修改metrics-server对应的APIService资源的端口配置:
kubectl patch apiservice v1beta1.metrics.k8s.io --type='json' --patch='[{"op": "replace", "path": "/spec/service/port", "value":7443}]'
- 等待10-30秒后验证请求是否恢复正常:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
永久生效(适配K3S托管逻辑,避免配置被重置)
K3S默认通过内置的HelmChart控制器管理metrics-server,自定义配置需要写入指定目录的Manifest文件,避免控制器重置配置:
- 编辑配置文件
/var/lib/rancher/k3s/server/manifests/metrics-server-config.yaml(文件不存在则新建),写入以下内容:
apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: metrics-server namespace: kube-system spec: valuesContent: |- service: port: 7443
- 保存后等待K3S自动同步配置即可,后续更新K3S版本也不会重置端口配置。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

