5

我正在关注本教程: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

我做错了什么?

4

4 回答 4

5

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

请按照以下步骤操作

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
于 2019-02-25T09:04:02.293 回答
3

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

于 2020-08-12T00:53:17.290 回答
1

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

  1. 您必须签出以下回购:

    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>
于 2020-06-30T21:55:32.427 回答
0

我遇到了类似的问题

来自服务器的错误(未找到):找不到 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             
于 2020-05-19T18:05:17.690 回答