EKS Default Namespace 삭제 시 장애 대응 가이드
1. 개요 (TL;DR)
EKS 클러스터에서 default namespace를 삭제하면 Control Plane에 대한 모든 접근이 차단됩니다. kubectl 명령어가 작동하지 않으며, Velero나 etcd 백업으로도 복구할 수 없습니다. Default Namespace는 삭제가 불가능하도록 관리해야하는 클러스터의 핵심 리소스입니다. 따라서 Admission Controller 혹은 다른 접근 통제 매커니즘을 활용하여 신중 하게 관리하는 것을 강력하게 권장합니다.
- 장애 원인:
defaultnamespace 삭제 시kubernetesService가 함께 삭제됨 - 영향 범위: API Server 접근 불가 → 클러스터 전체 관리 불가 → (장기화시)서비스 장애 유발
- 복구 방법: AWS Support 케이스 오픈 필수 (Severity: Critical)
AWS Support에 Critical 케이스를 오픈하고, Account Team과 WWSO Specialist를 티켓에 참조로 추가하여 신속한 복구를 요청하세요.
2. 장애 원인 분석
2.1 Default Namespace의 역할
default namespace는 단순히 사용자 워크로드를 배포하는 기본 공간이 아닙니다. Kubernetes 클러스터의 핵심 리소스들이 이 namespace에 존재합니다.
default namespace에 포함된 핵심 리소스:
kubernetes Service는 클러스터 내부에서 API Server에 접근하기 위한 유일한 경로입니다. 이 Service가 삭제되면 모든 Kubernetes 컴포넌트가 Control Plane과 통신할 수 없게 됩니다.
2.2 장애 발생 메커니즘
default namespace 삭제 시 발생하는 연쇄적인 장애 과정을 다이어그램으로 살펴보겠습니다.
장애 발생 순서:
- namespace 삭제 명령 실행:
kubectl delete namespace default - Cascading 삭제: namespace 내 모든 리소스가 함께 삭제됨
- kubernetes Service 삭제: API Server endpoint가 사라짐
- 연결 단절: 클러스터 내부 컴포넌트들이 API Server와 통신 불가
- 관리 불가 상태: 어떤 kubectl 명령어도 실행할 수 없음
워커 노드에 미치는 영향
API Server endpoint가 사라진 상태가 지속되면 워커 노드에도 연쇄적인 영향이 발생합니다.
시간에 따른 노드 상태 변화:
이 상황에서는 Control Plane 자체에 접근이 불가능하기 때문에, Node Controller도 실제로 노드 상태를 업데이트하거나 taint를 추가하는 작업을 수행할 수 없습니다. 결과적으로 클러스터 전체가 "frozen" 상태에 빠지게 되며, 기존에 실행 중인 Pod들은 계속 동작하지만 새로운 스케줄링이나 상태 변경은 불가능합니다.
Frozen 상태에서의 서비스 영향
클러스터가 frozen 상태에 빠지면 기 존 워크로드는 일정 시간 동안 계속 동작하지만, 시간이 경과할수록 서비스에 심각한 영향이 발생합니다.
즉시 영향받는 부분:
- ❌ 새로운 Pod 스케줄링 불가
- ❌ Pod 재시작/재배포 불가
- ❌ ConfigMap, Secret 변경 반영 불가
- ❌ HPA(Horizontal Pod Autoscaler) 스케일링 불가
시간 경과에 따른 서비스 영향:
- DNS 캐시가 만료되거나 TLS 인증서 만료시 서비스 디스커버리 실패로 인한 통신 불가
- Pod가 OOMKilled 되거나 crash 되면 재시작 불가
- 노드가 장애나면 해당 노드의 모든 워크로드 손실
- ALB/NLB Target Group 업데이트 불가로 트래픽 라우팅 실패
시간이 지날수록 장애 범위가 확대되므로, 가능한 빨리 AWS Support에 연락하는 것이 중요합니다.