Jawaban:
Tidak ada perintah untuk melakukan persis apa yang Anda minta.
Inilah beberapa pertandingan dekat.
Anda dapat menghapus semua pod dalam satu namespace dengan perintah ini:
kubectl delete --all pods --namespace=foo
Anda juga dapat menghapus semua penyebaran di namespace yang akan menghapus semua pod yang terpasang dengan penyebaran yang sesuai dengan namespace
kubectl delete --all deployments --namespace=foo
Anda dapat menghapus semua namespace dan setiap objek di setiap namespace (tetapi bukan objek yang tidak di-namespace, seperti node dan beberapa peristiwa) dengan perintah ini:
kubectl delete --all namespaces
Namun, perintah yang terakhir mungkin bukan sesuatu yang ingin Anda lakukan, karena itu akan menghapus hal-hal di namespace sistem kubus, yang akan membuat cluster Anda tidak dapat digunakan.
Perintah ini akan menghapus semua namespace kecuali kube-system, yang mungkin berguna:
for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system);
do
kubectl delete ns $each
done
kubectl delete pods --all --all-namespaces
tampaknya bekerja kadang-kadang (tidak yakin apa yang menyebabkannya bekerja di beberapa lingkungan dan tidak di tempat lain). Ini bekerja dengan baik dari tuan rumah benteng saya tetapi tidak dari laptop. Keduanya menjalankan debian dan keduanya menjalankan versi kubectl yang sama (versi cluster 1.13)
kube-system
namespace. Dalam contoh pesan, saya bisa melihat default
namespace. Apakah kube-system
dihapus dengan perintah yang Anda lampirkan?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
untuk menyingkirkan mereka pengontrol replikasi sial juga.
ing
dapat menghapus ingresses
Anda hanya perlu sed
melakukan ini:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
Menjelaskan:
kubectl get pods --all-namespaces
untuk mendapatkan daftar semua pod di semua ruang nama.--no-headers=true
opsi untuk menyembunyikan header.s
perintah sed
untuk mengambil dua kata pertama, yang mewakili namespace
dan pod's name
masing - masing, kemudian kumpulkan delete
perintah menggunakan mereka.delete
perintah seperti:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
pengubah s
perintah untuk menjalankan perintah yang dirakit di atas, yang akan melakukan delete
pekerjaan yang sebenarnya .Untuk menghindari menghapus pod di kube-system
namespace, hanya perlu menambahkan grep -v kube-system
untuk mengecualikan kube-system
namespace sebelum sed
perintah.
--all-namespaces
jika Anda tidak ingin menghapus pod di kube-system
namespace
Anda cukup berlari
kubectl delete all --all --all-namespaces
Yang pertama all
berarti jenis sumber daya umum (pod, replika, penyebaran, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
Yang kedua --all
berarti memilih semua sumber daya dari jenis yang dipilih
Catatan yang all
tidak termasuk:
Untuk membersihkan dengan sempurna,
Berikut ini adalah satu-liner yang dapat diperpanjang dengan grep untuk memfilter berdasarkan nama.
kubectl get pods -o jsonpath="{.items[*].metadata.name}" | \
tr " " "\n" | \
xargs -i -P 0 kubectl delete pods {}
kubectl delete po,ing,svc,pv,pvc,sc,ep,rc,deploy,replicaset,daemonset --all -A
Jika Anda sudah memiliki pod yang dibuat ulang, pikirkan untuk menghapus semua penyebaran terlebih dahulu
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Cukup ganti NAMSPACE dan DEPLOYMENT dengan yang sesuai, Anda bisa mendapatkan semua informasi penyebaran dengan perintah berikut
kubectl get deployments --all-namespaces
Plugin Kubectl bulk (bulk-action on krew) mungkin berguna bagi Anda, itu memberi Anda operasi massal pada sumber daya yang dipilih. Ini adalah perintah untuk menghapus pod
' kubectl bulk pods -n namespace delete '
Anda dapat memeriksa detailnya di ini
Saya membuat kode python untuk menghapus semua di namespace
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")
lalu
kubectl get all -n kong -o json | python delall.py
K8s sepenuhnya bekerja pada dasar namespace. jika Anda ingin melepaskan semua sumber daya yang terkait dengan namespace yang ditentukan.
Anda dapat menggunakan yang disebutkan di bawah ini:
kubectl menghapus namespace k8sdemo-app