2015-11-03 96 views

回答

44

沒有命令來完成你所要求的。

這裏有一些密切的匹配。

您可以刪除所有艙體在單一命名空間中使用此命令:

kubectl delete --all pods --namespace=foo 

您可以刪除每個命名空間中的所有命名空間,每一個對象(但不包括未命名空間中的物體,如節點和一些事件)用這個命令:

kubectl delete --all namespaces 

然而,後者的命令可能不是你想要做的事,因爲它會刪除KUBE-系統命名空間的東西,這將使你的羣集無法使用。

此命令將刪除除KUBE-系統中的所有命名空間,這可能是有用的:

for each in $(kubectl get ns -o jsonpath="{.items[*].metadata.name}" | grep -v kube-system); 
do 
    kubectl delete ns $each 
done 
+2

「」{.items [*]。metadata.name}「 - 此答案中有雙引號...請檢查並編輯 – kumar

+0

修復了報價 –

5

你只需要sed做到這一點:

kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(\S+)\s+(\S+).*/kubectl --namespace \1 delete pod \2/e' 

解釋說:

  1. 使用命令kubectl get pods --all-namespaces獲取所有命名空間中所有窗格的列表。
  2. 使用--no-headers=true選項可隱藏標題。
  3. 使用指令sed取前兩個字,分別代表namespacepod's name,然後使用它們組裝delete命令。
  4. 最終delete命令就像: kubectl --namespace kube-system delete pod heapster-eq3yw
  5. 使用e修飾符s命令來執行上面彙編的命令,這將做實際的delete工作。

爲了避免kube-system命名空間中刪除豆莢,只需要添加grep -v kube-systemsed命令之前排除kube-system命名空間。

+0

您也可以放棄'--all-namespaces '如果你不想刪除'kube-system'命名空間中的pod – ianstarz

相關問題