【问题标题】:Kubernetes Metrics unable to fetch pod/node metricsKubernetes Metrics 无法获取 pod/node 指标
【发布时间】:2019-02-12 22:37:16
【问题描述】:

我已经在 kubernetes v1.11.2 上安装了 metrics-server。

我正在运行一个使用 3 个节点和 1 个主节点的裸机集群

在指标服务器日志中我有以下错误:

E0907 14:29:51.774592       1 manager.go:102] unable to fully collect metrics: [unable to fully scrape metrics from source kubelet_summary:vps01: unable to 
fetch metrics from Kubelet vps01 (vps01): Get https://vps01:10250/stats/summary/: dial tcp: lookup vps01 on 10.96.0.10:53: no such host, unable to fully scr
ape metrics from source kubelet_summary:vps04: unable to fetch metrics from Kubelet vps04 (vps04): Get https://vps04:10250/stats/summary/: dial tcp: lookup 
vps04 on 10.96.0.10:53: no such host, unable to fully scrape metrics from source kubelet_summary:vps03: unable to fetch metrics from Kubelet vps03 (vps03): 
Get https://vps03:10250/stats/summary/: dial tcp: lookup vps03 on 10.96.0.10:53: no such host, unable to fully scrape metrics from source kubelet_summary:vp
s02: unable to fetch metrics from Kubelet vps02 (vps02): Get https://vps02:10250/stats/summary/: dial tcp: lookup vps02 on 10.96.0.10:53: no such host]     
E0907 14:30:01.694794       1 reststorage.go:98] unable to fetch pod metrics for pod boxweb/boxweb-deployment-7756c49688-fz625: no metrics known for pod "bo
xweb/boxweb-deployment-7756c49688-fz625"                                                                                                                    
E0907 14:30:10.517886       1 reststorage.go:112] unable to fetch node metrics for node "vps01": no metrics known for node "vps01"

我也无法使用任何指标 kubectl 顶级节点 vps01

同样的自动缩放它不起作用

  unable to get metrics for resource cpu: unable to fetch metrics from
 resource metrics API: the server could not find the requested resource (get pods.metrics.k8s.io)       

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    我找到了以下解决方案:

    更改metrics-server-deployment.yaml文件并添加:

    command:
        - /metrics-server 
        - --kubelet-preferred-address-types=InternalIP
        - --kubelet-insecure-tls
    

    【讨论】:

    • 我应该在哪里添加这些行,有 2 个配置和许多键...我正在使用 metrics-server/deploy/1.8+
    • 你应该在路径中添加:spec/template/spec/containers。在标签“图片”下方
    • 我认为在任何环境(开发测试除外)中使用 insecure-tls 都不应该是一个有效的答案。
    • 为了让它工作,我需要添加另一个参数:--v=2
    【解决方案2】:

    您的metrics-server pod 似乎存在 DNS 问题。您可以连接到 pod:

    kubectl exec -it metrics-server-xxxxxxxxxx-xxxxx -n kube-system sh
    / # ping vps01
    

    如果您无法 ping,则无法解析您的节点。

    core-dns 或 kube-dns 在您的每个节点上也使用 /etc/resolv.conf,所以我会检查您是否可以解决彼此之间的节点。说,你能不能从vps02vps03等pingvps01

    【讨论】:

    • 我无法从 pod 和其他节点 ping 节点。但是,我有一堆在集群上运行良好的 pod。知道如何修复 DNS 吗?
    • 我尝试从 busybox 容器中 nslookup kubernetes.default 并且它解决了。我尝试从指标 pod 执行此操作,但无法解析,但 resolve.conf 文件是相同的。我也无法从busybox解析vps01
    • 修复每个节点上的/etc/resolv.conf。它们应该能够相互解析,这完全取决于您希望服务器所在的域以及它们使用的 DNS 服务器。它应该有一个domain <your-domain> 条目和一个nameserver <dns server> 条目
    • 您的意思是在主机本身上修复 DNS?我有这个:nameserver 127.0.0.53 search openstacklocal 在所有主机上
    • 是的。在节点本身上修复它。你能解决vps01.openstacklocal吗?
    【解决方案3】:

    我遇到了同样的问题,我通过在每个节点上的 /etc/hosts 添加主机名来解决。

    为了收集指标数据(CPU/内存使用),metric-server 尝试访问节点。但是,度量服务器无法解析主机名(vps01vps02vps03vps04),因为它们没有在 DNS 中注册。正如您所提到的,您无法在 DNS 中注册主机名。

    因此,您必须在运行 metrics-server POD 的节点上将主机名添加到 /etc/hosts

    自动缩放器不起作用,因为度量服务器不工作并且没有度量数据。

    【讨论】:

      猜你喜欢
      • 2019-05-01
      • 2020-11-10
      • 2019-03-27
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 2019-06-25
      相关资源
      最近更新 更多