web-dev-qa-db-ja.com

すべてのkubernetesネームスペースにあるすべてのpodを削除するためのコマンド

ドキュメントを見ると、 'a'ポッドを削除するためのAPI呼び出しがありますが、すべてのネームスペース内のすべてのポッドを削除する方法はありますか?

86
user_mda

あなたが求めたことを正確に実行するためのコマンドはありません。

ここにいくつかのよく似た試合があります。

このコマンドを使用して、単一のネームスペース内のすべてのポッドを削除できます。

kubectl delete --all pods --namespace=foo

このコマンドを使用すると、すべてのネームスペース、およびすべてのネームスペース内のすべてのオブジェクトを削除できます(ただし、ノードや一部のイベントなど、名前空間のないオブジェクトは削除できません)。

kubectl delete --all namespaces

ただし、後者のコマンドはkube-system名前空間のものを削除するため、おそらくあなたがやりたいことではないでしょう。

このコマンドは、kube-systemを除くすべてのネームスペースを削除します。これは便利です。

for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
  kubectl delete ns $each
done
152
Eric Tune
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all

厄介なレプリケーションコントローラもそれらを取り除くために。

43
jason

これを行うにはsedが必要です。

kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'

説明します。

  1. すべてのネームスペース内のすべてのポッドのリストを取得するには、コマンドkubectl get pods --all-namespacesを使用します。
  2. ヘッダを隠すには--no-headers=trueオプションを使います。
  3. ssedコマンドを使用して、それぞれnamespacepod's nameを表す最初の2ワードを取り出し、それらを使用してdeleteコマンドをアセンブルします。
  4. 最後のdeleteコマンドはkubectl --namespace kube-system delete pod heapster-eq3ywのようなものです。
  5. eコマンドのs修飾子を使用して、上記のコマンドを実行します。これにより、実際のdeleteが機能します。

kube-system名前空間のポッドが削除されないようにするには、sedコマンドの前にgrep -v kube-system名前空間を除外するためにkube-systemを追加する必要があります。

11
Weike

Kubectlバルク(krewに対するバルクアクション)プラグインはあなたにとって役に立つかもしれません、それはあなたに選択されたリソースの一括操作を与えます。これはポッドを削除するためのコマンドです

 ' kubectl bulk pods -n namespace delete '

詳細は this で確認できます

0
Emre Odabaş

これはgrepで拡張して名前でフィルタリングできるワンライナーです。

kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
0
Claudio Fahey
kubectl delete pods --all

それは至る所のすべてのポッドを削除します。

同じことが、サービス、配置、構成マップ、およびジョブにも当てはまります。

0
David Hunsicker

再作成されたポッドが既にある場合は、最初にすべての配置を削除することを検討してください。

kubectl delete -n *NAMESPACE deployment *DEPLOYMENT

NAMSPACEとDEPLOYMENTを対応するものに置き換えるだけで、次のコマンドですべてのデプロイメント情報を取得できます。

kubectl get deployments --all-namespaces
0
Smaillns

名前空間のすべてを削除するpythonコードを作成します

delall.py

import json,sys,os;

obj=json.load(sys.stdin);
for item in obj["items"]:
        os.system("kubectl delete " + item["kind"] + "/" +item["metadata"]["name"] + " -n yournamespace")

その後

kubectl get all -n kong -o json | python delall.py
0
user2218085