k8s 안전하게 shutdown하기

🔴클러스터 종료 순서 (Graceful Shutdown)

1단계: 워커 노드 준비

# 워커 노드에서 새로운 파드 스케줄링 차단
kubectl cordon worker-node-1

# 실행 중인 파드들을 다른 노드로 이동 (현재는 마스터만 있으므로 graceful 종료)
kubectl drain worker-node-1 --ignore-daemonsets --delete-emptydir-data --force

2단계: 워커 노드 종료

 워커 노드에서 실행
sudo systemctl stop kubelet
sudo systemctl stop containerd  # 또는 docker
sudo shutdown -h now

3단계: 마스터 노드 종료

# 마스터 노드에서 실행
sudo systemctl stop kubelet
sudo systemctl stop etcd  # etcd가 별도 서비스로 실행 중인 경우
sudo systemctl stop containerd
sudo shutdown -h now

🟢클러스터 재시작 순서 (Startup)

1단계: 마스터 노드 먼저 시작

bash
# 마스터 노드 부팅 후
sudo systemctl start containerd
sudo systemctl start etcd  # 필요한 경우
sudo systemctl start kubelet

# 마스터 노드 상태 확인
kubectl get nodes
kubectl get pods -n kube-system

2단계: 워커 노드 시작

# 워커 노드 부팅 후
sudo systemctl start containerd
sudo systemctl start kubelet

3단계: 클러스터 상태 복구

# 워커 노드 스케줄링 재개
kubectl uncordon worker-node-1

# 전체 클러스터 상태 확인
kubectl get nodes
kubectl get pods --all-namespaces

etcd 복구가 필요한 경우

# etcd 상태 확인
sudo etcdctl endpoint health
sudo etcdctl endpoint status

# 필요시 etcd 데이터 복구 (백업이 있는 경우)
sudo etcdctl snapshot restore /path/to/backup.db