这意味着 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.io
apiserver 不提供 API,那么这仍然会退回到以前的行为。
最好使用kubectl
版本v1.10
或更高版本,因为它从 metrics-server 获取指标。
但是,请注意kubectl
版本倾斜策略:
kubectl
在一个次要版本(较旧或较新)中受支持
kube-apiserver
kube-apiserver
在选择您的版本之前检查您的kubectl
版本。