Khi xem xét các tài liệu, có một lệnh gọi API để xóa 'nhóm', nhưng có cách nào để giết tất cả các nhóm trong tất cả các không gian tên không?
Khi xem xét các tài liệu, có một lệnh gọi API để xóa 'nhóm', nhưng có cách nào để giết tất cả các nhóm trong tất cả các không gian tên không?
Câu trả lời:
Không có lệnh để làm chính xác những gì bạn yêu cầu.
Dưới đây là một số trận đấu gần.
Bạn có thể xóa tất cả các nhóm trong một không gian tên duy nhất bằng lệnh này:
kubectl delete --all pods --namespace=foo
Bạn cũng có thể xóa tất cả các triển khai trong không gian tên sẽ xóa tất cả các nhóm được đính kèm với các triển khai tương ứng với không gian tên
kubectl delete --all deployments --namespace=foo
Bạn có thể xóa tất cả các không gian tên và mọi đối tượng trong mọi không gian tên (nhưng không phải các đối tượng không được đặt tên, như các nút và một số sự kiện) bằng lệnh này:
kubectl delete --all namespaces
Tuy nhiên, lệnh sau có lẽ không phải là thứ bạn muốn làm, vì nó sẽ xóa mọi thứ trong không gian tên hệ thống kube, điều này sẽ làm cho cụm của bạn không thể sử dụng được.
Lệnh này sẽ xóa tất cả các không gian tên ngoại trừ kube-system, có thể hữu ích:
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đôi khi dường như hoạt động (không chắc chắn điều gì khiến nó hoạt động trong một số môi trường và không phải trong những môi trường khác). Nó hoạt động tốt từ máy chủ pháo đài của tôi nhưng không phải từ máy tính xách tay. Cả chạy debian và cả hai đều chạy cùng một phiên bản kubectl (phiên bản cụm 1.13)
kube-systemkhông gian tên. Trong ví dụ tin nhắn, tôi có thể thấy defaultkhông gian tên. Được kube-systemxóa với lệnh bạn đã đính kèm?
kubectl delete daemonsets,replicasets,services,deployments,pods,rc --all
để loại bỏ chúng bộ điều khiển nhân rộng pesky quá.
ingđể xóa các nội dung
Bạn chỉ cần sedlàm điều này:
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e'
Giải thích:
kubectl get pods --all-namespacesđể có được danh sách tất cả các nhóm trong tất cả các không gian tên.--no-headers=truetùy chọn để ẩn các tiêu đề.slệnh của sedđể tìm nạp hai từ đầu tiên, đại diện namespacevà pod's nametương ứng, sau đó lắp ráp deletelệnh bằng cách sử dụng chúng.deletelệnh cuối cùng giống như :
kubectl --namespace kube-system delete pod heapster-eq3yw.esửa đổi slệnh để thực thi lệnh được lắp ráp ở trên, sẽ thực hiện các deletecông việc thực tế .Để tránh xóa các nhóm trong kube-systemkhông gian tên, chỉ cần thêm grep -v kube-systemđể loại trừ kube-systemkhông gian tên trước sedlệnh.
--all-namespacesnếu bạn không muốn xóa các nhóm trong kube-systemkhông gian tên
Bạn chỉ có thể chạy
kubectl delete all --all --all-namespaces
Đầu tiên allcó nghĩa là các loại tài nguyên phổ biến (nhóm, bản sao, triển khai, ...)
kubectl get all == kubectl get pods,rs,deployments, ...Thứ hai --allcó nghĩa là chọn tất cả các tài nguyên của các loại đã chọn
Lưu ý rằng allkhông bao gồm:
Để làm sạch hoàn hảo,
Đây là một lớp lót có thể được mở rộng bằng grep để lọc theo tên.
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
Nếu bạn đã có các nhóm được tạo lại, hãy nghĩ đến việc xóa tất cả các triển khai trước
kubectl delete -n *NAMESPACE deployment *DEPLOYMENT
Chỉ cần thay thế NAMSPACE và TIỀN GỬI thành các ứng dụng tương ứng, bạn có thể nhận được tất cả thông tin triển khai bằng lệnh sau
kubectl get deployments --all-namespaces
Plugin Kubectl số lượng lớn (hành động hàng loạt trên krew) có thể hữu ích cho bạn, nó cung cấp cho bạn các hoạt động hàng loạt trên các tài nguyên được chọn. Đây là lệnh để xóa pod
' kubectl bulk pods -n namespace delete '
Bạn có thể kiểm tra chi tiết trong này
Tôi tạo một mã python để xóa tất cả trong không gian tên
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")
và sau đó
kubectl get all -n kong -o json | python delall.py
K8 hoàn toàn hoạt động trên nền tảng của không gian tên. nếu bạn muốn phát hành tất cả các tài nguyên liên quan đến không gian tên được chỉ định.
bạn có thể sử dụng các đề cập dưới đây:
kubectl xóa không gian tên k8sdemo-app