解决方案
给部署添加如下命令行即可:
1 | args: |
原因
那么是什么导致了 metrics-server
启动提示no metrics known for pod
?
- 首先需要知道的是
metrics-server
默认会使用hostname
来进行通讯。 - 如果没有进行相应配置的话,那么通过
hostname
是无法正常通讯的。 - 所以使用默认命令行启动,由于无法正常通过
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
的问题。