k8s 삭제

진웅·2025년 7월 3일

K8S Basics

목록 보기
16/39

kubeadm으로 구성된 Kubernetes 클러스터를 수동으로 완전히 삭제하는 방법을 설명드리겠습니다.

1. Worker 노드 삭제

Worker 노드에서 실행

# 노드를 클러스터에서 제거 (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

Master 노드에서 Worker 노드 제거

# 노드 목록 확인
kubectl get nodes

# 노드를 클러스터에서 완전히 제거
kubectl delete node <worker-node-name>

2. Master 노드 삭제

Master 노드에서 실행

# 모든 Pod 삭제
kubectl delete pods --all --all-namespaces

# 모든 네임스페이스 삭제 (default, kube-system 제외하고 싶다면 개별 삭제)
kubectl delete namespace <namespace-name>

# kubeadm으로 마스터 노드 리셋
sudo kubeadm reset

# 확인 메시지가 나오면 'y' 입력

3. 완전한 정리 작업

모든 노드에서 실행

# 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

4. 패키지 제거 (선택사항)

Ubuntu/Debian

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

CentOS/RHEL

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

5. 스토리지 정리

# 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/

6. 방화벽 포트 정리

# 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

7. 확인 및 재부팅

# 프로세스 확인
ps aux | grep -E "(kube|etcd|docker|containerd)"

# 네트워크 인터페이스 확인
ip link show

# 마운트된 볼륨 확인
mount | grep kubelet

# 시스템 재부팅 (권장)
sudo reboot

주의사항

  1. 데이터 백업: 중요한 데이터는 미리 백업하세요
  2. 순서 준수: Worker 노드부터 삭제 후 Master 노드 삭제
  3. 서비스 확인: 다른 애플리케이션이 영향받지 않는지 확인
  4. 방화벽 규칙: 필요한 포트가 차단되지 않도록 주의
  5. 재부팅 권장: 완전한 정리를 위해 재부팅 수행

이 과정을 통해 kubeadm으로 설치된 Kubernetes 클러스터를 완전히 제거할 수 있습니다.

profile
bytebliss

0개의 댓글