指定の文字列を含む Kubernetes Pod を一括 Delete する
kubectl delete pod
コマンドで、複数の Pod を一括削除したい場合、
$ kubectl get pod myapp-xxxxxx myapp-yyyyyy
…のように記述する。ココで -xxxxxx
や -yyyyyy
部分はランダムな文字列になっていて、Pod が再生成される度に変化する。
こうした Pod 群を一括削除したい時に、ランダムな文字列部分を都度指定するのは面倒だ。そこで、次のようなコマンドで、myapp
を含む Pod を一括削除してみる。
$ kubectl delete pod $(kubectl get pod --no-headers -o custom-columns=":metadata.name" | grep myapp | tr -s '\n' ' ')
↑ 先に結論。コレで myapp
を含む Pod を一括削除できる。
コマンド置換の中を一つずつ見ていく。
$ kubectl get pod --no-headers -o custom-columns=":metadata.name"
コレで、Pod 名のみの一覧を表示する。
次に grep myapp
部分で、myapp
部分を含む Pod 名のみに絞り込む。コレだけ実行すると次のような出力になる。
$ kubectl get pod --no-headers -o custom-columns=":metadata.name" | grep myapp
myapp-xxxxxx
myapp-yyyyyy
最後に tr -s '\n' ' '
で、改行をスペースに変換する。
$ kubectl get pod --no-headers -o custom-columns=":metadata.name" | grep myapp | tr -s '\n' ' '
myapp-xxxxxx myapp-yyyyyy
ココまで出来たら、コマンド置換で kubectl delete pod
の後ろにコイツをくっつけてやるだけ。おしまい。