K8s api server 无法连接 metrics server 问题解决方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s api server 无法连接 metrics server 问题解决方案相关的知识,希望对你有一定的参考价值。
参考技术Ametrics-server 是 Kubernetes 生态中的一个重要组件,其主要的作用在于监测 Kubernetes的(node、pod)资源指标并提供监控系统做采集。Kubernetes 的许多特性都会依赖 metrics server,比如 kubectl top nodes/pods 指令;比如 HPA 需要根据其获取资源利用率;再比如 Istio 的服务组件等。
所以当 metrics-server 出现异常时,相关的组件都会受到影响。比如,如下这种典型的问题:
执行 kubectl top nodes 指令失败
报错信息如下:
其根本原因在于 Kubernetes 的 ApiServer 无法访问到 metrics-server,要验证这种问题,我们可以执行如下命令:
返回值如下:
可以看到访问 https://10.244.1.11:4443/apis/metrics.k8s.io/v1beta1 这个 API 异常,其访问的IP是一个典型的 clusterIP。
我们知道,通常情况下,Kubernetes 的 master 节点是访问不到 clusterIP 的。
而 Kubernetes 的 node 节点则可以访问的到,其主要的原因在于 kube-proxy,那么如果想要 master 节点可以访问到 Service 的 clusterIP,就要在 master 节点上也部署 kube-proxy ,确切的说是将 master 节点同时也作为 node 节点加入集群中去。并且为了避免调度对 master 节点造成影响,还需要对 master 节点打污点处理,这就是这次问题解决方案的主要思路。
目录结构说明:
文件内容:
文件内容:
文件内容:
文件内容:
执行成功,返回值类似下方:
执行成功,返回值类似下面:
返回如下:
正常情况,返回类似下面:
文件内容:
文件内容:
文件内容:
在未进行调整之前,返回值会包含类似一下的内容,很明显的可以看出连接异常:
在进行上文的调整后,正常情况下的返回值应该如下,这种情况下 apiserver 可以正常的访问到 metrics-server:
返回值类似下面:
返回值类似下面:
以上是关于K8s api server 无法连接 metrics server 问题解决方案的主要内容,如果未能解决你的问题,请参考以下文章
k8s 组件介绍-API Server API Server简介