AIを使ってしたい100のこと

生成AIの可能性と、それを使って自分自身を表現する楽しさを伝えることを目指しています。

OpenShiftで複数のリソースを一括削除する方法【kubectl/ocコマンド活用】

はじめに

OpenShift環境で、一度に複数のリソースを削除しようと、oc delete <リソース名>*とコマンド実行したところ、エラーとなりました。ワイルドカードを利用できないようです。簡単なことですが自分では調べずに、ChatGPTを使って手順を確認することにしました。

プロンプト

KubernetesまたはOpenShiftで、複数のリソースをまとめて削除するためのコマンドを教えてください。

回答

KubernetesやOpenShiftで、複数のリソースをまとめて削除するには、以下のコマンドを使用します。これにより、指定したリソースタイプやラベルに基づいてリソースを削除できます。

1. リソースタイプを指定して複数削除

同じタイプのリソース(例: Pod や Deployment)を一度に削除する場合:

kubectl delete pod <pod-name1> <pod-name2> <pod-name3> # Podを個別に指定して削除
kubectl delete deployment <deployment-name1> <deployment-name2> # Deploymentを個別に指定して削除

2. ファイルでまとめてリソースを削除

リソース定義が書かれたYAMLファイルやディレクトリを使って削除する場合:

kubectl delete -f <path-to-yaml-file> # 単一のYAMLファイルから削除
kubectl delete -f <directory-path> # 複数のYAMLファイルが入ったディレクトリを指定

3. ラベルを使って削除

特定のラベルが付与されたリソースをまとめて削除する方法:

kubectl delete pod -l app=<label-value> # 指定したラベルに基づいてPodを削除
kubectl delete all -l app=<label-value> # 指定したラベルに基づいて全リソースを削除(Pod, Deployment, Serviceなど)

4. OpenShift用の oc コマンド

OpenShiftでは kubectl の代わりに oc コマンドを使用しますが、基本的な操作は同じです:

oc delete pod <pod-name1> <pod-name2> # Podを個別に削除
oc delete all -l app=<label-value> # ラベルに基づいて全リソースを削除

kubectloc はほぼ同じインターフェースを提供しているため、KubernetesのコマンドはそのままOpenShiftでも使用できます。

やってみた感想

  • 「1. リソースタイプを指定して複数削除」、「2. ファイルでまとめてリソースを削除」は知っている方法でした。
  • 私が消したいリソースの数はたくさんあったので、「1. リソースタイプを指定して複数削除」を使うのは難しいと思いました。
  • kubectl delete pod -l app=<label-value> # 指定したラベルに基づいてPodを削除という方法は、いい方法だと思いました。
    • 自分では思いつきませんでした。目からうろこです。
    • この方法で、私が消したいリソースを一度に消すことができそうです。