如何快速刪除 K8s 所有 Namespace 下資源


嗨,大家好!今天我們要來談談如何在 Kubernetes (簡稱 K8s) 中快速刪除所有 Namespace 下的資源。這個過程可能看起來很複雜,但其實只要掌握了技巧,就能快速完成。而且,我們會用輕鬆的口吻,讓你在愉快的氣氛中學會這項技能。

為什麼要刪除所有 Namespace 下的資源?

在 Kubernetes 中,Namespace 是用來隔離資源和配置的一種方法。有時候,我們會需要清空所有 Namespace 下的資源,比如在測試環境中重置所有應用,或是清理開發環境。這時候,快速刪除所有資源就變得非常重要。

準備工作

在開始之前,你需要確保以下幾點:

  1. 已安裝並配置好 kubectl
  2. 有權限操作 Kubernetes 集群。

如果這些都沒問題,那我們就開始吧!

刪除所有 Namespace 下的資源腳本

我們將使用一個簡單的 Bash 腳本來完成這項工作。這個腳本會遍歷所有的 Namespace,並刪除其中的所有資源。以下是腳本的內容:

#!/bin/bash

# 取得所有 Namespace
namespaces=$(kubectl get namespaces --no-headers -o custom-columns=:metadata.name)

# 迴圈遍歷每個 Namespace 並刪除所有資源
for ns in $namespaces; do
  echo "正在刪除 Namespace: $ns 中的所有資源..."
  
  # 刪除 Namespace 中的所有資源
  kubectl delete all --all --namespace=$ns
  
  # 刪除 ConfigMaps
  kubectl delete configmap --all --namespace=$ns
  
  # 刪除 Secrets
  kubectl delete secret --all --namespace=$ns
  
  # 刪除 PersistentVolumeClaims
  kubectl delete pvc --all --namespace=$ns
  
  # 刪除 ServiceAccounts
  kubectl delete serviceaccount --all --namespace=$ns
  
  # 刪除 DaemonSets
  kubectl delete daemonset --all --namespace=$ns
  
  # 刪除 StatefulSets
  kubectl delete statefulset --all --namespace=$ns
  
  # 刪除 Jobs
  kubectl delete job --all --namespace=$ns
  
  # 刪除 CronJobs
  kubectl delete cronjob --all --namespace=$ns
done

如何使用這個腳本?

  1. 將上述腳本內容保存為 delete-all-resources.sh

  2. 給予腳本執行權限:

    chmod +x delete-all-resources.sh
    
  3. 執行腳本:

    ./delete-all-resources.sh
    

這樣,腳本就會自動刪除所有 Namespace 中的資源了!

各資源刪除細節

我們來看看這個腳本是如何刪除每個資源的:

  • 所有資源 (all):包括 Pods、Services、Deployments、ReplicaSets 等。
  • ConfigMaps:存儲配置信息的資源。
  • Secrets:存儲敏感信息的資源,如密碼、OAuth tokens 等。
  • PersistentVolumeClaims (PVCs):請求持久化存儲的資源。
  • ServiceAccounts:用於標識應用程序或服務的資源。
  • DaemonSets:確保所有或某些節點上運行一個 Pod 副本的資源。
  • StatefulSets:管理有狀態應用的資源。
  • Jobs:一次性執行任務的資源。
  • CronJobs:定時執行任務的資源。

使用範例

假設我們的 Kubernetes 集群中有以下幾個 Namespace:

Namespace
default
kube-system
kube-public
my-namespace-1
my-namespace-2

執行腳本後,my-namespace-1my-namespace-2 中的所有資源都會被刪除,但 defaultkube-systemkube-public 這些系統 Namespace 則會保留。

注意事項

  1. 謹慎操作:這個腳本會刪除所有資源,請確保你真的需要這麼做,並且備份好重要數據。
  2. 權限:確保你有足夠的權限操作所有命名空間,否則會出現權限不足的錯誤。
  3. 驗證:腳本執行完畢後,請再次檢查各命名空間中的資源是否已經被正確刪除。

總結

通過這個簡單的腳本,我們可以快速地清空 Kubernetes 中所有命名空間的資源,這對於測試和開發環境的維護非常有幫助。希望這篇文章能幫助你更好地管理 Kubernetes 集群,如果你有任何問題或建議,歡迎在下方留言與我們分享!

記得關注我們的部落格,獲取更多 Kubernetes 和 DevOps 的技巧和教學喔!


Happy Kubernetes-ing! 🚀