はじめに
kubectl-pod-inspect について紹介していきます。
kubectl-pod-inspect
kubectl-pod-inspect は、kubectl describe
などで取得できる Pod に含まれるコンテナを情報をわかりやすく表示してくれる kubectl プラグインです。
表示できる内容としては下記になります。
- Pod に含まれるコンテナのステータスと使っているイメージ
- Pod の起動に失敗した時のステータス
- Pod のイベント
- READY でないコンテナのログ
インストール
krew を使って、下記のコマンドでインストールができます。
kubectl krew install pod-inspect
krew については、下記を参考にしてください。

【Kubernetes】Krewでkubectlのプラグインを管理する
はじめに kubectlのプラグインを管理できるKrewについて紹介していきます。 Krewとは Krewは、kubectlコマンドのプラグインマネージャーになります。 kubectlのプラグインの検索やインストール、アップデートが楽にでき...
使い方
基本的には、下記で実行できます。
kubectl pod-inspect {pod name}
使いそうなオプションとしては、下記があります。
--max-num-events
(-e
): Pod のイベントの表示数--max-num-log-lines
(-l
):READY
でないコンテナのログの表示数
下記のマニフェストを使って、出力を見てみます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-pod
spec:
replicas: 3
selector:
matchLabels:
app: sample-pod
template:
metadata:
labels:
app: sample-pod
spec:
containers:
- name: bb1
image: busybox:1.34-glibc
command:
- sleep
- "99999"
- name: bb2
image: busybox:1.35-muslaaaa
command:
- sleep
- "99999"
- name: app
image: wonwoo/spring-boot-docker-postgresql
下記が出力結果になります。
❯ kpi sample-pod-5f77566dd-9lwsp -l 15
Pod: default / sample-pod-5f77566dd-9lwsp
Node: docker-desktop
Containers:
Type Name State RC Ready Image
C app W (CrashLoopBackOff) 2 ✖ wonwoo/spring-boot-docker-postgresql
back-off 20s restarting failed container=app pod=sample-pod-5f77566dd-9lwsp_default(68186983-292a-48a8-8f6a-63dad04d08ae)
⚠️ Last Terminated: Completed (0), 2023-10-10 21:17:03 +0900 JST
C bb1 R 0 ✔ busybox:1.34-glibc
C bb2 W (ImagePullBackOff) 0 ✖ busybox:1.35-muslaaaa
Back-off pulling image "busybox:1.35-muslaaaa"
Failed Pod Conditions:
Condition Reason Message
Ready ContainersNotReady containers with unready status: [bb2 app]
ContainersReady ContainersNotReady containers with unready status: [bb2 app]
Last 10 pod events:
Last Seen Type Reason Message
2023-10-10 21:15:11 +0900 JST Normal Pulling Pulling image "busybox:1.35-muslaaaa"
2023-10-10 21:15:14 +0900 JST Warning Failed Failed to pull image "busybox:1.35-muslaaaa": rpc error: code = Unknown desc = Error response from daemon: manifest for busybox:1.35-muslaaaa not found: manifest unknown: manifest unknown
2023-10-10 21:15:14 +0900 JST Warning Failed Error: ErrImagePull
2023-10-10 21:15:30 +0900 JST Normal Pulling Pulling image "wonwoo/spring-boot-docker-postgresql"
2023-10-10 21:14:57 +0900 JST Normal Pulled Successfully pulled image "wonwoo/spring-boot-docker-postgresql" in 7.339885137s
2023-10-10 21:15:33 +0900 JST Normal Created Created container app
2023-10-10 21:15:33 +0900 JST Normal Started Started container app
2023-10-10 21:15:30 +0900 JST Normal BackOff Back-off pulling image "busybox:1.35-muslaaaa"
2023-10-10 21:15:30 +0900 JST Warning Failed Error: ImagePullBackOff
2023-10-10 21:15:33 +0900 JST Normal Pulled Successfully pulled image "wonwoo/spring-boot-docker-postgresql" in 2.676377884s
Container app logs (last 15 lines):
... 30 more
Caused by: java.sql.SQLException: Driver:org.postgresql.Driver@247737cc returned null for URL:jdbc:postgresql://${POSTGRES_PORT_5432_TCP_ADDR}:${POSTGRES_PORT_5432_TCP_PORT}/docker
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:326)
at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200)
at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:708)
at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:642)
at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:464)
at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:141)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:102)
at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:126)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
... 35 more
各コンテナの状態と使っているイメージ、コンテナが READY でない場合はその理由などがわかりやすく表示されます。また、起動に失敗して READY になっていないコンテナについては、ログも表示されているので Pod のエラー調査に使いやすそうです。