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-namespaces
bazen ç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-system
isim alanında. İleti örneğinde, default
ad alanını görebiliyorum . Is kube-system
Ekli olan komutuyla silinen?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
onlardan da sinir bozucu çoğaltma denetleyicilerinden kurtulmak için.
ing
de silme yaptığı giriş için
Bunu sed
yapmanı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-namespaces
tüm ad alanlarındaki tüm kapsüllerin listesini almak için command komutunu kullanın.--no-headers=true
başlıklarını gizleme seçeneği.s
komutu sed
temsil ilk iki kelime, almak için namespace
ve pod's name
daha sonra sırasıyla montedelete
bunları kullanarak komutu.delete
komut gibi bulun:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
değiştiricisini kullanın .s
delete
Ad kube-system
alanındaki bölmeleri silmeyi önlemek grep -v kube-system
için kube-system
, sed
komuttan önce ad alanını hariç tutmak için eklemeniz yeterlidir .
--all-namespaces
kube-system
Sadece koşabilirsin
kubectl delete all --all --all-namespaces
Birincisi all
ortak kaynak türleri (kapsüller, kopyalar, dağıtımlar, ...)
kubectl get all == kubectl get pods,rs,deployments, ...
İkinci --all
yol, seçilen türlerin tüm kaynaklarını seçmek için
Aşağıdakileri all
iç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