🔭

kubectl topを使えるようにする

2022/09/12に公開

はじめに

podのリソースを確認しようとしたら、error: Metrics API not availableが返ってきたので、リソースを確認できるようにします。

$ kubectl top pod
error: Metrics API not available

metrics-serverの導入

metrics-serverを使ってcluster内のリソース使用状況データを集約することができます。

$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
serviceaccount/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
service/metrics-server created
deployment.apps/metrics-server created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created

数分待つとmetrics-serverのpodが立ち上がります。

$ kubectl get pod -n kube-system
NAME                                           READY   STATUS    RESTARTS   AGE
metrics-server-64cf6869bd-qspcp                1/1     Running   0          4m3s

kubectl top

対象のpodのリソースを確認します。

$ kubectl top pod -n app
NAME                              CPU(cores)   MEMORY(bytes)   
app-deployment-58dcb7dc99-v9jpj   1m           2Mi

-n appはnamespaceを指定しています。
指定しない場合はnamespaceがdefaultのpodを表示します。

参考

https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/metrics-server.html

Discussion