yeonghoon.kim

  • 게시판
  • 갤러리

복구 런북 초반 누락 사항 정리

김영훈 2026.06.17 12:25 조회 수 : 15

복구 런북을 기준으로 클러스터를 다시 밀어보면서 초반에 빠진 부분들을 메모함.

문서만 볼 때는 괜찮아 보였는데, 실제로 VM을 지우고 다시 만들면서 보이는 것들이 있었음.

먼저 VM 정리 쪽.

기존 VM을 삭제하고 다시 만들 때 VM 디렉터리나 libvirt 쪽 잔여물이 남을 수 있음.

수동으로 하나씩 지우기보다 정리 스크립트가 필요해 보였음.

# libvirt VM 목록을 확인한다.
virsh list --all
# VM 디스크 볼륨이 남아 있는지 확인한다.
virsh vol-list --pool <pool-name>

SSH known_hosts 문제도 있었음.

VM을 같은 IP로 다시 만들면 SSH host key가 바뀌어서 중간자 공격 경고가 뜰 수 있음.

테스트 환경에서는 같은 IP에 새 VM을 계속 붙이니까 known_hosts 정리 절차가 필요함.

# 기존 SSH host key 기록을 확인한다.
ssh-keygen -F 192.168.200.42
# 재생성한 VM의 기존 host key 기록을 제거한다.
ssh-keygen -R 192.168.200.42

LB 서버 쪽도 빠진 부분이 보임.

문서에는 커널 파라미터 확인은 있었는데, 실제 적용 절차가 부족했음.

특히 HAProxy와 keepalived를 쓰려면 LB 서버의 네트워크 설정이 맞아야 함.

# LB 서버의 커널 파라미터를 확인한다.
sysctl net.ipv4.ip_nonlocal_bind
sysctl net.ipv4.ip_forward

필요한 설정은 문서에 명확히 넣어야 함.

net.ipv4.ip_nonlocal_bind=1
net.ipv4.ip_forward=1

LB 서버도 Ansible playbook으로 관리하는 쪽이 맞아 보였음.

초기에는 일부 작업을 수동으로 했는데, 재구축을 반복하려면 LB도 자동화 대상에 넣는 게 편함.

HAProxy 재구동도 playbook으로 정상 처리되지 않는 상황이 있었음.

결국 수동으로 재구동함.

# HAProxy 상태를 확인한다.
sudo systemctl status haproxy
# HAProxy를 수동으로 재시작한다.
sudo systemctl restart haproxy
# HAProxy가 정상 기동했는지 확인한다.
sudo systemctl status haproxy

control-plane join 명령도 따로 메모함.

# k8s-cp2를 control-plane 노드로 join한다.
sudo kubeadm join 192.168.200.48:6443 \
  --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash> \
  --control-plane \
  --certificate-key <certificate-key>

worker join 형식도 같이 정리.

# worker 노드를 클러스터에 join한다.
sudo kubeadm join 192.168.200.48:6443 \
  --token <token> \
  --discovery-token-ca-cert-hash sha256:<hash>

containerd registry 설정도 귀찮은 부분이 있었음.

/etc/containerd/config.toml에서 config_path를 맞추고, /etc/containerd/certs.d 아래 registry 설정을 넣는 흐름.

이건 나중에 GitLab에 도메인과 HTTPS를 붙이는 방향으로 정리하는 게 낫다고 봄.

# containerd 설정에서 registry config_path를 확인한다.
grep -n "config_path" /etc/containerd/config.toml

초반 복구 런북은 너무 요약하면 실제 복구 때 의미가 떨어짐.

한 번에 보기 좋은 요약도 필요하지만, 재구축할 때는 빠진 명령이나 조건이 있으면 바로 막힘.


  • 추천 0

  • 비추천 0
이 게시물을
목록

댓글 0

번호 제목 글쓴이 날짜 조회 수
19 DGX Kubernetes 구성 계획 김영훈 2026.06.08 25
18 Kubernetes 기본 클러스터, ingress-nginx 설치 김영훈 2026.06.09 15
17 Docker Compose 서비스를 Kubernetes로 이전(깃랩 도커 저장소 필요) [2] 김영훈 2026.06.10 20
16 yeonghoon.kim 배포 파일을 Helm Chart로 전환 [1] 김영훈 2026.06.12 18
15 SOPS age로 Kubernetes Secret 암복호화 김영훈 2026.06.15 23
14 ArgoCD와 GitOps 구조 준비 김영훈 2026.06.16 16
13 CoreDNS로 GitLab Registry 내부 주소 고정 김영훈 2026.06.17 19
» 복구 런북 초반 누락 사항 정리 김영훈 2026.06.17 15
11 SOPS Secret 복구와 ArgoCD root Application 적용 김영훈 2026.06.18 28
10 관측 스택과 앱 배포 저장소 구조 정리 김영훈 2026.06.19 23
9 ArgoCD 복구 중 GitLab 접근 문제 정리 김영훈 2026.06.22 26
8 ImagePullBackOff와 registry pull secret 누락 김영훈 2026.06.22 17
7 worker 재부팅 전 drain 절차 정리 김영훈 2026.06.26 20
6 control-plane 장애 시나리오 관찰 김영훈 2026.06.27 12
5 OutOfSync와 Degraded 구분하기 김영훈 2026.06.28 25
4 Git revert는 기록을 지우는 게 아니라 되돌리는 기록을 남기는 것 김영훈 2026.06.29 19
3 Stateful과 Stateless 구분해보기 김영훈 2026.07.02 23
2 GitLab Registry PAT 만료로 이미지 Pull 실패 김영훈 2026.07.08 14
1 yeonghoon.kim php 업그레이드 김영훈 2026.07.09 0
쓰기 태그
 첫 페이지 8 9 10 11 12 13 14 15 16 17 끝 페이지