kubectl top node报错:Metrics API not available metric-server pod 报错401:Unauthorized

kubectl top node报错:Metrics API not available metric-server pod 报错401:Unauthorized

//20230810
写在前面:最近发现集群中的kubectl top node功能不好使了,报错Metrics API not available,检查相关pod状态正常,节点kubelet状态也正常;最后通过github上的issue解决问题,在此记录一下

解决流程:

  • 查看metric-server pod状态
    • 发现是running,问题不出在pod上
  • 进一步查看pod事件,没有事件,未获取到有用的信息
  • 进一步查看pod日志,发现报错401:Unauthorized
  • bing搜索,看到这一篇文章
    • 得知--anonymous-auth=false参数设置为false会引发这个报错,遂查看kubelet状态
  • 通过status查看kubelet状态
  • 通过status状态中的pid,使用ps -ef查找到对应进程,查看启动参数,果然有该项,且置为false
  • 根据status中的路径查找到kubelet启动脚本,然后vim进去将参数修改为true,问题解决

github issue链接


20230810 18:42 更新

后面被同事告知不能更改该参数,不安全,遂改回false,但是同时也发现top命令还是可以正常执行,遂继续定位原因,在此录一下

  • 参考帖子https://www.cnblogs.com/-xuan/p/13939725.html
  • 查询pod日志,发现将参数改为true的时候触发了一条生成证书的Info级别日志,这就好理解了,就是metric-server首次运行的时候是拥有证书的,然后kubelet的参数中途被人为更改,但是因为有证书,所以服务依然生效,等待证书过期,而kubelet又禁止匿名访问,metric-server获取不到证书,就失效了
  • 之后的解决方法:手动更新证书,如上述帖子中所说

以上
希望对后来者有所帮助:)

posted @ 2023-08-10 15:54  醉生梦死_0423  阅读(397)  评论(0编辑  收藏  举报