最近一直在弄k8s,前面安装都要顺畅,包括K8S集群等等。

k8s有个很重要的功能,就是它可以根据你服务器的压力动态扩容pod。

比如你可以预定你的pod实例是5个,当请求高峰过来的时候,pod压力过大,每个pod的cpu或者内存一下增大

当pod的cpu超过一个阈值的时候,k8s可以根据你的设定将pod实例变成8个,10个,设置20个,

过段时间,当洪峰过去,cup压力下来后,pod实例又会慢慢的将个数变成10个,8个,最后3个。

这个就是K8S的所谓的动态伸缩

 

但是要弄这个功能,最主要的就是k8s的监控指标,也就是metrics服务,metrics服务就是负责搜集k8s中的

各个服务的性能指标的服务,动态扩容就是k8s根据metrics收集过来的pod的性能指标来进行动态扩容。

 

ok,上面就是我为什么要安装metrics。然后我上网百度,差不多都是一样(这个网上都有,我就不抄了,自己去百度)。

我的k8s环境是1.19,照着步骤一步一步,最后,metrics的服务也在云节点上也成功了。

成功后,我就去执行 kubectl top nodes和kubectl top pod。

结果kubectl top nodes能够正确获取k8s下节点的信息,kubectl top pod却获取不到pod实例的信息,

百度了几天,根本就找不到解决方法,最后,在世界最大同性交友平台上 github上找到了问题所在。

 

原来是我的docker版本是 18 版本的,对metrics模块有影响,是bug,你可以将docker升级到19或以上,要不等着k8s修复这个bug

 

这里我踩了个坑,当你的K8S部署了metrics-service之后,发现你的top nodes命令正常,top pod命令报k8s Metrics not available for pod的时候,

不管你怎么查看pod日志,什么证书都解决不了问题的时候,看看你的docker版本把,如果你的docker版本刚好是18.**.*的时候,你可以考虑升级一下你的docker版本了。

 

 

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐