読者です 読者をやめる 読者になる 読者になる

uyamazakのブログ

仕事中の問題と解決メモ。PythonとGoogle Cloudがメイン。bizoceanで新規事業の企画と開発担当。 BigQueryを使ったビッグデータ収集・解析・リアルタイム処理プロジェクト進行中 https://github.com/uyamazak/oceanus

Docker+Kubernetesの使用メモリ確認方法

メモリ使用量は起動できるコンテナ数、費用にも関わってくるので大事。確認方法をまとめます。

Docker

docker statsコマンドで確認できる

$ sudo docker stats {CONTAINER ID}

こんな感じで表示される

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O               BLOCK I/O           PIDS
dcbab3454104        0.00%               17.77 MB / 33.64 GB   0.05%               37.83 MB / 6.387 MB   0 B / 0 B           1

CONTAINER IDは

$ sudo docker ps

で確認できる。

% docker ps
CONTAINER ID        IMAGE                                            COMMAND                  CREATED             STATUS              PORTS                                      NAMES
dcbab3454104        asia.gcr.io/oceanus-dev/table-manager:latest     "python3.5 table-mana"   38 minutes ago      Up 38 minutes                                                  jovial_cray


何度も止めたり起動したりをしてるときは、いちいちIDを確認するのは手間なので下記のようにdocker psをイメージ名などでフィルターした結果を使うと便利。
-qをつけることで、IDのみ返してくれる。

docs.docker.com


シェルスクリプト化で更に便利。

$ sudo docker stats `sudo docker ps -f ancestor={イメージ名} -q`

Kubernetes

Google Container Engineで使ってます。

$ kubectl top pod

こんな感じででる

NAME                             CPU(cores)   MEMORY(bytes)
arms-2374624802-s8tx6            21m          44Mi
table-manager-1546569972-4lv46   59m          16Mi
arms-2374624802-5vd0l            21m          45Mi
arms-2374624802-8j8wx            20m          45Mi
r2bq-1043652369-7smpb            39m          36Mi
redis-pd-1996650620-p1o6f        4m           53Mi
revelation-2254162989-l893m      4m           37Mi

ローカルのDocker EngineとKubernetesは、うちの場合、メモリ使用量はほぼ一緒なので、チューニングのときはローカルでのテストでも十分そう。