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-namespacestampaknya 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-systemnamespace. Dalam contoh pesan, saya bisa melihat defaultnamespace. Apakah kube-systemdihapus dengan perintah yang Anda lampirkan?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
untuk menyingkirkan mereka pengontrol replikasi sial juga.
ingdapat menghapus ingresses
Anda hanya perlu sedmelakukan 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-namespacesuntuk mendapatkan daftar semua pod di semua ruang nama.--no-headers=trueopsi untuk menyembunyikan header.sperintah seduntuk mengambil dua kata pertama, yang mewakili namespacedan pod's namemasing - masing, kemudian kumpulkan deleteperintah menggunakan mereka.deleteperintah seperti:
kubectl --namespace kube-system delete pod heapster-eq3yw.epengubah sperintah untuk menjalankan perintah yang dirakit di atas, yang akan melakukan deletepekerjaan yang sebenarnya .Untuk menghindari menghapus pod di kube-systemnamespace, hanya perlu menambahkan grep -v kube-systemuntuk mengecualikan kube-systemnamespace sebelum sedperintah.
--all-namespacesjika Anda tidak ingin menghapus pod di kube-systemnamespace
Anda cukup berlari
kubectl delete all --all --all-namespaces
Yang pertama allberarti jenis sumber daya umum (pod, replika, penyebaran, ...)
kubectl get all == kubectl get pods,rs,deployments, ...Yang kedua --allberarti memilih semua sumber daya dari jenis yang dipilih
Catatan yang alltidak 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