Yanıtlar:
Tam olarak sorduğunuz şeyi yapmak için bir komut yoktur.
İşte bazı yakın eşleşmeler.
Bu komutla tek bir ad alanındaki tüm bölmeleri silebilirsiniz:
kubectl delete --all pods --namespace=foo
Ayrıca ad alanındaki tüm dağıtımları, ad alanına karşılık gelen dağıtımlarla bağlı tüm bölmeleri silebilirsiniz
kubectl delete --all deployments --namespace=foo
Bu komutla tüm ad alanlarını ve her ad alanındaki her nesneyi (düğümler ve bazı olaylar gibi adsız nesneler değil) silebilirsiniz:
kubectl delete --all namespaces
Ancak, son komut muhtemelen yapmak istediğiniz bir şey değildir, çünkü kube sistemi ad alanındaki bazı şeyleri siler, bu da kümenizi kullanılamaz hale getirir.
Bu komut yararlı olabilecek kube-system dışındaki tüm ad alanlarını siler:
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-namespacesbazen çalışıyor gibi görünüyor (bazı ortamlarda çalışmasına neyin neden olduğundan emin değilim). Benim burç ev sahibi iyi çalışır ama laptop değil. Hem debian çalışıyor hem de kubectl'in aynı sürümünü çalıştırıyor (küme sürümü 1.13)
kube-systemisim alanında. İleti örneğinde, defaultad alanını görebiliyorum . Is kube-systemEkli olan komutuyla silinen?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
onlardan da sinir bozucu çoğaltma denetleyicilerinden kurtulmak için.
ingde silme yaptığı giriş için
Bunu sedyapmanız yeterlidir :
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
açıklar:
kubectl get pods --all-namespacestüm ad alanlarındaki tüm kapsüllerin listesini almak için command komutunu kullanın.--no-headers=truebaşlıklarını gizleme seçeneği.skomutu sedtemsil ilk iki kelime, almak için namespaceve pod's namedaha sonra sırasıyla montedelete bunları kullanarak komutu.deletekomut gibi bulun:
kubectl --namespace kube-system delete pod heapster-eq3yw.edeğiştiricisini kullanın .sdeleteAd kube-systemalanındaki bölmeleri silmeyi önlemek grep -v kube-systemiçin kube-system, sedkomuttan önce ad alanını hariç tutmak için eklemeniz yeterlidir .
--all-namespaceskube-system
Sadece koşabilirsin
kubectl delete all --all --all-namespaces
Birincisi allortak kaynak türleri (kapsüller, kopyalar, dağıtımlar, ...)
kubectl get all == kubectl get pods,rs,deployments, ...İkinci --allyol, seçilen türlerin tüm kaynaklarını seçmek için
Aşağıdakileri alliçermediğini unutmayın :
Mükemmel temizlik için,
İşte isme göre filtrelemek için grep ile genişletilebilen bir astar.
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
Zaten yeniden oluşturulan bölmeleriniz varsa, önce tüm dağıtımları silmeyi düşünün
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Sadece NAMSPACE ve DEPLOYMENT'ı karşılık gelenlere değiştirin, tüm dağıtım bilgilerini aşağıdaki komutla alabilirsiniz
kubectl get deployments --all-namespaces
Kubectl toplu (mürettebat üzerinde toplu eylem) eklentisi sizin için yararlı olabilir, seçilen kaynaklar üzerinde toplu işlemler sağlar. Bu bölmeleri silme komutudur
' kubectl bulk pods -n namespace delete '
Sen ayrıntıları kontrol edebilir bu
Ad alanındaki tüm öğeleri silmek için bir python kodu oluşturuyorum
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")
ve sonra
kubectl get all -n kong -o json | python delall.py
K8s tamamen ad alanının temeli üzerinde çalışır. belirtilen ad alanıyla ilgili tüm kaynakları serbest bırakmak istiyorsanız.
aşağıda belirtilenleri kullanabilirsiniz:
kubectl ad alanını sil k8sdemo-app