【kubectl】kubectl-pod-inspectでPodの情報を取得
2023.10.10
2024.03.24
Kubernetes
kubectl
はじめに
kubectl-pod-inspect について紹介していきます。
kubectl-pod-inspect
kubectl-pod-inspect は、kubectl describe
などで取得できる Pod に含まれるコンテナを情報をわかりやすく表示してくれる kubectl プラグインです。
表示できる内容としては下記になります。
- Pod に含まれるコンテナのステータスと使っているイメージ
- Pod の起動に失敗した時のステータス
- Pod のイベント
- READY でないコンテナのログ
インストール
krew を使って、下記のコマンドでインストールができます。
1kubectl krew install pod-inspect
krew については、下記を参考にしてください。
【Kubernetes】Krewでkubectlのプラグインを管理する
はじめに kubectlのプラグインを管理できるKrewについて紹介していきます。 Krewと
使い方
基本的には、下記で実行できます。
1kubectl pod-inspect {pod name}
使いそうなオプションとしては、下記があります。
--max-num-events
(-e
): Pod のイベントの表示数--max-num-log-lines
(-l
):READY
でないコンテナのログの表示数
下記のマニフェストを使って、出力を見てみます。
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: sample-pod
5spec:
6 replicas: 3
7 selector:
8 matchLabels:
9 app: sample-pod
10 template:
11 metadata:
12 labels:
13 app: sample-pod
14 spec:
15 containers:
16 - name: bb1
17 image: busybox:1.34-glibc
18 command:
19 - sleep
20 - "99999"
21 - name: bb2
22 image: busybox:1.35-muslaaaa
23 command:
24 - sleep
25 - "99999"
26 - name: app
27 image: wonwoo/spring-boot-docker-postgresql
下記が出力結果になります。
1❯ kpi sample-pod-5f77566dd-9lwsp -l 15
2Pod: default / sample-pod-5f77566dd-9lwsp
3Node: docker-desktop
4
5Containers:
6
7 Type Name State RC Ready Image
8 C app W (CrashLoopBackOff) 2 ✖ wonwoo/spring-boot-docker-postgresql
9 back-off 20s restarting failed container=app pod=sample-pod-5f77566dd-9lwsp_default(68186983-292a-48a8-8f6a-63dad04d08ae)
10 ⚠️ Last Terminated: Completed (0), 2023-10-10 21:17:03 +0900 JST
11 C bb1 R 0 ✔ busybox:1.34-glibc
12 C bb2 W (ImagePullBackOff) 0 ✖ busybox:1.35-muslaaaa
13 Back-off pulling image "busybox:1.35-muslaaaa"
14
15Failed Pod Conditions:
16
17 Condition Reason Message
18 Ready ContainersNotReady containers with unready status: [bb2 app]
19 ContainersReady ContainersNotReady containers with unready status: [bb2 app]
20
21Last 10 pod events:
22
23 Last Seen Type Reason Message
24 2023-10-10 21:15:11 +0900 JST Normal Pulling Pulling image "busybox:1.35-muslaaaa"
25 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
26 2023-10-10 21:15:14 +0900 JST Warning Failed Error: ErrImagePull
27 2023-10-10 21:15:30 +0900 JST Normal Pulling Pulling image "wonwoo/spring-boot-docker-postgresql"
28 2023-10-10 21:14:57 +0900 JST Normal Pulled Successfully pulled image "wonwoo/spring-boot-docker-postgresql" in 7.339885137s
29 2023-10-10 21:15:33 +0900 JST Normal Created Created container app
30 2023-10-10 21:15:33 +0900 JST Normal Started Started container app
31 2023-10-10 21:15:30 +0900 JST Normal BackOff Back-off pulling image "busybox:1.35-muslaaaa"
32 2023-10-10 21:15:30 +0900 JST Warning Failed Error: ImagePullBackOff
33 2023-10-10 21:15:33 +0900 JST Normal Pulled Successfully pulled image "wonwoo/spring-boot-docker-postgresql" in 2.676377884s
34
35Container app logs (last 15 lines):
36
37 ... 30 more
38Caused 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
39 at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:326)
40 at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200)
41 at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:708)
42 at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:642)
43 at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:464)
44 at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:141)
45 at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:115)
46 at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:102)
47 at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:126)
48 at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139)
49 at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:380)
50 at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:228)
51 ... 35 more
各コンテナの状態と使っているイメージ、コンテナが READY でない場合はその理由などがわかりやすく表示されます。また、起動に失敗して READY になっていないコンテナについては、ログも表示されているので Pod のエラー調査に使いやすそうです。
参考
Share
関連記事
【Kubernetes】ServiceAccountについて理解する
2022.06.11
kubectlでマニフェストのフォーマット検索
2022.03.21
【Kubernetes初めの一歩】リソースざっくりまとめ
2021.10.06
【kube-capacity】現在のNamespaceのみ取得するように設定する
2022.12.11