K8s api server 无法连接 metrics server 问题解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s api server 无法连接 metrics server 问题解决方案相关的知识,希望对你有一定的参考价值。

参考技术A

metrics-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 问题解决方案的主要内容,如果未能解决你的问题,请参考以下文章

第十一节 资源服务器api-server集成zuul网关

k8s 组件介绍-API Server API Server简介

[k8s]k8s api-server启动systemd参数分析

K8S的API Server认证介绍

k8s的Mutating webhook

十七,k8s集群指标API及自定义API