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-system
không gian tên. Trong ví dụ tin nhắn, tôi có thể thấy default
không gian tên. Được kube-system
xó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 sed
là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=true
tùy chọn để ẩn các tiêu đề.s
lệnh của sed
để tìm nạp hai từ đầu tiên, đại diện namespace
và pod's name
tương ứng, sau đó lắp ráp delete
lệnh bằng cách sử dụng chúng.delete
lệnh cuối cùng giống như :
kubectl --namespace kube-system delete pod heapster-eq3yw
.e
sửa đổi s
lệnh để thực thi lệnh được lắp ráp ở trên, sẽ thực hiện các delete
công việc thực tế .Để tránh xóa các nhóm trong kube-system
không gian tên, chỉ cần thêm grep -v kube-system
để loại trừ kube-system
không gian tên trước sed
lệnh.
--all-namespaces
nếu bạn không muốn xóa các nhóm trong kube-system
không gian tên
Bạn chỉ có thể chạy
kubectl delete all --all --all-namespaces
Đầu tiên all
có 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 --all
có 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 all
khô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