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
ヒープスターが実行されている場合、次のエラーが表示されます。
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get services http:heapster:12213)
エラーに取り組むための手がかりはありますか?
これは、ヒープスターが適切に構成されていないことを意味します。
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 Deprecation Timeline を参照してください:
| 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に依存しています。
kubectl top
コマンドでメトリックAPIをサポートします。 ( #56206 、@ brancz)このPRは、
kubectl top
コマンドのサポートを実装して、ヒープスターから直接メトリックを要求する代わりに、メトリックサーバーを集約APIとして使用します。metrics.k8s.io
APIがAPIサーバーによって提供されない場合でも、これは以前の動作にフォールバックします。
kubectl
バージョンv1.10
以上を使用することをお勧めします。これは、metrics-serverからメトリックをフェッチするためです。
ただし、注意してください kubectl
バージョンスキューポリシー :
kubectl
は、kube-apiserver
の1つのマイナーバージョン(古いまたは新しい)内でサポートされています
kubectl
バージョンを選択する前に、kube-apiserver
バージョンを確認してください。