我设置了k8s集群和指标服务器,它可以检查主节点上的节点和Pod, 工作节点看不到,返回未知。
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
u-29 1160m 14% 37307Mi 58%
u-31 2755m 22% 51647Mi 80%
u-32 4661m 38% 32208Mi 50%
u-34 1514m 12% 41083Mi 63%
u-36 1570m 13% 40400Mi 62%
当pod在客户端节点上运行时,它返回unable to fetch pod metrics for pod default/nginx-7764dc5cf4-c2sbq: no metrics known for pod
当pod运行一个主节点时,它可以返回cpu或内存
NAME CPU(cores) MEMORY(bytes)
nginx-7cdd6c99b8-6pfg2 0m 2Mi
答案 0 :(得分:1)
这是基于OP的注释发布的社区Wiki答案,以提高可见性。随意扩展它。
该问题是由在不同节点上使用不同版本的docker引起的。在两个节点上将docker升级到v19.3并执行kubeadm reset
后,问题已解决。
答案 1 :(得分:0)
通常,指标服务器通过kubelet接收指标。
从中检索信息可能有问题。
您需要查看readme中提到的以下配置。
配置 根据您的群集设置,您可能还需要更改传递给Metrics Server容器的标志。最有用的标志:
-kubelet-preferred-address-types-确定连接到特定节点的地址时使用的节点地址类型的优先级(默认[主机名,内部DNS,内部IP,外部DNS,外部IP])
-kubelet-insecure-tls-不验证Kubelets提供的服务证书的CA。仅用于测试目的。
-requestheader-client-ca-file-指定根证书捆绑包,用于验证传入请求上的客户端证书。
也许您可以检查以下配置更改。
--kubelet-preferred-address-types=InternalIP
--kubelet-insecure-tls
您也许可以参考this ticket以获得更多信息。