Tech

HA kubernetes cluster 구성 프로젝트 4

hongcoder 2025. 9. 8. 09:27

마지막으로 이제 지난번에 만든 외부 로드벨런서를 기존 클러스터에 붙이는 작업을 하겠씀.

이전글:

 

HA kubernetes cluster 구성 프로젝트 3

이전글: HA kubernetes cluster 구성 프로젝트 2이전글: HA kubernetes cluster 구성 프로젝트 1사내에서 쿠버환경을 구축해서 개발 어플리케이션 배포 & PoC 어플리케이션 배포 용으로 사용중이다. (사내에 서

hongveloper.tistory.com

 

지난 과정 정리

  • 두 개 LB 노드(lb01, lb02)에 haproxy + keepalived 설치.
  • keepalived에서 VIP 192.168.3.20 설정 → 마스터/백업 노드 중 하나가 VIP를 보유.
  • haproxy에서 API 서버 두 노드(192.168.3.15, 192.168.3.18)의 6443 포트를 TCP LB로 묶음.

기존 클러스터에 로드벨런서 붙이기

  • 기존 kubeadm-config에는 controlPlaneEndpoint: 192.168.3.15:6443.
  • 이를 VIP로 변경: controlPlaneEndpoint: "192.168.3.20:6443"
  • 동시에 apiServer.certSANs에 VIP를 추가
apiServer:
  certSANs:
    - 127.0.0.1
    - 10.96.0.1
    - 192.168.3.15
    - 192.168.3.18
    - 192.168.3.20
    - kubernetes
    - kubernetes.default
    - kubernetes.default.svc
    - kubernetes.default.svc.cluster.local

 

apiserver 인증서 재발급

기존 인증서에는 VIP가 없어서 에러 발생 → 재발급 필요함

절차:

  1. /etc/kubernetes/pki/apiserver.crt와 apiserver.key 백업 후 삭제.
  2. 최소 ClusterConfiguration YAML(/tmp/cc.yaml)을 작성 (VIP SAN 포함).
  3. 새 인증서 생성:
sudo kubeadm init phase certs apiserver --config=/tmp/cc.yaml
sudo systemctl restart kubelet

 

  • openssl s_client -connect 192.168.3.15:6443 및 -connect 192.168.3.20:6443 로 SAN 확인 → 192.168.3.20 포함됨.
  • 모든 ControlPlane 노드(192.168.3.15, 192.168.3.18)에 동일하게 적용.

kubeconfig VIP로 변경

kubeconfig(~/.kube/config, /etc/kubernetes/admin.conf, /etc/kubernetes/kubelet.conf)

모두 server: https://192.168.3.20:6443 로 변경

kubectl config set-cluster kubernetes --server=https://192.168.3.20:6443

 

최종확인

  • kubectl cluster-info → VIP(192.168.3.20)로 표시.
  • kubectl get nodes → 모든 노드 Ready.
  • openssl s_client -connect 192.168.3.20:6443 → SAN에 192.168.3.20 존재 확인.

이렇게 해서 클러스터를 VIP 기반 controlPlaneEndpoint(192.168.3.20:6443) 으로 무중단 전환 완료.

 

끝ㅌ


본 글에서 사용된 이미지와 예제는 이해를 돕기 위한 것이며, 실제 환경과 다를 수 있음.

또한 일부 내용에는 오타나 정보의 불완전함이 있을 수 있으니, 반드시 공식 문서 및 최신 자료를 참고하시기 바람.

AI 창작물이 아님.