수동 부하 분산 모드 사용 설정

GKE On-Prem 클러스터는 '통합' 및 '수동'의 두 가지 부하 분산 모드 중 하나로 실행할 수 있습니다. 통합 모드를 사용하면 GKE On-Prem 클러스터가 F5 BIG-IP 부하 분산기로 실행됩니다. 수동 모드에서는 다른 부하 분산기를 수동으로 구성합니다. 예를 들어 Citrix 부하 분산기 또는 시소 부하 분산기를 수동으로 구성할 수 있습니다.

수동 부하 분산 모드는 통합 모드보다 더 많은 구성을 필요로 합니다. 이 페이지에서는 수동 모드에서 수행해야 하는 단계를 설명합니다.

제한사항

수동 부하 분산을 사용하면 다음과 같은 제한사항이 있습니다.

  • DHCP를 사용하여 IP 주소를 클러스터 노드에 할당할 수 없습니다. 정적 노드 IP 주소를 할당해야 합니다.

  • LoadBalancer 유형의 서비스를 클러스터 외부의 클라이언트에 노출할 수 없습니다. 그러나 NodePort 유형의 서비스를 만들고 수동으로 부하 분산기를 구성하여 백엔드로 사용할 수 있습니다. Ingress 객체를 사용하여 서비스를 노출할 수도 있습니다.

  • 클러스터 노드를 추가하거나 삭제하는 경우 부하 분산기를 수동으로 구성해야 합니다.

수동 부하 분산 지원 받기 정보

Google은 수동 부하 분산 모드를 사용하여 구성된 부하 분산기를 지원하지 않습니다. 부하 분산기에 문제가 발생하면 부하 분산기 공급업체에 문의하세요.

IP 주소 예약

생성한 각 클러스터에는 노드라고 하는 3개 이상의 VM이 있습니다. 만들려는 클러스터의 각 노드에 IP 주소를 예약합니다. 예를 들어 4개의 노드가 있는 관리자 클러스터와 3개의 노드가 있는 사용자 클러스터를 만들려면 노드에 7개의 IP 주소를 예약합니다. 모든 노드 IP 주소를 라우팅할 수 있도록 라우터를 구성합니다.

부하 분산을 위해 다음 VIP를 예약해야 합니다.

  • 관리자 제어 영역 VIP(포트 노출: TCP 443)
  • 관리 클러스터 인그레스 컨트롤러 VIP(포트 노출: TCP 80, TCP 443)
  • 부가기능 관리자 VIP(포트 노출: TCP 8443)
  • 사용자 제어 영역 VIP(포트 노출: TCP 443)
  • 사용자 클러스터 인그레스 컨트롤러(포트 노출: TCP 80, TCP 443)

노드 포트 예약

GKE On-Prem은 NodePort 타입의 Kubernetes 서비스 객체를 사용하여 트래픽을 Pod로 라우팅합니다.

서비스에는 ServicePort 객체 배열인 ports 필드가 있습니다. NodePort 유형의 서비스에서 각 ServicePort 객체에는 protocol, port, nodePort, targetPort가 있습니다. 예를 들어 다음은 ports 배열에 두 개의 ServicePort 객체가 있는 서비스의 매니페스트의 일부입니다.

...
kind: Service
...
spec:
  ...
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    nodePort: 32676
    targetPort: 8080
  - protocol: TCP
    port: 443
    nodePort: 32677
    targetPort: 443
...

앞의 서비스가 사용자 클러스터의 인그레스 컨트롤러를 나타냅니다. 또한 다음과 같이 선택했다고 가정해 보겠습니다.

  • 203.0.113.5는 사용자 클러스터 인그레스 컨트롤러의 VIP입니다.
  • 사용자 클러스터의 노드 주소는 192.168.0.10, 192.168.0.11, 192.168.0.12입니다.

부하 분산기를 구성하면 트래픽이 다음과 같이 라우팅됩니다.

  • 클라이언트가 TCP 포트 80의 203.0.113.5로 요청을 전송합니다. 부하 분산기는 사용자 클러스터 노드를 선택합니다. 이 예시에서는 노드 주소가 192.168.0.11이라고 가정합니다. 부하 분산기는 TCP 포트 32676의 192.168.0.11로 요청을 전달합니다. 노드의 iptables 규칙은 TCP 포트 8080의 해당 pod로 요청을 전송합니다.

  • 클라이언트가 TCP 포트 443의 203.0.113.5로 요청을 전송합니다. 부하 분산기는 사용자 클러스터 노드를 선택합니다. 이 예시에서는 노드 주소가 192.168.0.10이라고 가정합니다. 부하 분산기는 TCP 포트 32677의 192.168.0.10로 요청을 전달합니다. 노드의 iptables 규칙은 TCP 포트 443의 적절한 Pod로 요청을 전송합니다.

VIP를 위한 서비스 객체를 생성할 필요는 없습니다. GKE On-Prem이 이를 수행합니다. 하지만 각 VIP 및 TCP 포트 쌍에 대해 다음을 선택하고 지정해야 합니다.

  • 노드 IP 주소 조합
  • nodePort

nodePort 값 7개를 예약해야 합니다.

  • 관리 클러스터 제어 영역인 TCP 포트 443을 위한 nodePort
  • 관리 클러스터 인그레스 컨트롤러인 TCP 포트 80을 위한 nodePort
  • 관리 클러스터 인그레스 컨트롤러인 TCP 포트 443을 위한 nodePort
  • 부가기능 관리자인 TCP 포트 8443을 위한 nodePort
  • 사용자 제어 영역인 TCP 포트 80을 위한 nodePort
  • 사용자 클러스터 인그레스 컨트롤러인 TCP 포트 80을 위한 nodePort
  • 사용자 클러스터 인그레스 컨트롤러인 TCP 포트 443을 위한 nodePort

GKE On-Prem 구성 파일 수정

GKE On-Prem을 설치하면 구성 파일이 생성됩니다. 구성 파일에서 다음 섹션을 수정해야 합니다.

  • lbmodeManual로 설정합니다.

  • admincluster:ipblockfilepath를 관리자 클러스터의 고정 IP YAML 파일 경로로 설정합니다. 자세한 내용은 고정 IP 구성을 참조하세요. DHCP는 Manual 모드의 옵션이 아닙니다.

  • usercluster: ipblockfilepath를 사용자 클러스터의 고정 IP YAML 파일 경로로 설정합니다.

  • admincluster:manuallbspec 필드를 관리자 클러스터에 선택한 nodePort 값으로 업데이트합니다.

  • usercluster:manuallbspec 섹션을 사용자 클러스터에 선택한 nodePort 값으로 업데이트합니다.

다음은 업데이트된 구성 파일의 일부를 보여주는 예시입니다.

lbmode: Manual

admincluster:
  ipblockfilepath: "ipblock1.yaml"
  manuallbspec:
    ingresshttpnodeport: 32527
    ingresshttpsnodeport: 30139
    controlplanenodeport: 30968
    addonsnodeport: 31405

usercluster:
  ipblockfilepath: "env/default/ipblock2.yaml"
  manuallbspec:
    ingresshttpnodeport: 30243
    ingresshttpsnodeport: 30879
    controlplanenodeport: 30562

부하 분산기 구성

이제 구성 파일을 업데이트했으므로 부하 분산기의 관리 콘솔에 로그인하고 VIP를 구성합니다.

먼저 관리 클러스터와 사용자 클러스터의 IP 주소 풀이 서로 다른지 확인합니다.

앞에서 설명한 것처럼 5개의 VIP와 7개의 포트를 구성해야 합니다. 따라서 부하 분산기에 가상 서비스 7개를 만듭니다.

  • 관리자 클러스터 제어 영역, TCP 포트 443
  • 관리자 클러스터 인그레스 컨트롤러, TCP 포트 80
  • 관리자 클러스터 인그레스 컨트롤러, TCP 포트 443
  • 부가기능 관리자, TCP 포트 8443
  • 사용자 제어 영역, TCP 포트 80
  • 사용자 클러스터 인그레스 컨트롤러, TCP 포트 80
  • 사용자 클러스터 인그레스 컨트롤러, TCP 포트 443

다음 단계

문제 해결

자세한 내용은 문제 해결을 참조하세요.