k8s
k8s cluster default namespace 자원 삭제
자바바라
2025. 3. 10. 19:55
Kubernetes 클러스터의 default 네임스페이스에 있는 리소스를 삭제하는 과정은 신중하게 접근해야 합니다. default 네임스페이스는 사용자가 명시적으로 네임스페이스를 지정하지 않았을 때 기본적으로 사용되는 공간이기 때문에, 의도치 않게 중요한 리소스를 삭제할 위험이 있습니다.
주의:
- 삭제 전 반드시 백업: 삭제 작업 전에는 반드시 중요한 데이터를 백업해야 합니다.
- 영향 범위 확인: default 네임스페이스에 어떤 리소스가 있는지, 삭제 시 어떤 영향을 미치는지 충분히 검토해야 합니다. 프로덕션 환경이라면 더욱 신중해야 합니다.
- 불필요한 리소스만: 꼭 필요한 리소스는 삭제하지 않도록 주의합니다.
삭제 과정 개요 및 단계별 명령어:
- default 네임스페이스의 리소스 목록 확인:
- 어떤 리소스가 있는지 확인하여 삭제할 대상을 정확히 파악합니다.
- 명령어: kubectl get all -n defult
이 명령어는 네임스페이스가 지정된 모든 리소스 종류를 가져와서 각 종류별로 default 네임스페이스의 리소스 목록을 출력함.
# 또는 좀 더 자세하게 보려면 kubectl api-resources --namespaced=true | awk '{print $1}' | xargs -I {} sh -c 'echo "===== {} ====="; kubectl get {} -n default --no-headers'
- (선택 사항) 특정 종류의 리소스 목록 확인:
- 특정 종류(예: deployments, services)의 리소스만 확인하려면:
kubectl get deployments -n default # Deployments 확인 kubectl get services -n default # Services 확인 kubectl get pods -n default # Pods 확인
- 특정 종류(예: deployments, services)의 리소스만 확인하려면:
- 리소스 삭제:
- 개별 리소스 삭제:
- 특정 리소스를 삭제하려면 kubectl delete 명령어와 리소스 종류, 이름을 지정합니다.
kubectl delete deployment <deployment-name> -n default kubectl delete service <service-name> -n default kubectl delete pod <pod-name> -n default
- deployment, service, pod 등은 삭제할 리소스 종류에 맞게 변경합니다.
- <deployment-name>, <service-name>, <pod-name> 등은 삭제할 리소스의 실제 이름으로 변경합니다.
- 특정 리소스를 삭제하려면 kubectl delete 명령어와 리소스 종류, 이름을 지정합니다.
- 레이블(Label)을 사용하여 여러 리소스 삭제:
- 동일한 레이블을 가진 여러 리소스를 한 번에 삭제할 수 있습니다.app=my-app 레이블을 가진 모든 리소스를 삭제합니다. all 대신 특정 리소스 종류(e.g., deployments, pods)를 지정할 수도 있습니다.
kubectl delete all -l app=my-app -n default
- 동일한 레이블을 가진 여러 리소스를 한 번에 삭제할 수 있습니다.app=my-app 레이블을 가진 모든 리소스를 삭제합니다. all 대신 특정 리소스 종류(e.g., deployments, pods)를 지정할 수도 있습니다.
- default 네임스페이스의 모든 리소스 삭제 (매우 주의!):
- 다음 명령어는 default 네임스페이스의 모든 리소스를 삭제합니다. 매우 주의해서 사용해야 합니다.또는default 네임스페이스를 삭제 하고 다시 생성. 이 방법은 default namespace에 설정된 기본값들(limit range, resource quota 등)도 함께 초기화됨.
kubectl delete namespace default kubectl create namespace default
kubectl delete all --all -n default
- 다음 명령어는 default 네임스페이스의 모든 리소스를 삭제합니다. 매우 주의해서 사용해야 합니다.또는default 네임스페이스를 삭제 하고 다시 생성. 이 방법은 default namespace에 설정된 기본값들(limit range, resource quota 등)도 함께 초기화됨.
- 개별 리소스 삭제:
- 삭제 확인:
- 삭제 명령 실행 후, 리소스 목록을 다시 확인하여 의도한 대로 삭제되었는지 확인합니다.
kubectl get all -n default
- 삭제 명령 실행 후, 리소스 목록을 다시 확인하여 의도한 대로 삭제되었는지 확인합니다.
예시 시나리오 (Deployment와 Service 삭제):
- default 네임스페이스에 my-app-deployment라는 Deployment와 my-app-service라는 Service가 있다고 가정합니다.
- 현재 리소스 확인:
kubectl get all -n default
- Deployment 삭제:
kubectl delete deployment my-app-deployment -n default
- Service 삭제:
kubectl delete service my-app-service -n default
- 삭제 결과 확인:my-app-deployment와 my-app-service가 목록에 없어야 합니다.
kubectl get all -n default
스크립트 (주의해서 사용):
#!/bin/bash
# default 네임스페이스 설정
NAMESPACE=default
# 삭제할 리소스 종류 (필요에 따라 수정)
RESOURCES="deployments services pods"
# 리소스 삭제 함수
delete_resources() {
local resource_type=$1
echo "Deleting $resource_type in namespace $NAMESPACE..."
kubectl delete $resource_type --all -n $NAMESPACE
# 또는, 특정 레이블을 사용하려면:
# kubectl delete $resource_type -l app=my-app -n $NAMESPACE
}
# 각 리소스 종류별로 삭제 함수 호출
for resource in $RESOURCES; do
delete_resources $resource
done
echo "Deletion complete. Please verify."
이 스크립트는 deployments, services, pods를 default 네임스페이스에서 모두 삭제합니다. RESOURCES 변수를 수정하여 삭제할 리소스 종류를 변경할 수 있습니다. 반드시 삭제 전 백업하고, 신중하게 사용하세요.
다시 한번 강조하지만, default 네임스페이스의 리소스를 삭제하는 것은 신중하게 진행해야 하며, 프로덕션 환경에서는 더욱 주의가 필요합니다. 삭제 전에 반드시 백업하고, 영향 범위를 충분히 검토하세요.