OpenShiftで複数リソースを一括削除する方法 | kubectl/ocコマンドによる効率的な削除手順 - APC 技術ブログ

APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

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を削除という方法は、いい方法だと思いました。
    • 自分では思いつきませんでした。目からうろこです。
    • 実際にこの方法で、私が消したいリソースを一度に消すことができました。