k8s のダッシュボードを使ってると Pods などをみるにはすごく便利なんだけど,
異常終了したジョブが延々と残っていて,不要だから削除したいなと思ったのがきっかけです.
自分が調べたところでは, kubectl のコマンドに該当するものがなかったので,参考になれば幸いです.
(適切なやり方をご存知の方はコメントに記述して頂けるとめちゃめちゃ嬉しいです )
kubernetes dashboard
ご存知の方も多いかと思うのですが,
k8s のダッシュボードは
kubectl proxy
で localhost で表示することができます.
ダッシュボードには, namespace や deployment, service, pods, replicasets など k8s クラスタで実行しているものは全て見ることができます.
詳しくは,
kubernetes dash board(英語)
kubernetes 環境構築
が参考になるかと...
WebUIについて
ダッシュボードの画面は
こんな感じになるんですが,
Pods のエリアに異常終了したジョブも表示されます.
問題点
一回実行されて異常終了する分には画面から削除すればいいのですが,
replica set などで異常終了して自動的に再実行された場合は,異常終了した Pods が簡単に百数十件とかになるわけです.
そうなると画面から削除するのはあまりにもつらすぎるので,コマンドを使って一括削除しました.
解決方法
cli の kubectl
と awk
使って一括削除します.
namespace
が default
,あるいは指定し忘れて Pods
や Deployment
を create
, apply
した場合は,
$ kubectl get pods -a | grep "Error" | awk '{print $1}' | xargs kubectl delete pods
namespace
を明示的に指定する場合は,
$ NAME_SPACE=<your_namespace>
$ kubectl get pods --namespace=${NAME_SPACE} -a | grep "Error" | awk '{print $1}' | xargs kubectl delete pods --namespace=${NAME_SPACE}
でできます.
NAME_SPACE
の値は適宜変えてください.