7

我正在使用 Kubernetes 1.7 并运行 hepaster。当我跑

kubectl top nodes --heapster-namespace=kube-system

它向我展示了

error: metrics not available yet

我也试过这个

kubectl top nodes --heapster-namespace=kube-system --heapster-service=heapster --heapster-scheme=http --heapster-port=12213

heapster 在哪里运行,然后它显示以下错误。

Error from server (ServiceUnavailable): the server is currently unable to handle the request (get services http:heapster:12213)

任何解决错误的线索?

4

1 回答 1

3

这意味着 heapster 没有正确配置。

您需要确保 heapster 在kube-system命名空间上运行,并检查/healthz端点是否正常:

$ export HEAPSTER_POD=$(kubectl get po -l k8s-app=heapster -n kube-system -o jsonpath='{.items[*].metadata.name}')
$ export HEAPSTER_SERVICE=$(kubectl get service/heapster --namespace=kube-system -o jsonpath="{.spec.clusterIP}")
$ curl -L "http://${HEAPSTER_SERVICE}/healthz"
ok

然后,您可以检查指标 API 是否可用:

$ curl -L "http://${HEAPSTER_SERVICE}/api/v1/model/metrics/"
[
  "cpu/usage_rate",
  "memory/usage",
  "cpu/request",
  "cpu/limit",
  "memory/request",
  "memory/limit"
 ]

如果它没有像上面那样返回,请查看容器日志是否有错误:

$ kubectl logs -n kube-system ${HEAPSTER_POD} --all-containers


不过,请记住,Heapster 是一个已弃用的项目,在最近的 Kubernetes 版本中运行它时可能会遇到问题。

请参阅Heapster 弃用时间表

| Kubernetes Release  | Action              | Policy/Support                                                                   |
|---------------------|---------------------|----------------------------------------------------------------------------------|
| Kubernetes 1.11     | Initial Deprecation | No new features or sinks are added.  Bugfixes may be made.                       |
| Kubernetes 1.12     | Setup Removal       | The optional to install Heapster via the Kubernetes setup script is removed.     |
| Kubernetes 1.13     | Removal             | No new bugfixes will be made.  Move to kubernetes-retired organization.          |

从 Kubernetes v1.10 开始,默认情况下kubectl top依赖于metrics-server

变更日志-1.10.md

  • kubectl top在命令中支持指标 API 。(#56206,@brancz)

此 PR 实现了对kubectl top将 metrics-server 用作聚合 API 的命令的支持,而不是直接从 heapster 请求指标。如果metrics.k8s.ioapiserver 不提供 API,那么这仍然会退回到以前的行为。

最好使用kubectl版本v1.10或更高版本,因为它从 metrics-server 获取指标。

但是,请注意kubectl版本倾斜策略

kubectl在一个次要版本(较旧或较新)中受支持 kube-apiserver

kube-apiserver在选择您的版本之前检查您的kubectl版本。

于 2019-09-16T14:55:29.407 回答