はじめに
kubectl get pod
でPodのSTATUSがCompleted
になっているPodをフィルタして表示する方法を紹介します。
PodのStatusがCompletedでフィルタ
下記のようにPodのSTATUSカラムがCompleted
になっているPodをフィルタして表示させます。
❯ kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-1 0/1 Completed 0 26m
myapp-2-7bc59c599d-5sjhj 1/1 Running 0 29m
myapp-2-7bc59c599d-fwb5m 1/1 Running 0 29m
myapp-2-7bc59c599d-svbxl 1/1 Running 0 29m
--field-selector
を使って、status.phase
で下記のようにフィルタします。この時のphase
はCompleted
ではなく、Succeeded
になります。
kubectl get pod --field-selector=status.phase=Succeeded
kubectl get pod --field-selector=status.phase!=Succeeded
実際に試してみると、下記のようになります。
❯ kubectl get pod --field-selector=status.phase=Succeeded
NAME READY STATUS RESTARTS AGE
myapp-1 0/1 Completed 0 33m
❯ kubectl get pod --field-selector=status.phase!=Succeeded
NAME READY STATUS RESTARTS AGE
myapp-2-7bc59c599d-5sjhj 1/1 Running 0 37m
myapp-2-7bc59c599d-fwb5m 1/1 Running 0 37m
myapp-2-7bc59c599d-svbxl 1/1 Running 0 37m
kubectl get pod
で表示されるSTATUSカラムはPodのステータスをいい感じに表示してくれているので、STATUSがCompleted
であるPodをフィルタする場合は、status.phase=Succeeded
でフィルタする必要があります。
(おまけ)phaseの確認
下記コマンドでstatus.phase
の値を表示できます。
kubectl get pod -o=custom-columns='NAME:metadata.name,STATUS PHASE:status.phase'
❯ kubectl get pod -o=custom-columns='NAME:metadata.name,STATUS PHASE:status.phase'
NAME STATUS PHASE
myapp-1 Succeeded
myapp-2-7bc59c599d-5sjhj Running
myapp-2-7bc59c599d-fwb5m Running
myapp-2-7bc59c599d-svbxl Running