【问题标题】:Error from server (NotFound): podmetrics.metrics.k8s.io "mem-example/memory-demo" not found来自服务器的错误(未找到):找不到 podmetrics.metrics.k8s.io “mem-example/memory-demo”
【发布时间】:2019-07-18 10:00:12
【问题描述】:

我正在关注本教程:https://kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/

我已经创建了内存 pod 演示,我正在尝试从 pod 中获取指标,但它不起作用。

我通过克隆安装了指标服务器:https://github.com/kubernetes-incubator/metrics-server

然后从顶层运行这个命令:

kubectl create -f deploy/1.8+/

我使用的是 Kubernetes 版本 1.10.11。

Pod 肯定已创建:

λ kubectl get pod memory-demo --namespace=mem-example
NAME          READY     STATUS    RESTARTS   AGE
memory-demo   1/1       Running   0          6m

但是metics命令不起作用并报错:

λ kubectl top pod memory-demo --namespace=mem-example
Error from server (NotFound): podmetrics.metrics.k8s.io "mem-example/memory-demo" not found

我做错了什么?

【问题讨论】:

    标签: kubernetes metrics-server


    【解决方案1】:

    需要对指标服务器部署进行一些补丁才能使指标正常工作。

    按照以下步骤操作

    kubectl delete -f deploy/1.8+/
    
    wait till the metrics server gets undeployed
    
    run the below command
    kubectl create -f https://raw.githubusercontent.com/epasham/docker-repo/master/k8s/metrics-server.yaml
    
    master $ kubectl get po -n kube-system
    NAME                              READY     STATUS    RESTARTS   AGE
    coredns-78fcdf6894-6zg78          1/1       Running   0          2h
    coredns-78fcdf6894-gk4sb          1/1       Running   0          2h
    etcd-master                       1/1       Running   0          2h
    kube-apiserver-master             1/1       Running   0          2h
    kube-controller-manager-master    1/1       Running   0          2h
    kube-proxy-f5z9p                  1/1       Running   0          2h
    kube-proxy-ghbvn                  1/1       Running   0          2h
    kube-scheduler-master             1/1       Running   0          2h
    metrics-server-85c54d44c8-rmvxh   2/2       Running   0          1m
    weave-net-4j7cl                   2/2       Running   1          2h
    weave-net-82fzn                   2/2       Running   1          2h
    
    master $ kubectl top pod -n kube-system
    NAME                              CPU(cores)   MEMORY(bytes)
    coredns-78fcdf6894-6zg78          2m           11Mi
    coredns-78fcdf6894-gk4sb          2m           9Mi
    etcd-master                       14m          90Mi
    kube-apiserver-master             24m          425Mi
    kube-controller-manager-master    26m          62Mi
    kube-proxy-f5z9p                  2m           19Mi
    kube-proxy-ghbvn                  3m           17Mi
    kube-scheduler-master             8m           14Mi
    metrics-server-85c54d44c8-rmvxh   1m           19Mi
    weave-net-4j7cl                   2m           59Mi
    weave-net-82fzn                   1m           60Mi
    

    检查并验证指标服务器部署清单中的以下几行。

            command:
            - /metrics-server
            - --metric-resolution=30s
            - --kubelet-preferred-address-types=InternalIP
            - --kubelet-insecure-tls
    

    【讨论】:

    • 这看起来不像官方回购。我对安装随机代码持谨慎态度。你有没有提到你正在谈论的补丁?
    • 取自官方报告并在其上添加了补丁
    • 更新了您需要应用于指标服务器的更改。检查我上面的答案
    【解决方案2】:

    我遇到了类似的问题

    来自服务器的错误(未找到):找不到 podmetrics.metrics.k8s.io "default/apple-app"

    我执行了两个步骤,我能够解决问题。

    1. 下载最新定制的components.yaml,这是他们的官方文件,方便部署。

    2. 更新更改

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

    到部署规范的命令部分。我注释了第一行,因为它是 kubernetes metrics-server 使用的图像的入口点。

    $ docker image inspect k8s.gcr.io/metrics-server-amd64:v0.3.6 -f {{.ContainerConfig.Entrypoint}}
    [/metrics-server]
    

    用不用也没关系。

    注意:您必须等待几秒钟才能正常工作。

    在此运行后,top 命令将为您工作。

    $ kubectl top pod apple-app
    NAME        CPU(cores)   MEMORY(bytes)   
    apple-app   1m           3Mi             
    

    【讨论】:

      【解决方案3】:

      我知道这是一个旧线程可能有人会发现这个答案很有用。

      1. 您必须签出以下 repo:

        https://github.com/kubernetes-incubator/metrics-server

        转到 repo 的根目录并检查 release-0.3.2。

      2. 通过以下方式删除默认指标服务器:

        kubectl delete -f deploy/1.8+/
        
      3. 下载容器yaml

        wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml
        
      4. 通过将以下行添加到参数部分来编辑container.yaml。你会在那里看到这两行

        args:
              - --kubelet-preferred-address-types=InternalIP
              - --kubelet-insecure-tls=true
        

        该文件中只有一个 args 参数。

      部署您的 pod/deployment,您应该能够做到:

      kubectl top pod <pod-name>
      

      【讨论】:

        【解决方案4】:

        在 Minikube 上,我必须在启用 metrics-server 插件后等待 20-25 分钟。我在 20-25 分钟内遇到了同样的错误,但后来我可以看到输出而无需尝试任何解决方案。

        【讨论】:

        • 我也是。它甚至在文档中:kubectl top pod --help 说:由于指标管道延迟,它们可能在 pod 创建后的几分钟内不可用。
        猜你喜欢
        • 2020-03-28
        • 2021-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        • 2017-08-09
        相关资源
        最近更新 更多