เมื่อดูที่เอกสารมีการเรียก API เพื่อลบ 'a' pod แต่มีวิธีฆ่าพ็อดทั้งหมดในเนมสเปซทั้งหมดหรือไม่
เมื่อดูที่เอกสารมีการเรียก API เพื่อลบ 'a' pod แต่มีวิธีฆ่าพ็อดทั้งหมดในเนมสเปซทั้งหมดหรือไม่
คำตอบ:
ไม่มีคำสั่งให้ทำสิ่งที่คุณถาม
นี่คือการแข่งขันที่ใกล้เคียง
คุณสามารถลบพ็อดทั้งหมดในเนมสเปซเดียวด้วยคำสั่งนี้:
kubectl delete --all pods --namespace=foo
คุณยังสามารถลบการปรับใช้ทั้งหมดในเนมสเปซซึ่งจะลบพ็อดทั้งหมดที่แนบกับการปรับใช้ที่สอดคล้องกับเนมสเปซ
kubectl delete --all deployments --namespace=foo
คุณสามารถลบเนมสเปซทั้งหมดและทุกวัตถุในทุกเนมสเปซ (แต่ไม่ใช่วัตถุที่ไม่มีเนมสเปซเช่นโหนดและบางเหตุการณ์) ด้วยคำสั่งนี้:
kubectl delete --all namespaces
อย่างไรก็ตามคำสั่งหลังอาจไม่ใช่สิ่งที่คุณต้องการเนื่องจากจะลบสิ่งต่าง ๆ ในเนมสเปซระบบ kube ซึ่งจะทำให้คลัสเตอร์ของคุณไม่สามารถใช้งานได้
คำสั่งนี้จะลบเนมสเปซทั้งหมดยกเว้น kube-system ซึ่งอาจมีประโยชน์:
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
ดูเหมือนว่าจะทำงานได้ในบางครั้ง (ไม่แน่ใจว่าอะไรทำให้มันทำงานในบางสภาพแวดล้อมและไม่ทำงานในที่อื่น) มันทำงานได้ดีจากโฮสต์ป้อมปราการของฉัน แต่ไม่ได้มาจากแล็ปท็อป ทั้งเดเบียนที่รันอยู่และทั้งคู่กำลังรันเวอร์ชันเดียวกันของ kubectl (เวอร์ชันคลัสเตอร์ 1.13)
kube-system
เนมสเปซ ในตัวอย่างข้อความฉันเห็นdefault
เนมสเปซ จะถูกkube-system
ลบออกไปด้วยคำสั่งที่คุณได้แนบ?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
เพื่อกำจัดพวกเขาควบคุมการจำลองแบบที่น่ารำคาญเกินไป
ing
ลบ ingresses ด้วย
คุณเพียงแค่ต้องsed
ทำสิ่งนี้:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
อธิบายว่า:
kubectl get pods --all-namespaces
เพื่อรับรายการพ็อดทั้งหมดในเนมสเปซทั้งหมด--no-headers=true
ตัวเลือกเพื่อซ่อนส่วนหัวs
คำสั่งของsed
เพื่อดึงคำสองคำแรกซึ่งเป็นตัวแทนnamespace
และpod's name
ตามลำดับจากนั้นรวบรวมdelete
คำสั่งโดยใช้คำเหล่านั้นdelete
คำสั่งสุดท้ายก็เหมือนกับ:
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
ฟายเออร์ของs
คำสั่งเพื่อดำเนินการคำสั่งที่รวมไว้ข้างต้นซึ่งจะdelete
ทำงานจริงหากต้องการหลีกเลี่ยงการลบพ็อดในkube-system
เนมสเปซเพียงแค่ต้องเพิ่มgrep -v kube-system
เพื่อยกเว้นkube-system
เนมสเปซก่อนsed
คำสั่ง
--all-namespaces
หากคุณไม่ต้องการลบkube-system
คุณสามารถเรียกใช้
kubectl delete all --all --all-namespaces
สิ่งแรกall
หมายถึงชนิดทรัพยากรทั่วไป (พ็อดชุดจำลองการปรับใช้ ... )
kubectl get all == kubectl get pods,rs,deployments, ...
ประการที่สอง--all
หมายถึงการเลือกทรัพยากรทั้งหมดของชนิดที่เลือก
โปรดทราบว่าall
ไม่รวม:
เพื่อทำความสะอาดอย่างสมบูรณ์แบบ
นี่คือหนึ่งซับที่สามารถขยายได้ด้วย grep เพื่อกรองตามชื่อ
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
หากคุณมีพ็อดที่สร้างขึ้นใหม่อยู่แล้วให้คิดว่าจะลบการปรับใช้ทั้งหมดก่อน
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
เพียงแค่แทนที่ NAMSPACE และ DEPLOYMENT ให้เป็นอันที่สอดคล้องกันคุณสามารถรับข้อมูลการปรับใช้ทั้งหมดโดยใช้คำสั่งต่อไปนี้
kubectl get deployments --all-namespaces
ปลั๊กอิน Kubectl (การดำเนินการเป็นกลุ่มกับ krew) อาจมีประโยชน์สำหรับคุณซึ่งจะให้การดำเนินการเป็นกลุ่มกับทรัพยากรที่เลือก นี่คือคำสั่งสำหรับการลบพ็อด
' kubectl bulk pods -n namespace delete '
คุณสามารถตรวจสอบรายละเอียดในสิ่งนี้
ฉันสร้างรหัสหลามเพื่อลบทั้งหมดในเนมสเปซ
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
K8s ทำงานอย่างสมบูรณ์บนพื้นฐานของเนมสเปซ หากคุณต้องการปล่อยทรัพยากรทั้งหมดที่เกี่ยวข้องกับเนมสเปซที่ระบุ
คุณสามารถใช้ที่กล่าวถึงด้านล่าง:
kubectl ลบเนมสเปซ k8sdemo-app