如何快速刪除 K8s 所有 Namespace 下資源
嗨,大家好!今天我們要來談談如何在 Kubernetes (簡稱 K8s) 中快速刪除所有 Namespace 下的資源。這個過程可能看起來很複雜,但其實只要掌握了技巧,就能快速完成。而且,我們會用輕鬆的口吻,讓你在愉快的氣氛中學會這項技能。
為什麼要刪除所有 Namespace 下的資源?
在 Kubernetes 中,Namespace 是用來隔離資源和配置的一種方法。有時候,我們會需要清空所有 Namespace 下的資源,比如在測試環境中重置所有應用,或是清理開發環境。這時候,快速刪除所有資源就變得非常重要。
準備工作
在開始之前,你需要確保以下幾點:
- 已安裝並配置好
kubectl
。 - 有權限操作 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
如何使用這個腳本?
將上述腳本內容保存為
delete-all-resources.sh
。給予腳本執行權限:
chmod +x delete-all-resources.sh
執行腳本:
./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-1
和 my-namespace-2
中的所有資源都會被刪除,但 default
、kube-system
和 kube-public
這些系統 Namespace 則會保留。
注意事項
- 謹慎操作:這個腳本會刪除所有資源,請確保你真的需要這麼做,並且備份好重要數據。
- 權限:確保你有足夠的權限操作所有命名空間,否則會出現權限不足的錯誤。
- 驗證:腳本執行完畢後,請再次檢查各命名空間中的資源是否已經被正確刪除。
總結
通過這個簡單的腳本,我們可以快速地清空 Kubernetes 中所有命名空間的資源,這對於測試和開發環境的維護非常有幫助。希望這篇文章能幫助你更好地管理 Kubernetes 集群,如果你有任何問題或建議,歡迎在下方留言與我們分享!
記得關注我們的部落格,獲取更多 Kubernetes 和 DevOps 的技巧和教學喔!
Happy Kubernetes-ing! 🚀