k8s 인증서 복구

진웅·2025년 7월 25일

K8S Basics

목록 보기
23/39

워커 노드 인증서가 삭제된 상황이군요. 이는 꽤 심각한 문제이지만 복구 가능합니다. 다음과 같은 단계로 해결할 수 있습니다:

즉시 확인사항

# 워커 노드에서 인증서 상태 확인
ls -la /etc/kubernetes/pki/
ls -la /var/lib/kubelet/pki/

# 워커 노드의 kubelet 상태 확인
systemctl status kubelet
journalctl -u kubelet -f

복구 방법

1. 기존 인증서 완전 정리

# 워커 노드에서 실행
sudo rm -rf /var/lib/kubelet/pki/*
sudo rm -rf /etc/kubernetes/kubelet.conf
sudo rm -rf /etc/kubernetes/bootstrap-kubelet.conf

2. Bootstrap Token 생성 (마스터 노드에서)

# 새로운 bootstrap token 생성
kubeadm token create --ttl=1h

# token 확인
kubeadm token list

# CA cert hash 확인
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

3. 워커 노드 재조인

# 워커 노드에서 실행
sudo kubeadm join <MASTER_IP>:6443 \
  --token <TOKEN> \
  --discovery-token-ca-cert-hash sha256:<HASH>

4. Kubespray 환경에서의 대안

Kubespray로 설치했다면 더 간단하게:

# inventory에서 해당 워커 노드만 다시 실행
ansible-playbook -i inventory/mycluster/hosts.yaml \
  --become --become-user=root \
  cluster.yml \
  --limit=<WORKER_NODE_NAME> \
  --tags=kubelet

추가 점검사항

CSR 승인 확인

# 보류 중인 CSR 확인
kubectl get csr

# 필요시 승인
kubectl certificate approve <CSR_NAME>

방화벽/보안 강화

# 인증서 파일 권한 재설정
sudo chmod 600 /var/lib/kubelet/pki/*
sudo chown root:root /var/lib/kubelet/pki/*

# kubelet 재시작
sudo systemctl restart kubelet

가장 빠른 방법은 kubespray ansible을 다시 실행하는 것입니다. 특정 워커 노드에만 제한해서 실행하면 다른 노드에 영향 없이 복구 가능합

profile
bytebliss

0개의 댓글