- Đăng vào
Xử lý khi xóa Resource mà bị treo ở Terminating
Trong quá trình làm việc với Kubernetes chắc chắn có lúc chúng ta sẽ gặp phải tình trạng xóa resource mà nó cứ bị treo mãi ở bước Terminating. Thì dưới dây là một số cách xử lý khá đơn giản
Namespace
Thông thường khi deploy test thì chúng ta sẽ tạo 1 namespace riếng, khi cần xóa thì thông thường là chạy lệnh kubectl delete ns <test-namespace>
Nếu nó cứ treo miết thì khả năng cao là đang bị dừng lại ở bước Terminating thì chúng ta có thể thử chạy đoạn này xem:
kubectl get namespace <test-namespace> -o json \
| tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
| kubectl replace --raw /api/v1/namespaces/<test-namespace>/finalize -f -
Resource bất kỳ
kubectl patch <loai-resource>/<ten-resource> --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
Ví dụ: bạn delete configmap có tên mymap mà đang bị Terminating thì có thể chạy
kubectl patch configmap/mymap \
--type json \
--patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]'
ArgoCD
Một số lúc mình deploy app sử dụng ArgoCD, khi xóa cũng bị xoay miết thì chúng ta cần:
- Xóa cái namespace mà bạn deploy cái app:
kubectl delete ns <test-namespace>
, nếu chẳng may nó vẫn bị treo ở bước Terminating thì có thể xử lý như ở trên. - Cuổi cùng thử đoạn mã dưới đây.
kubectl patch application/<ypur-app-name> --type json --patch='[ { "op": "remove", "path": "/metadata/finalizers" } ]' -n argocd
Nếu deploy ArgoCD ở namespace khác thì phải sửa lại cho đúng namespace khi chạy lệnh ở trên
Chúc thành công,
ANH NGUYỄN