💡 핵심 요약 (Executive Summary)
본 가이드는 namespace 삭제되지 않는 경우 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
📑 Table of Contents
Reference & Guidelines (NOTE)
v1.33.5+k3s1 버전에서 기존 테스트결과와 다른 점 확인.
- 기존의
.spec.finalizers = []로 효용이 없음 - 해당 방식으로 정상삭제 확인
.metadata.finalizers = []
PUT API요청으로 namespace 삭제
bash
#jq 패키지 설치 및 IP/Port 확인
yum install jq
kubectl proxy & #8001
ns=cert-manager
#yaml 파일로 적용할 temp.json 파일 생성
kubectl get namespace $ns -o json |jq '.spec = {"finalizers":[]}' > temp.json
#수정사항 반영
curl -k -H "Content-Type: application/json" -X PUT --data-binary @temp.json http://127.0.0.1:8001/api/v1/namespaces/$ns/finalize
rm temp.json
loop
Terminating 조회하여 루프 실행
bash
kubectl proxy & #8001
for ns in $(kubectl get ns --no-headers | awk '/Terminating/ {print $1}'); do
echo "Force deleting namespace: $ns"
# 네임스페이스 JSON을 가져와 finalizers 제거
kubectl get namespace "$ns" -o json \
| jq 'del(.spec.finalizers)' > temp.json
# curl PUT으로 finalize API 호출 (kube-apiserver 프록시 사용)
curl -k -H "Content-Type: application/json" \
-X PUT --data-binary @temp.json \
http://127.0.0.1:8001/api/v1/namespaces/"$ns"/finalize
rm temp.json
done
kuectl patch
bash
#metadata
for ns in $(kubectl get ns --no-headers | awk '/Terminating/ {print $1}'); do
echo "Force deleting namespace: $ns"
kubectl patch ns $ns --type='merge' -p='{"metadata": {"finalizers": []}}'
done
Leave a Reply