kubectl get podで”Completed”のPodをフィルタリングする

スポンサーリンク

はじめに

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で下記のようにフィルタします。この時のphaseCompletedではなく、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

参考

タイトルとURLをコピーしました