kubernetes 部署 metrics-server,提示 no metrics known for pod 解决方案及详细原因分析

本文详细解析了metrics-server启动时提示nometricsknownforpod的原因,并提供了两种解决方案:一是通过添加--kubelet-preferred-address-types=InternalIP参数使metrics-server使用IP进行通讯;二是通过--kubelet-insecure-tls参数解决证书验证问题。

解决方案

给部署添加如下命令行即可:

          args:
            - '--kubelet-preferred-address-types=InternalIP'
            - '--kubelet-insecure-tls'

原因

那么是什么导致了 metrics-server 启动提示no metrics known for pod?

  1. 首先需要知道的是metrics-server默认会使用hostname 来进行通讯。
  2. 如果没有进行相应配置的话,那么通过hostname是无法正常通讯的。
  3. 所以使用默认命令行启动,由于无法正常通过hostname通信就会产生错误, 从而提示no metrics known for pod

好了,既然知道问题,我们来找一下怎么解决。

实际上metrics-server不只支持通过hostname进行通讯,还支持使用IP来进行通讯,只不过需要显式指定命令行参数:

--kubelet-preferred-address-types=InternalIP

其中InternalIP可以修改为以下值:

InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP (具体含义这里就不展开了,感兴趣的可以自行了解。)

但是呢,事情到这里还没有结束,当你加上命令行参数后,会发现出现另一个错误x509: cannot validate certificate

这是由于证书验证不通过导致的,所以我们需要让metrics-server忽略掉证书错误。而忽略证书错误也是有命令行支持的,我们添加如下命令行参数就可以解决了:

--kubelet-insecure-tls

到此,通过添加两个命令行就彻底解决了 metrics-server 启动提示no metrics known for pod的问题。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值