kubeadm으로 구성된 Kubernetes 클러스터를 수동으로 완전히 삭제하는 방법을 설명드리겠습니다.
# 노드를 클러스터에서 제거 (drain)
kubectl drain <worker-node-name> --delete-emptydir-data --force --ignore-daemonsets
# kubeadm으로 노드 리셋
sudo kubeadm reset
# iptables 규칙 정리
sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X
# 컨테이너 런타임 정리 (containerd 사용 시)
sudo systemctl stop containerd
sudo rm -rf /var/lib/containerd/*
sudo systemctl start containerd
# 또는 Docker 사용 시
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/*
sudo systemctl start docker
# 노드 목록 확인
kubectl get nodes
# 노드를 클러스터에서 완전히 제거
kubectl delete node <worker-node-name>
# 모든 Pod 삭제
kubectl delete pods --all --all-namespaces
# 모든 네임스페이스 삭제 (default, kube-system 제외하고 싶다면 개별 삭제)
kubectl delete namespace <namespace-name>
# kubeadm으로 마스터 노드 리셋
sudo kubeadm reset
# 확인 메시지가 나오면 'y' 입력
# Kubernetes 설정 파일 삭제
sudo rm -rf /etc/kubernetes/
sudo rm -rf ~/.kube/
sudo rm -rf /var/lib/etcd/
sudo rm -rf /var/lib/kubelet/
sudo rm -rf /var/lib/dockershim/
sudo rm -rf /var/run/kubernetes/
# CNI 설정 정리
sudo rm -rf /etc/cni/net.d/
sudo rm -rf /opt/cni/bin/
# systemd 서비스 정지 및 비활성화
sudo systemctl stop kubelet
sudo systemctl disable kubelet
sudo systemctl stop docker # 또는 containerd
sudo systemctl disable docker # 또는 containerd
# 네트워크 인터페이스 정리
sudo ip link delete cni0 2>/dev/null || true
sudo ip link delete flannel.1 2>/dev/null || true
sudo ip link delete docker0 2>/dev/null || true
# iptables 규칙 완전 초기화
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
sudo iptables -t nat -X
sudo iptables -t mangle -X
# IP 포워딩 설정 원복
sudo sysctl net.ipv4.ip_forward=0
sudo apt-get purge -y kubeadm kubectl kubelet kubernetes-cni
sudo apt-get autoremove -y
sudo apt-get autoclean
# Docker 제거 (필요시)
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io
sudo yum remove -y kubeadm kubectl kubelet kubernetes-cni
sudo yum autoremove -y
# Docker 제거 (필요시)
sudo yum remove -y docker-ce docker-ce-cli containerd.io
# PersistentVolume 데이터 정리 (주의: 데이터 손실)
sudo rm -rf /var/lib/mysql/ # MySQL PV 예시
sudo rm -rf /var/lib/postgresql/ # PostgreSQL PV 예시
# 컨테이너 이미지 정리
sudo docker system prune -af # Docker 사용 시
sudo crictl rmi --prune # containerd 사용 시
# 로그 파일 정리
sudo rm -rf /var/log/containers/
sudo rm -rf /var/log/pods/
# Kubernetes 관련 포트 차단
sudo ufw delete allow 6443/tcp # API server
sudo ufw delete allow 2379:2380/tcp # etcd
sudo ufw delete allow 10250/tcp # kubelet
sudo ufw delete allow 10251/tcp # kube-scheduler
sudo ufw delete allow 10252/tcp # kube-controller-manager
sudo ufw delete allow 30000:32767/tcp # NodePort services
# 또는 iptables로 정리
sudo iptables -D INPUT -p tcp --dport 6443 -j ACCEPT
sudo iptables -D INPUT -p tcp --dport 10250 -j ACCEPT
# 프로세스 확인
ps aux | grep -E "(kube|etcd|docker|containerd)"
# 네트워크 인터페이스 확인
ip link show
# 마운트된 볼륨 확인
mount | grep kubelet
# 시스템 재부팅 (권장)
sudo reboot
이 과정을 통해 kubeadm으로 설치된 Kubernetes 클러스터를 완전히 제거할 수 있습니다.