指标服务器不工作:无法处理请求(获取 nodes.metrics.k8s.io)

     2023-03-17     182

关键词:

【中文标题】指标服务器不工作:无法处理请求(获取 nodes.metrics.k8s.io)【英文标题】:Metric server not working : unable to handle the request (get nodes.metrics.k8s.io) 【发布时间】:2020-09-20 03:19:11 【问题描述】:

我正在运行命令 kubectl top nodes 并收到错误:

node@kubemaster:~/Desktop/metric$ kubectl top nodes
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)

Metric Server pod 正在使用以下参数运行:

    command:
    - /metrics-server
    - --metric-resolution=30s
    - --requestheader-allowed-names=aggregator
    - --kubelet-insecure-tls
    - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP

我得到的大部分答案是上述参数, 还是报错

E0601 18:33:22.012798       1 manager.go:111] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:kubemaster: unable to fetch metrics from Kubelet kubemaster (192.168.56.30): Get https://192.168.56.30:10250/stats/summary?only_cpu_and_memory=true: context deadline exceeded, unable to fully scrape metrics from source kubelet_summary:kubenode1: unable to fetch metrics from Kubelet kubenode1 (192.168.56.31): Get https://192.168.56.31:10250/stats/summary?only_cpu_and_memory=true: dial tcp 192.168.56.31:10250: i/o timeout]

我已经部署了度量服务器,使用:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

我错过了什么? 使用 Calico 进行 Pod 网络

在公制服务器的github页面FAQ下:

[Calico] Check whether the value of CALICO_IPV4POOL_CIDR in the calico.yaml conflicts with the local physical network segment. The default: 192.168.0.0/16.

这可能是原因。谁能给我解释一下。

我已经设置 Calico 使用: kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

我的节点 IP 是:192.168.56.30 / 192.168.56.31 / 192.168.56.32

我使用 --pod-network-cidr=20.96.0.0/12 启动了集群。所以我的 pods Ip 是 20.96.205.192 等等。

也在 apiserver 日志中得到这个

E0601 19:29:59.362627       1 available_controller.go:420] v1beta1.metrics.k8s.io failed with: failing or missing response from https://10.100.152.145:443/apis/metrics.k8s.io/v1beta1: Get https://10.100.152.145:443/apis/metrics.k8s.io/v1beta1: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

其中 10.100.152.145 是服务/metrics-server(ClusterIP) 的 IP

令人惊讶的是,它可以在节点 Ip 在 172.16.0.0 范围内的另一个集群上运行。 休息一切都一样。使用 kudeadm、Calico、相同的 pod cidr 进行设置

【问题讨论】:

你能离开- --kubelet-insecure-tls- --kubelet-preferred-address-types=InternalIP吗? 试过但没用, Idk 然后交配。我已经部署了 100 次指标服务器,并且总是从这个问题开始。您可以设置- --v=4 以获得更详细的日志输出。 子网 20.96.0.0/12 中的地址是公共地址,所以也许这就是它失败的原因。 【参考方案1】:

在我编辑 metrics-server 部署 yaml 配置以包含 DNS 策略后,它开始工作。

hostNetwork:真

请参考以下链接: https://www.linuxsysadmins.com/service-unavailable-kubernetes-metrics/

【讨论】:

谢谢老兄。这个答案拯救了我的一天。 不要忘记重新启动一个指标 pod ;) 在我的情况下它是需要的。【参考方案2】:

Calico net 默认值为 192.168.0.0/16 yaml文件中有注释:

如果不存在,则在启动时创建的默认 IPv4 池。 Pod IP 将从这个范围中选择。安装后更改此值 不会有任何影响。这应该属于--cluster-cidr

名称:CALICO_IPV4POOL_CIDR 值:“192.168.0.0/16”

因此,如果您的家庭网络包含在 192.168.0.0/16 中,则最好使用其他网络。

另外,如果你使用 kubeadm,你可以在 k8s 中检查你的 cidr:

kubeadm config view | grep Subnet

或者你可以使用 kubectl:

kubectl  --namespace kube-system get configmap kubeadm-config -o yaml

kubernetes "selfhosted" 中的默认值为 10.96.0.0/12

【讨论】:

【参考方案3】:

我在尝试在 docker 桌面上运行指标时遇到了同样的问题,我按照 @suren 的回答进行了操作,并且成功了。 默认配置为:

- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP

然后我改为:

- --kubelet-preferred-address-types=InternalIP

【讨论】:

Kubernetes Metrics 无法获取 pod/node 指标

...正在运行一个使用3个节点和1个主节点的裸机集群在指标服务器日志中我有以下错误:E090714:29:51.7745921man 查看详情

我无法在 Node.js 中获取正文格式的请求

...inNode.js【发布时间】:2022-01-1723:12:08【问题描述】:我在服务器上接收正文格式的请求时遇到问题。我正在使用Express版本4.17.1。文档表明我不必使用body-parserer,但我可以直接使用express功能“express.json()”但是,我一直试图让它... 查看详情

使用 node.js 和 express 简单地获取请求

...,但无法弄清楚我做错了什么。我将数据从客户端发布到服务器没有问题,但反过来我无法让它工作。我在客户中得到的唯一回复是ReadableByteStream。这是我在客户端上的代码:exportfunctiongetAll 查看详情

localhost 页面不工作 localhost 当前无法处理此请求。 HTTP 错误 500

】localhost页面不工作localhost当前无法处理此请求。HTTP错误500【英文标题】:Thelocalhostpageisn’tworkinglocalhostiscurrentlyunabletohandlethisrequest.HTTPERROR500【发布时间】:2017-03-0603:11:29【问题描述】:当我看到这个页面时,我知道有一些500I... 查看详情

无法从 Prometheus HTTP Server 获取查询或 JSON 密钥

...时间】:2021-10-0314:49:04【问题描述】:我想从PrometheusHTTP服务器获取某个指标:zcash_difficulty_gauge,但我遇到了以下错误:i)JSON不可用ii)请求URL不返回指标,而是返回整个指标页面。我的 查看详情

Codeigniter:此页面不工作 localhost 当前无法处理此请求。 HTTP 错误 500 [关闭]

】Codeigniter:此页面不工作localhost当前无法处理此请求。HTTP错误500[关闭]【英文标题】:Codeigniter:Thispageisn’tworkinglocalhostiscurrentlyunabletohandlethisrequest.HTTPERROR500[closed]【发布时间】:2018-01-0413:46:48【问题描述】:我正在做一件简单... 查看详情

无法在 Node.js res.body 中获取 $http.post 请求数据

...js0.12.2。我正在使用访问node.jsapi$http.post("url",request_data)在服务器端使用这个:conso 查看详情

无法处理 executeFetchRequest 错误

...发布时间】:2012-03-0119:25:18【问题描述】:我的获取请求工作正常,我获取的对象没有任何问题。我想要做的是在实体不存在的情况下处理错误。问题是,我无法处理该错误,因为当我调用executeFetechRequest:error:withoutanywarnings时应... 查看详情

Node.js 中的异步编程不应该导致 *** 吗?

...问题描述】:我刚刚意识到(单线程)Node.js存在问题:服务器开始响应请求,并且请求一直运行直到它因为I/O而阻塞。当请求处理器阻塞时,服务器会启动并返回到第1步,处理更多请求。每当请求处理器阻塞I/O时,服务器都会... 查看详情

node.js http获取请求参数[重复]

...想处理这样的HTTP请求:GEThttp://1.2.3.4/status?userID=1234但我无法从中提取参数userID。我正在使用Express,但它对我没有帮助。例如,当我写如下内容时,它不起作用:app.get(\' 查看详情

node.js 服务器无需请求即可获取主机名

】node.js服务器无需请求即可获取主机名【英文标题】:node.jsservergethostnamewithoutreq【发布时间】:2015-11-1005:09:59【问题描述】:目前我使用req.headers.host来确定服务器的主机名,在处理服务器收到的请求时有效。但是如何在没有请... 查看详情

node学习01:node知识点汇总!

...器访问网站全过程Web开发本质请求:客户端发起请求.处理:服务器处理请求.响应:服务器将处理结果发送给客户端.Web应用程序与桌面应用程序对比(计算器案例)关于C/S(Client/Server)和B/S(Browser/Server)[外... 查看详情

node.js - 获取 json 请求的值

...son数据的值?我尝试了很多示例和问答,但仍然无法正常工作。我对node.js完全陌生,所以我的问题可能很愚蠢。我在下面得到了我的代码。请指出我在哪里以及出了什么问题。我完全迷路了。我需要的是来自json数据的值“ 查看详情

此页面无法正常工作 www.janmukti.com 目前无法处理此请求。 HTTP 错误 500

...13:38:09【问题描述】:这是我第一次将我的laravel项目放入服务器。我在主目录中创建了一个laravel目录,并将我项目的 查看详情

如何从指标服务器获取网络信息

】如何从指标服务器获取网络信息【英文标题】:Howtogetnetworkinformationfrommetricsserver【发布时间】:2021-01-2810:02:46【问题描述】:我知道如何从metrics-server获取cpu和内存的信息(限制、请求、使用情况)。但我不知道如何从metrics-s... 查看详情

Node.js(Express API):req.body.myobject 未定义且无法正常工作

...2015-10-0413:22:26【问题描述】:我在NodeJS(ExpressJS)中有我的服务器端,它实现了一个POST方法,该方法应该获取我从客户端发送的对象并对其进行处理:router 查看详情

无法在 Windows Kubernetes 节点上获取 cAdvisor 容器指标

】无法在WindowsKubernetes节点上获取cAdvisor容器指标【英文标题】:CannotobtaincAdvisorcontainermetricsonWindowsKubernetesnodes【发布时间】:2020-06-2721:37:39【问题描述】:我已经配置了一个混合节点Kubernetes集群。两个工作节点是UnbuntuServer18.04.... 查看详情

如何在node.js服务器流式http请求中处理JSON流响应数组

】如何在node.js服务器流式http请求中处理JSON流响应数组【英文标题】:HowtoprocessArrayofJSONStreamResponseinnode.jsserverstreaminghttpresquest【发布时间】:2021-10-1218:39:22【问题描述】:流响应的形式为["id":0,"name":name0,"id":1,"name":name1]如果我使... 查看详情