Kubernetes - 3개 사무실 위치에 HA 분산 설정

Kubernetes - 3개 사무실 위치에 HA 분산 설정

3개의 사무실 위치에 걸쳐 3개의 제어 플레인, 3개의 작업자 노드 클러스터를 사용하여 사내 온프레미스 스택 HA Kubernetes를 확장하고 싶습니다. 따라서 각 제어 평면과 1명의 작업자가 각 사무실에 있게 됩니다. 각 제어 평면에는 자체 고정 IP가 있습니다.

사무실 1에 정전이 발생한 경우 로드 밸런서(metallb를 사용하고 있음)가 어떻게 작업을 수행할 수 있는지 이해하는 데 어려움을 겪고 있습니다. 트래픽이 사무실 2와 3으로 어떻게 리디렉션되나요?

예를 들어 office-1-node에서 실행되는 nextcloud에 액세스하는 외부, 공용, 사용자는 office-1-node 고정 IP와 연결된 fqdn cloud.company.com을 사용할 수 있습니다. (nextcloud는 office-2-node 또는 office-3-node의 작업자 또는 마스터에서 실행될 수도 있지만 사용자에 관한 한 문제가 되지 않습니다.)

office-1-node에 정전이 발생한 경우 cloud.company.com을 office-2-node 또는 office-3-node의 고정 IP로 연결하는 방법은 무엇입니까?

아직 배우는 중이므로 답변하실 때 이 점을 염두에 두시기 바랍니다.

답변1

Metal LB가 배치된 것을 볼 수 있었습니다(https://metallb.universe.tf/installation/) 컨트롤러(IP 할당을 처리) 및 데몬셋(구성 요소 - 스피커 -> 이것은 외부 알림을 다음과 같이 처리하는 것 같습니다.https://metallb.universe.tf/concepts/). 따라서 이 LB는 기본적으로 Kubernetes 리소스로 배포됩니다.

이제 질문에 답해 보겠습니다. office-1-node가 중단되면 다른 노드의 daemonset에 있는 포드는 필요에 따라 작동하고(외부 알림을 수행하고 서비스에 도달할 수 있도록 설정) 다른 마스터 노드의 컨트롤러는 계속해서 IP 할당을 처리합니다.

자원:

  1. 쿠버네티스 컨트롤러https://kubernetes.io/docs/concepts/architecture/controller/
  2. Kubernetes 데몬셋https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
  3. Kubernetes Metallb 매니페스트 -https://github.com/metallb/metallb/blob/main/manifests/metallb.yaml

편집: 두 번째 댓글의 질문에 답변합니다. 먼저 도메인 이름(godaddy, bigrock, AWS Route53 등)을 구입해야 합니다. 두 번째로 해당 도메인 이름이 로드 밸런서의 IP(선택적으로 포트 사용)를 가리키도록 CNAME을 만듭니다(귀하의 경우 가동 시간을 보장하기 위해 office-1,2,3의 IP를 라운드 로빈 방식으로 사용할 수 있습니다). 이 라운드 로빈 방식을 호출합니다.DNS 로드 밸런싱. 아니면 구현할 수 있습니다DNS 장애 조치로드 밸런서에서 상태 확인을 구현하여 AWS Route53에서와 같이. 완료되면 외부 사용자는 계속해서 kubernetes의 서비스(office-2 및 3에서)에 액세스할 수 있습니다.

관련 정보