kubectl get podで”Completed”のPodをフィルタリングする
2023.03.04
2024.03.24
Kubernetes
kubectl
はじめに
kubectl get pod
でPodのSTATUSがCompleted
になっているPodをフィルタして表示する方法を紹介します。
PodのStatusがCompletedでフィルタ
下記のようにPodのSTATUSカラムがCompleted
になっているPodをフィルタして表示させます。
1❯ kubectl get pod
2NAME READY STATUS RESTARTS AGE
3myapp-1 0/1 Completed 0 26m
4myapp-2-7bc59c599d-5sjhj 1/1 Running 0 29m
5myapp-2-7bc59c599d-fwb5m 1/1 Running 0 29m
6myapp-2-7bc59c599d-svbxl 1/1 Running 0 29m
--field-selector
を使って、status.phase
で下記のようにフィルタします。この時のphase
はCompleted
ではなく、Succeeded
になります。
1kubectl get pod --field-selector=status.phase=Succeeded
1kubectl get pod --field-selector=status.phase!=Succeeded
実際に試してみると、下記のようになります。
1❯ kubectl get pod --field-selector=status.phase=Succeeded
2NAME READY STATUS RESTARTS AGE
3myapp-1 0/1 Completed 0 33m
4
5❯ kubectl get pod --field-selector=status.phase!=Succeeded
6NAME READY STATUS RESTARTS AGE
7myapp-2-7bc59c599d-5sjhj 1/1 Running 0 37m
8myapp-2-7bc59c599d-fwb5m 1/1 Running 0 37m
9myapp-2-7bc59c599d-svbxl 1/1 Running 0 37m
kubectl get pod
で表示されるSTATUSカラムはPodのステータスをいい感じに表示してくれているので、STATUSがCompleted
であるPodをフィルタする場合は、status.phase=Succeeded
でフィルタする必要があります。
(おまけ)phase
の確認
下記コマンドでstatus.phase
の値を表示できます。
1kubectl get pod -o=custom-columns='NAME:metadata.name,STATUS PHASE:status.phase'
1❯ kubectl get pod -o=custom-columns='NAME:metadata.name,STATUS PHASE:status.phase'
2NAME STATUS PHASE
3myapp-1 Succeeded
4myapp-2-7bc59c599d-5sjhj Running
5myapp-2-7bc59c599d-fwb5m Running
6myapp-2-7bc59c599d-svbxl Running
参考
- Check Kubernetes Pod Status for Completed State - Stack Overflow
- Podのライフサイクル | Kubernetes
- Kubernetes: kubectl 上の Pod のステータス表記について - Qiita
- kubernetes/printers.go at master · kubernetes/kubernetes
Share
関連記事
kubectl patchでリソース更新
2023.01.20
kustomizeでconfigMapGenerator
2022.03.23
【Kubernetes】ローリングアップデートをやってみる
2022.02.19
【Helm】チャートを作成してみる
2021.12.13