Rancher 2.5.8集群metrics-server报节点无匹配InternalIP错误如何解决
问题根因
你遇到的metrics-server CrashLoopBackOff问题核心是:集群所有节点的status.addresses属性中缺失InternalIP类型配置,而metrics-server默认优先读取InternalIP与节点kubelet通信拉取指标,找不到对应地址就会启动失败。
解决方案
方案1:修改metrics-server启动参数(快速生效,无需调整节点配置)
- 执行命令编辑metrics-server的Deployment配置:
kubectl edit deployment metrics-server -n kube-system
- 在
spec.template.spec.containers.args字段下新增2个启动参数:
- --kubelet-preferred-address-types=ExternalIP,Hostname,InternalIP - --kubelet-insecure-tls
参数说明:
--kubelet-preferred-address-types调整metrics-server读取节点地址的优先级,将你节点已有的ExternalIP放到最前,匹配不到才向后查找其他类型地址--kubelet-insecure-tls跳过kubelet的证书校验,避免使用外部IP通信时证书域名不匹配报错- 保存配置后,metrics-server会自动重建Pod,等待1分钟左右即可恢复正常运行。
方案2:修复集群节点地址配置(根治,符合Kubernetes规范)
你用Rancher 2.5.8部署集群时节点注册配置错误,导致没有生成InternalIP:
- 登录Rancher控制台,进入对应集群的【集群管理】-【节点】页面
- 依次编辑每个节点的配置,在【节点地址】配置项中补充对应节点的内网IP,保存后等待节点同步配置
- 同步完成后执行
kubectl get node worker1 -o yaml查看,status.addresses字段会新增InternalIP类型的地址 - 此时metrics-server无需额外修改参数即可正常拉取指标
内容的提问来源于stack exchange,提问作者nrgyzer
相关产品推荐
相关产品推荐

