はじめに
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> # ラベルに基づいて全リソースを削除
kubectl
とoc
はほぼ同じインターフェースを提供しているため、KubernetesのコマンドはそのままOpenShiftでも使用できます。
やってみた感想
- 「1. リソースタイプを指定して複数削除」、「2. ファイルでまとめてリソースを削除」は知っている方法でした。
- 私が消したいリソースの数はたくさんあったので、「1. リソースタイプを指定して複数削除」を使うのは難しいと思いました。
kubectl delete pod -l app=<label-value> # 指定したラベルに基づいてPodを削除
という方法は、いい方法だと思いました。- 自分では思いつきませんでした。目からうろこです。
- 実際にこの方法で、私が消したいリソースを一度に消すことができました。