티스토리 뷰
Kubernetes 클러스터의 default 네임스페이스에 있는 모든 자원을 삭제하는 과정은 주의가 필요합니다. 실수로 중요한 시스템 자원을 삭제하지 않도록 반드시 현재 네임스페이스와 삭제 대상을 재확인해야 합니다.
과정 개요:
- 현재 네임스페이스 확인: 현재 작업 중인 네임스페이스가 default인지 확인합니다.
- default 네임스페이스 자원 목록 확인: 삭제할 자원들을 미리 확인합니다.
- 자원 삭제: kubectl delete 명령어를 사용하여 자원을 삭제합니다.
- 삭제 확인: 자원이 정상적으로 삭제되었는지 확인합니다.
- (선택) 네임스페이스 삭제 및 재생성: default 네임스페이스 자체를 삭제하고 다시 생성할 수 있습니다. (권장하지 않음)
단계별 명령어와 설명:
1. 현재 네임스페이스 확인:
kubectl config current-context
kubectl config get-contexts <컨텍스트 이름> -o jsonpath='{.namespace}'
# 특정 컨텍스트의 네임스페이스 확인 (컨텍스트 이름은 위 명령어 결과 참조)
현재 컨텍스트의 네임스페이스가 default가 아닌 경우, 다음 명령어로 변경합니다.
kubectl config set-context <컨텍스트 이름> --namespace=default
2. default 네임스페이스 자원 목록 확인:
kubectl get all -n default
이 명령어는 default 네임스페이스에 있는 모든 Pod, Service, Deployment, ReplicaSet 등을 표시합니다. 삭제할 자원들을 확인하고, 필요한 경우 특정 유형의 자원만 확인합니다.
- kubectl get pods -n default (Pod)
- kubectl get services -n default (Service)
- kubectl get deployments -n default (Deployment)
- kubectl get replicaSets -n default (ReplicaSet)
- kubectl get statefulsets -n default (StatefulSet)
- kubectl get daemonSets -n default (DaemonSet)
- kubectl get jobs -n default (Job)
- kubectl get cronjobs -n default (CronJob)
- kubectl get configmaps -n default (ConfigMap)
- kubectl get secrets -n default (Secret)
- kubectl get persistentvolumeclaims -n default (PersistentVolumeClaim, PVC)
- kubectl get endpoints -n default (Endpoints)
- kubectl get ingresses -n default (Ingress)
3. 자원 삭제:
모든 자원을 한 번에 삭제:
kubectl delete all --all -n default
--all 플래그는 모든 리소스 종류를 선택합니다.
특정 자원 유형 삭제:
kubectl delete pods --all -n default # 모든 Pod 삭제
kubectl delete services <서비스 이름> -n default # 특정 서비스 삭제
kubectl delete deployments <디플로이먼트 이름> -n default # 특정 디플로이먼트 삭제
# 다른 리소스 종류에도 동일한 방식 적용
4. 삭제 확인:
kubectl get all -n default
자원이 삭제될 때까지 시간이 걸릴 수 있습니다. kubectl get 명령어를 반복 실행하여 삭제 진행 상황을 확인합니다.
5. (선택, 권장하지 않음) 네임스페이스 삭제 및 재생성:
kubectl delete namespace default
kubectl create namespace default
주의사항:
- default 네임스페이스에는 시스템에서 사용하는 중요한 자원이 있을 수 있으므로, 삭제 전에 반드시 확인해야 합니다.
- kubectl delete 명령어는 기본적으로 graceful termination을 수행합니다. 즉, Pod이 종료될 때까지 기다립니다. 강제 종료하려면 --force 또는 --grace-period=0 옵션을 사용합니다.
- kubectl delete all --all 명령어는 default 네임스페이스의 거의 모든 자원을 삭제하지만, Namespace, Node, PersistentVolume(PV)과 같은 클러스터 범위의 리소스는 삭제하지 않습니다. 이러한 리소스는 별도로 삭제해야 합니다.
자원을 삭제하기 전에 항상 백업을 생성하고, 삭제 작업의 영향을 충분히 이해하고 진행해야 합니다. 특히 운영 환경에서는 더욱 주의해야 합니다.
댓글