web-dev-qa-db-ja.com

kubectlトップノードにエラーが表示されます:メトリックはまだ利用できません

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)

エラーに取り組むための手がかりはありますか?

7
Abu Shoeb

これは、ヒープスターが適切に構成されていないことを意味します。

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に依存しています。

CHANGELOG-1.10.md

  • kubectl topコマンドでメトリックAPIをサポートします。 ( #56206 、@ brancz)

このPRは、kubectl topコマンドのサポートを実装して、ヒープスターから直接メトリックを要求する代わりに、メトリックサーバーを集約APIとして使用します。 metrics.k8s.io AP​​IがAPIサーバーによって提供されない場合でも、これは以前の動作にフォールバックします。

kubectlバージョンv1.10以上を使用することをお勧めします。これは、metrics-serverからメトリックをフェッチするためです。

ただし、注意してください kubectlバージョンスキューポリシー

kubectlは、kube-apiserverの1つのマイナーバージョン(古いまたは新しい)内でサポートされています

kubectlバージョンを選択する前に、kube-apiserverバージョンを確認してください。

3