スポンサーリンク

【Kubernetes】監視・状態確認に便利なkubectlコマンド一覧!Pod・Node・CPU・メモリの確認方法

  1. 【Kubernetes】監視・状態確認に便利なkubectlコマンド一覧!Pod・Node・CPU・メモリの確認方法
  2. Kubernetesの監視・状態確認に便利なコマンド一覧
  3. Podの状態を確認するコマンド
    1. 1. Podの一覧を確認する
    2. 2. すべてのNamespaceのPodを確認する
    3. 3. PodのIPアドレスやNodeを確認する
    4. 4. Podの状態をリアルタイムで監視する
    5. 5. Podの詳細情報を確認する
  4. Nodeの状態を確認するコマンド
    1. 1. Nodeの一覧を確認する
    2. 2. Nodeの詳細情報を確認する
    3. 3. NodeのIPアドレスを確認する
  5. CPU・メモリの使用量を確認するコマンド
    1. 1. PodのCPU・メモリ使用量を確認する
    2. 2. すべてのNamespaceのPodの使用量を確認する
    3. 3. NodeのCPU・メモリ使用量を確認する
    4. 4. コンテナごとのCPU・メモリ使用量を確認する
    5. 注意:kubectl topを使用するための条件
  6. ログを確認するコマンド
    1. 1. Podのログを確認する
    2. 2. ログをリアルタイムで確認する
    3. 3. 最新の100行だけ確認する
    4. 4. コンテナの再起動前のログを確認する
    5. 5. Namespaceを指定してログを確認する
  7. Kubernetesのイベントを確認するコマンド
    1. 1. イベントの一覧を確認する
    2. 2. すべてのNamespaceのイベントを確認する
    3. 3. イベントを発生時刻順に並べる
    4. 4. Warningイベントだけを確認する
  8. Deployment・Serviceの状態を確認するコマンド
    1. 1. Deploymentの状態を確認する
    2. 2. Deploymentの詳細情報を確認する
    3. 3. Deploymentの更新状況を確認する
    4. 4. Serviceの一覧を確認する
    5. 5. Serviceの詳細情報を確認する
  9. Kubernetesのリソースをまとめて確認するコマンド
    1. 1. 主要リソースの一覧を確認する
    2. 2. 特定のNamespaceのリソースを確認する
    3. 3. リソースの一覧をJSON形式で確認する
  10. Kubernetesの障害調査に便利なコマンド
    1. 1. Running以外のPodを確認する
    2. 2. CrashLoopBackOffの原因を調査する
    3. 3. Pending状態のPodを調査する
    4. 4. ImagePullBackOffの原因を調査する
  11. 監視・状態確認で覚えておきたい便利なオプション
  12. Kubernetesの監視におすすめのツール
    1. Prometheus
    2. Grafana
  13. まとめ

【Kubernetes】監視・状態確認に便利なkubectlコマンド一覧!Pod・Node・CPU・メモリの確認方法

Kubernetesでは、PodやNodeの稼働状況、CPU・メモリの使用量、アプリケーションのログなど、さまざまな情報を確認できます。

しかし、確認したい情報によって使用するkubectlコマンドが異なるため、どのコマンドを使えばよいか迷うこともあるのではないでしょうか。

本記事では、Kubernetesの監視・状態確認に便利なkubectlコマンドを紹介します。

PodやNodeの状態確認から、CPU・メモリの使用量、ログ、イベントの確認まで、実務で役立つコマンドをまとめています。

Kubernetesの監視・状態確認に便利なコマンド一覧

まずは、Kubernetesの監視や状態確認でよく使用するkubectlコマンドを一覧で紹介します。

コマンド用途
kubectl get podsPodの状態確認
kubectl get pods -A全NamespaceのPod確認
kubectl get nodesNodeの状態確認
kubectl describe podPodの詳細情報確認
kubectl top podsPodのCPU・メモリ使用量確認
kubectl top nodesNodeのCPU・メモリ使用量確認
kubectl logsコンテナのログ確認
kubectl get eventsKubernetesのイベント確認
kubectl get deploymentsDeploymentの状態確認
kubectl get servicesServiceの状態確認
kubectl get all主要リソースの一覧確認
kubectl get pods -wPodの状態をリアルタイム監視

以降では、それぞれのコマンドの使い方を解説します。

Podの状態を確認するコマンド

PodはKubernetesでコンテナを実行する最小単位です。

アプリケーションが正常に動作しているか確認するときは、まずPodの状態を確認します。

1. Podの一覧を確認する

kubectl get pods

実行すると、現在のNamespaceに存在するPodの一覧を確認できます。

実行結果の例です。

NAME                     READY   STATUS    RESTARTS   AGE
nginx-7d8b49557c-abcde   1/1     Running   0          10m
nginx-7d8b49557c-fghij   1/1     Running   0          10m

主な項目は以下のとおりです。

項目説明
NAMEPodの名前
READY起動しているコンテナ数
STATUSPodの状態
RESTARTSコンテナの再起動回数
AGEPodが作成されてからの経過時間

特に確認したいのはSTATUSとRESTARTSです。

STATUSがRunningであればPodは実行中です。また、RESTARTSが増加している場合は、コンテナが繰り返し再起動していないか調査する必要があります。

2. すべてのNamespaceのPodを確認する

kubectl get pods -A

-Aを指定すると、すべてのNamespaceに存在するPodを確認できます。

特定のNamespaceだけでなく、Kubernetesクラスター全体のPodを確認したい場合に便利です。

3. PodのIPアドレスやNodeを確認する

kubectl get pods -o wide

-o wideを指定すると、通常の一覧に加えて、PodのIPアドレスや配置されているNodeなどの情報を確認できます。

特定のPodがどのNodeで実行されているか調べたい場合に便利です。

すべてのNamespaceを対象にする場合は、以下のように実行します。

kubectl get pods -A -o wide

4. Podの状態をリアルタイムで監視する

kubectl get pods -w

-wは--watchの省略形です。

Podの状態に変化があった場合に、画面上に更新内容が表示されます。

例えば、Podの作成や削除、再起動などの変化を確認できます。

コマンドを終了する場合はCtrl + Cを押します。

5. Podの詳細情報を確認する

kubectl describe pod nginx-7d8b49557c-abcde

describeを使用すると、指定したPodの詳細情報を確認できます。

主に以下の情報を確認できます。

  • Podの状態
  • コンテナの状態
  • コンテナの再起動回数
  • 使用しているイメージ
  • PodのIPアドレス
  • 配置されているNode
  • Events(イベント情報)

Podが正常に起動しない場合や、CrashLoopBackOffなどのエラーが発生した場合に便利なコマンドです。

なお、Pod名は実際に存在する名前に置き換えてください。

Nodeの状態を確認するコマンド

Nodeは、KubernetesのPodを実行するためのサーバーです。

クラスター内のNodeが正常に稼働しているか確認するときは、以下のコマンドを使用します。

1. Nodeの一覧を確認する

kubectl get nodes

実行結果の例です。

NAME           STATUS   ROLES           AGE   VERSION
k8s-master     Ready    control-plane   30d   v1.32.0
k8s-worker-1   Ready    <none>          30d   v1.32.0
k8s-worker-2   Ready    <none>          30d   v1.32.0

主な項目は以下のとおりです。

項目説明
NAMENodeの名前
STATUSNodeの状態
ROLESNodeの役割
AGE作成からの経過時間
VERSIONKubernetesのバージョン

STATUSがReadyであれば、NodeはPodを実行できる状態です。

一方、NotReadyの場合は、Nodeの障害やネットワークの問題などが発生している可能性があります。

2. Nodeの詳細情報を確認する

kubectl describe node k8s-worker-1

指定したNodeの詳細情報を確認できます。

主に以下の情報が表示されます。

  • Nodeの状態
  • CPU・メモリなどのリソース情報
  • Nodeに割り当てられているPod
  • NodeのIPアドレス
  • Conditions
  • Events

NodeがNotReadyになった場合や、Podが正常に配置されない場合の調査に便利です。

3. NodeのIPアドレスを確認する

kubectl get nodes -o wide

-o wideを指定すると、Nodeの内部IPアドレスやOSイメージなどの情報を確認できます。

Node間のネットワーク接続を調査するときにも役立ちます。

CPU・メモリの使用量を確認するコマンド

Kubernetesでは、PodやNodeごとのCPU・メモリの使用量を確認できます。

リソース不足によるパフォーマンス低下や、メモリ不足の調査などに便利です。

1. PodのCPU・メモリ使用量を確認する

kubectl top pods

実行結果の例です。

NAME                     CPU(cores)   MEMORY(bytes)
nginx-7d8b49557c-abcde   25m          128Mi
nginx-7d8b49557c-fghij   40m          150Mi

主な項目は以下のとおりです。

項目説明
NAMEPodの名前
CPU(cores)CPUの使用量
MEMORY(bytes)メモリの使用量

CPUの25mは、CPUコアの0.025個分を意味します。

メモリの128Miは、128メビバイトです。

CPUやメモリを大量に使用しているPodを特定したい場合に便利です。

2. すべてのNamespaceのPodの使用量を確認する

kubectl top pods -A

すべてのNamespaceに存在するPodのCPU・メモリ使用量を確認できます。

特定のNamespaceだけでなく、クラスター全体でリソースを大量に使用しているPodを探したい場合に便利です。

3. NodeのCPU・メモリ使用量を確認する

kubectl top nodes

実行結果の例です。

NAME           CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
k8s-master     250m         12%    1024Mi          25%
k8s-worker-1   800m         40%    2048Mi          50%
k8s-worker-2   500m         25%    1536Mi          38%

NodeごとのCPU・メモリ使用量を確認できます。

特定のNodeに負荷が集中していないか確認したい場合に便利です。

4. コンテナごとのCPU・メモリ使用量を確認する

kubectl top pods --containers

Pod単位ではなく、Pod内のコンテナごとのリソース使用量を確認できます。

複数のコンテナを実行しているPodで、どのコンテナがCPUやメモリを多く使用しているか調べる場合に便利です。

注意:kubectl topを使用するための条件

kubectl topを使用するには、Metrics Serverがクラスターに導入されている必要があります。

導入されていない場合、以下のようなエラーが発生することがあります。

error: Metrics API not available

その場合は、Metrics Serverの導入状況を確認してください。

kubectl get deployment metrics-server -n kube-system

なお、kubectl topで確認できるのは現在のリソース使用量です。長期間の使用量の推移やグラフによる監視には、PrometheusやGrafanaなどの監視ツールが適しています。

ログを確認するコマンド

Pod内のアプリケーションでエラーが発生した場合は、ログを確認することで原因を調査できます。

1. Podのログを確認する

kubectl logs nginx-7d8b49557c-abcde

指定したPodのコンテナログを確認できます。

アプリケーションのエラーや例外が発生していないか調査するときに便利です。

2. ログをリアルタイムで確認する

kubectl logs -f nginx-7d8b49557c-abcde

-fは--followの省略形です。

ログが追加されるたびに画面に表示されるため、アプリケーションの動作をリアルタイムで確認できます。

終了する場合はCtrl + Cを押します。

3. 最新の100行だけ確認する

kubectl logs --tail=100 nginx-7d8b49557c-abcde

--tail=100を指定すると、最新の100行だけを表示できます。

ログが大量に出力されるアプリケーションで、直近のエラーを確認したい場合に便利です。

4. コンテナの再起動前のログを確認する

kubectl logs --previous nginx-7d8b49557c-abcde

--previousを指定すると、現在のコンテナではなく、直前に終了したコンテナのログを確認できます。

コンテナが再起動してしまい、再起動前に発生していたエラーを調査したい場合に便利です。

5. Namespaceを指定してログを確認する

kubectl logs -n default nginx-7d8b49557c-abcde

-nを指定すると、対象のNamespaceを指定できます。

デフォルト以外のNamespaceで動作しているPodのログを確認するときに使用します。

Kubernetesのイベントを確認するコマンド

Kubernetesでは、PodやNodeなどのリソースに関するイベントが記録されます。

Podの起動失敗やイメージの取得失敗など、トラブルの原因を調査するときに便利です。

1. イベントの一覧を確認する

kubectl get events

現在のNamespaceに記録されているイベントを確認できます。

実行結果の例です。

LAST SEEN   TYPE      REASON      OBJECT        MESSAGE
2m          Normal    Scheduled   pod/nginx     Successfully assigned
1m          Normal    Pulling     pod/nginx     Pulling image
1m          Normal    Pulled      pod/nginx     Successfully pulled image

主な項目は以下のとおりです。

項目説明
LAST SEEN最後に発生してからの経過時間
TYPEイベントの種類
REASONイベントの理由
OBJECT対象のリソース
MESSAGEイベントの詳細

TYPEには主に以下の種類があります。

  • Normal:正常な処理に関するイベント
  • Warning:警告や問題に関するイベント

特にWarningが記録されている場合は、内容を確認して原因を調査しましょう。

2. すべてのNamespaceのイベントを確認する

kubectl get events -A

すべてのNamespaceに記録されているイベントを確認できます。

クラスター全体で発生している問題を調査するときに便利です。

3. イベントを発生時刻順に並べる

kubectl get events --sort-by=.metadata.creationTimestamp

イベントを作成時刻順に並べて表示できます。

問題が発生した前後のイベントを時系列で確認したい場合に便利です。

4. Warningイベントだけを確認する

kubectl get events --field-selector type=Warning

--field-selectorを指定すると、条件に一致するイベントだけを取得できます。

このコマンドでは、Warningイベントに絞り込んで確認できます。

Deployment・Serviceの状態を確認するコマンド

Podだけでなく、DeploymentやServiceなどのリソースも定期的に確認しておくと、Kubernetesの状態を把握しやすくなります。

1. Deploymentの状態を確認する

kubectl get deployments

Deploymentの一覧を確認できます。

実行結果の例です。

NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   2/2     2            2           10m

主な項目は以下のとおりです。

項目説明
NAMEDeploymentの名前
READY利用可能なPod数 / 希望するPod数
UP-TO-DATE最新の設定が反映されたPod数
AVAILABLE利用可能なPod数
AGE作成からの経過時間

例えば、READYが2/2であれば、希望する2つのPodが準備できている状態です。

2. Deploymentの詳細情報を確認する

kubectl describe deployment nginx

Deploymentの詳細情報を確認できます。

レプリカ数やPodの状態、イベントなどを確認したい場合に便利です。

3. Deploymentの更新状況を確認する

kubectl rollout status deployment/nginx

Deploymentの更新処理が完了しているか確認できます。

ローリングアップデート中に、Podの入れ替えが正常に完了しているか確認したい場合に便利です。

4. Serviceの一覧を確認する

kubectl get services

Serviceの一覧を確認できます。

実行結果の例です。

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP   30d
nginx        ClusterIP   10.96.10.20    <none>        80/TCP    10m

Serviceの名前や種類、IPアドレス、公開ポートなどを確認できます。

5. Serviceの詳細情報を確認する

kubectl describe service nginx

指定したServiceの詳細情報を確認できます。

接続先のPodやポート、Selectorなどを調査したい場合に便利です。

Kubernetesのリソースをまとめて確認するコマンド

1. 主要リソースの一覧を確認する

kubectl get all

現在のNamespaceに存在する主要なリソースをまとめて確認できます。

Pod、Service、Deployment、ReplicaSetなどを一覧で確認したい場合に便利です。

すべてのNamespaceを対象にする場合は、以下のように実行します。

kubectl get all -A

ただし、get allはKubernetesに存在するすべてのリソースを取得するコマンドではありません。

ConfigMapやSecret、PersistentVolumeなどは含まれないため、必要に応じて個別に確認してください。

2. 特定のNamespaceのリソースを確認する

kubectl get all -n default

-nでNamespaceを指定すると、そのNamespace内の主要リソースを確認できます。

3. リソースの一覧をJSON形式で確認する

kubectl get pods -o json

Podの情報をJSON形式で取得できます。

スクリプトによる情報の加工や、リソースの詳細な設定内容を確認したい場合に便利です。

YAML形式で確認したい場合は、以下のように実行します。

kubectl get pods -o yaml

Kubernetesの障害調査に便利なコマンド

KubernetesでPodが正常に起動しない場合は、Podの状態やログ、イベントを確認することで原因を特定しやすくなります。

ここでは、障害調査で特に役立つコマンドを紹介します。

1. Running以外のPodを確認する

kubectl get pods --field-selector=status.phase!=Running

Podの状態がRunning以外のものを抽出できます。

例えば、以下のような状態のPodを調査するときに便利です。

STATUS説明
PendingPodの配置や起動を待っている状態
SucceededPodの処理が正常終了した状態
FailedPodの処理が失敗した状態
UnknownPodの状態を確認できない状態

なお、CrashLoopBackOffなどはPodのphaseではなくコンテナの状態を表すため、このコマンドだけでは抽出できません。

2. CrashLoopBackOffの原因を調査する

kubectl get pods

STATUSがCrashLoopBackOffになっているPodを確認します。

続いて、以下のコマンドを実行します。

kubectl describe pod nginx-7d8b49557c-abcde

Podの詳細情報やEventsを確認できます。

さらに、再起動前のログを確認します。

kubectl logs --previous nginx-7d8b49557c-abcde

このように、describeとlogs --previousを組み合わせることで、コンテナが繰り返し再起動する原因を調査できます。

3. Pending状態のPodを調査する

kubectl describe pod nginx-7d8b49557c-abcde

PodがPendingになっている場合は、Eventsを確認します。

例えば、以下のような原因が考えられます。

  • NodeのCPUやメモリが不足している
  • PersistentVolumeが確保できていない
  • Podの配置条件を満たすNodeが存在しない
  • スケジューリングに問題が発生している

特にEventsに記録されたWarningを確認すると、原因を特定する手掛かりになります。

4. ImagePullBackOffの原因を調査する

kubectl describe pod nginx-7d8b49557c-abcde

ImagePullBackOffは、コンテナイメージを取得できず、Podの起動に失敗している状態です。

主な原因は以下のとおりです。

  • イメージ名やタグが間違っている
  • コンテナレジストリにイメージが存在しない
  • 認証情報が正しく設定されていない
  • レジストリに接続できない

describeで表示されるEventsの内容を確認して、原因を調査しましょう。

監視・状態確認で覚えておきたい便利なオプション

kubectlには、状態確認を効率化するための便利なオプションが用意されています。

オプション説明
-AすべてのNamespaceを対象にする
-nNamespaceを指定する
-o wide詳細な情報を表示する
-o yamlYAML形式で表示する
-o jsonJSON形式で表示する
-wリソースの変更を監視する
--watchリソースの変更を監視する
--sort-by指定した項目で並び替える
--field-selector条件に一致するリソースを取得する
--tailログの末尾から指定行数を取得する
-fログをリアルタイムで表示する

これらのオプションを組み合わせることで、必要な情報を効率よく確認できます。

Kubernetesの監視におすすめのツール

ここまで紹介したkubectlコマンドは、Kubernetesの状態を確認するときに便利です。

ただし、kubectlによる確認だけでは、長期間のリソース使用量の推移や、障害発生時の自動通知などには対応できません。

本格的な監視環境を構築したい場合は、以下のツールもおすすめです。

Prometheus

Prometheusは、システムのメトリクスを収集・保存する監視ツールです。

KubernetesのCPUやメモリ、Podの稼働状況などを収集し、一定の条件を満たした場合にアラートを発生させることもできます。

Grafana

Grafanaは、収集したメトリクスなどをグラフやダッシュボードで可視化するツールです。

Prometheusと組み合わせることで、KubernetesのCPU・メモリ使用量や稼働状況を視覚的に確認できます。

まとめ

本記事では、Kubernetesの監視・状態確認に便利なkubectlコマンドを紹介しました。

特に覚えておきたいコマンドは以下のとおりです。

確認したい内容コマンド
Podの状態kubectl get pods -A
Nodeの状態kubectl get nodes
Podの詳細情報kubectl describe pod
CPU・メモリ使用量kubectl top pods
Nodeのリソース使用量kubectl top nodes
アプリケーションのログkubectl logs
再起動前のログkubectl logs --previous
イベント情報kubectl get events -A
Deploymentの状態kubectl get deployments
Podのリアルタイム監視kubectl get pods -w

Kubernetesでは、PodやNodeの状態、CPU・メモリの使用量、ログ、イベントなどを確認することで、障害の早期発見や原因調査に役立てることができます。

今回紹介したコマンドは、日常的なKubernetesの運用やトラブルシューティングでも使用できるため、ぜひ活用してみてください。