无法获取 pod 指标 -Kubernetes

Posted

技术标签:

【中文标题】无法获取 pod 指标 -Kubernetes【英文标题】:Unable to get pod metrics -Kubernetes 【发布时间】:2019-05-01 10:57:49 【问题描述】:

我无法获取 pod 的指标。 “describe hpa”命令的结果如下所示。我不能自动缩放!!!

我的 kubernetes 版本和“get hpa”的结果在下面的屏幕截图中给出。 请帮我自动缩放我的应用程序。我使用此指令安装 hpa https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#run-expose-php-apache-server]3。我正在使用数字海洋云来运行我的集群。帮我安装任何东西来获取指标,这样我就可以将它用于 hpa。

【问题讨论】:

我们需要更多信息,请提供 Kubernetes 版本以及您的环境是什么 - 是 GKE 吗?好像你用过这个tutorial。如果是,您在哪一步收到此错误? kubectl get hpa 也很有用。 你能发布kubectl logs <heapster-pod>的输出吗? heapster 正在运行吗? 是的 @Rico heapster 正在运行 我会在 DigitalOcean 上检查它,然后检查 github 上的 issue 是否解释了您的问题。 【参考方案1】:

我能够重现此问题。

Digital Ocean 不支持集群自动缩放,如 here 所述。但似乎 HPA 应该可以工作,因为它可以扩展 pod。

我能够使用它并使 HPA 正常工作。请注意,我没有在这方面花费大量时间,所以我还不知道以后是否有任何问题。我的目标是使 hpa 规模化,这很成功。

首先安装 Metrics server,因为 Heapster 已被弃用。我通过 git clone 然后kubectl create -f deploy/1.8+/ 做到了。

接下来找到指标服务器部署并进行编辑:

kubectl edit deployment metrics-server -n kube-system

spec: ->containers: 下添加以下指标:

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

等待几分钟,当您调用 kubectl get hpa 时,您会看到在 TARGETS<unknown>/50%changes to 0%/50% 下,您已准备好生成负载并扩展 Pod。停止加载后,hpa 会慢慢开始移除 pod。

更新:

你可能错过了一个破折号。它应该是这样的。

spec:
      containers:
      - command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        - --logtostderr
        image: k8s.gcr.io/metrics-server-amd64:v0.3.1

删除“图像”前面的破折号。

希望这会有所帮助。

【讨论】:

编辑后无法保存部署文件。说error: deployments.extensions "metrics-server" is invalid@aurelius 更新了答案,错误原因是编辑后在错误位置添加了破折号。

以上是关于无法获取 pod 指标 -Kubernetes的主要内容,如果未能解决你的问题,请参考以下文章

无法获取 cpu pod 指标,k8s-containerd-containerd-shim-runsc-v1-gvisor

Pod 无法访问 kubelet 端点

GKE K8 HPA 无法获取堆栈驱动程序指标

如何获取在 prometheus 中运行的 pod 数量

Kubernetes 集群部署 Metrics Server 获取集群 Metric 数据

Kubernetes 集群部署 Metrics Server 获取集群 Metric 数据