はじめに
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を上げればポッドのパフォーマンス状況を把握できます。
以上、ご参考になれば幸いです。