0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

kubectlやocコマンドでワイルドカード(アスタリスク*)が使えないけどのなんとかしたい時のレシピ

Last updated at Posted at 2023-09-21

はじめに

kubectlコマンドやocコマンドを使っていて、ワイルドカードを使いたいときのレシピを考えました。
レシピ1,2はpodを例として使っていますが、configmap, pvc, secretなど他のリソースでも応用できます。

レシピ1: シンプルにgrep

kubectl get pod | grep xxx

これは大量のpodが存在しているnamespace上で新しく複数のpodを立ち上げた時などは、kubectl get pod -w | grep xxx とすれば、ステータスが変わるごとに更新されて見やすいです。
出力結果の頭の"NAME READY STATUS RESTARTS AGE” が見えなくなるのですが、それより手軽さを考慮しこちらを採用しました。

ユースケース
  • kubectl get podなどで特定の文字列を含むpodのみを参照したいとき。
  • 本来使いたかったコマンド例
    • kubectl get pod nginx-*
    • kubectl get configMap *-config

レシピ2: 特定のリソースを参照してまとめて削除

kubectl get pod -o=name | grep xxx | tr '\n' ' ' | sed -e 's/pod\///g'
kubectl delete pod <前のコマンドの出力結果>

一気に削除するのが怖いので、一度出力させてそれをコピペで削除した方が安全と考えました。
grepで絞りたい文字列を入れて、trで改行を削除して、sedで不要な文字列を削除して、その出力結果を使って目的のリソースを削除します。

ユースケース
  • kubectl delete podなどでpodをまとめて削除したいが、ワイルドカードが使えなくて困っ他とき。
  • 使いたかったコマンド例
    • kubectl delete po nginx-*
    • kubectl delete cm *-config

レシピ3: 特定のリソースを参照してまとめて削除 その2

kubectl get pv | grep Released | cut -f 1 -d " " | tr '\n' ' ' 
kubectl delete pv <前のコマンドの出力結果>

レシピ2をpv向けに改良したレシピです。pvはpvcと一緒に紐づいているものを削除することがあり、pvcを削除後STATUSが"Released"となっているものだけ削除したい場合などこのレシピが有効と思いました。
Releasedなどでgrepをかけ、cutでpvのNAMEだけ抜き出し、trで改行を消して、その出力結果を使って目的のリソースを削除します。

ユースケース
  • リソースのNAMEではなくSTATUSで絞り、対象のSTATUSのリソースを削除したいとき。

以上です。
今後も思いつき次第、レシピを作って更新します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?