(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes】Heapsterでkubectl top pods/nodeを利用する

スポンサーリンク

はじめに

Kubernetesではポッドの状況を確認するためのHeapsterやmetrics-serverが導入されていない場合にkubectl topコマンドが利用できません。
本記事ではDocker Desktop環境にてHeapsterを導入し、kubectl top podsを利用できるようにするまでの流れについて記載します。

環境情報
  • Windows 10 Enterprise
  • Docker Desktop 2.2.0
  • Heapster version v1.5.4

topコマンドが効かない状況では以下のようにエラーが返ってきました。

> kubectl top pods
W0505 ...   14540 top_pod.go:266] Metrics not available for pod <Pod_Name>, age: xx
> kubectl top node
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)

Heapsterをインストールする

上記メッセージにもある通りheapsterをインストールして立ち上げます。

> git clone https://github.com/kubernetes/heapster.git
Cloning into 'heapster'...

インストールされたファイル群の以下パスにYAMLファイルがあるので

heapster/deploy/kube-config/standalone/heapster-controller.yaml

証明書関連のエラーを防ぐために以下を

- --source=kubernetes:https://kubernetes.default?kubeletHttps=true&kubeletPort=10250&insecure=true

以下に修正します。

- --source=kubernetes:https://kubernetes.default

Heapsterをデプロイする

先ほど編集したYAMLファイルをデプロイすればサービス含めて立ち上がります。

> kubectl apply -f .\heapster\deploy\kube-config\standalone\heapster-controller.yaml
serviceaccount/heapster created
deployment.extensions/heapster created

Namespaceが kube-system となっているので以下からポッド名を確認し

e> kubectl get pods -n kube-system
NAME                                     READY   STATUS    RESTARTS   AGE
...
heapster-675649d98c-gpnh9                1/1     Running   0          3s
...

念のためエラーが吐かれていないか確認します。

> kubectl logs -n kube-system heapster-675649d98c-gpnh9
I0505 06:36:36.539066       1 heapster.go:78] /heapster --source=kubernetes:https://kubernetes.default?kubeletHttps=true&kubeletPort=10250&insecure=true
I0505 xx       1 heapster.go:79] Heapster version v1.5.4
I0505 xx       1 configs.go:61] Using Kubernetes client with master "https://kubernetes.default" and version v1
I0505 xx       1 configs.go:62] Using kubelet port 10250
I0505 xx       1 heapster.go:202] Starting with Metric Sink
I0505 xx       1 heapster.go:112] Starting heapster on port 8082

kubectl top pods/nodeを利用する

稼働しているPodのCPUやメモリ使用状況やノードの状況が確認できます。

> kubectl top pods
NAME                            CPU(cores)   MEMORY(bytes)
nginx-canary-5c8784fd6d-gjsxm   0m           1Mi
> kubectl top node
NAME             CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
docker-desktop   120m         6%     953Mi           50%

終わりに

DockerDesktopでは以下がkube-systemという名前空間にて上がっていますが

coredns
etcd-docker-desktop
kube-apiserver-docker-desktop
kube-controller-manager-docker-desktop
kube-proxy-mltll
kube-scheduler-docker-desktop

Heapsterを上げればポッドのパフォーマンス状況を把握できます。

以上、ご参考になれば幸いです。