본문으로 건너뛰기

Day 4 - etcd 장애 복구 가이드

Day 4 - etcd 장애 복구 가이드

목차


1. 증상

issue

원인: 파일 시스템 손상으로 etcd 데이터베이스 파손


2. 진단

# 파일시스템 복구 (initramfs에서)
fsck -y /dev/mapper/ubuntu--vg-ubuntu--lv

# etcd 컨테이너 상태 확인
sudo crictl ps -a | grep etcd

# 로그 확인
sudo crictl logs [컨테이너ID]
# → "panic: assertion failed" 확인

3. 복구 절차

마스터 초기화

sudo kubeadm reset -f
sudo rm -rf /etc/cni/net.d # 네트워크 충돌 방지

sudo kubeadm init \
--pod-network-cidr=192.168.0.0/12 \
--apiserver-advertise-address=172.100.100.10

kubectl 설정

mkdir -p $HOME/.kube
rm -rf $HOME/.kube/config
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

워커 노드 재연결

# 토큰 생성
kubeadm token create --print-join-command

# 워커 초기화 및 재연결
for node in k8s-n1 k8s-n2 k8s-n3; do
ssh $node "sudo kubeadm reset -f"
ssh $node "sudo kubeadm join 172.100.100.10:6443 --token [TOKEN] --discovery-token-ca-cert-hash [HASH]"
done

CNI 설치

curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
kubectl apply -f calico.yaml

kubectl get nodes # Ready 상태 확인

4. 테스트

# nginx 테스트 배포
kubectl apply -f nginx-test.yaml
kubectl get pods -l app=nginx-test

# 정리
kubectl delete -f nginx-test.yaml

관련 문서

그래프 뷰

그래프 데이터 로딩 중…
현재: Day 4 - etcd 장애 복구 가이드
노드 클릭 → 이동 · 드래그 → 위치 조정