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

GKE On-Prem 클러스터는 통합, 번들, 수동의 세 가지 부하 분산 모드 중 하나로 실행될 수 있습니다. 통합 모드에서는 GKE On-Prem 클러스터가 F5 BIG-IP 부하 분산기로 실행됩니다. 번들 모드에서 GKE On-Prem은 부하 분산기를 제공하고 관리합니다. 부하 분산기의 라이선스를 가져올 필요가 없으며 설정해야 하는 양이 최소화됩니다. 수동 모드에서 GKE On-Prem은 선택한 다른 부하 분산기로 실행됩니다. 수동 부하 분산 모드를 사용하려면 통합 모드보다 더 많은 구성을 수행해야 합니다. 이 페이지에서는 수동 부하 분산 모드를 사용하는 경우 수행해야 하는 단계를 설명합니다.

Citrix 부하 분산기는 수동 부하 분산 모드에서 사용할 수 있는 부하 분산기의 예시입니다.

이 주제에서는 나중에 사용할 수 있도록 IP 주소와 nodePort 값을 따로 설정합니다. 부하 분산과 클러스터 노드에 사용할 IP 주소와 nodePort 값을 선택하는 것이 좋습니다. 그러나 지금은 주소와 nodePort 값으로 아무것도 하지 않습니다. 나중에 GKE On-Prem을 설치할 수 있으면 클러스터 구성 파일에 주소와 nodePort 값을 입력해야 합니다. 부하 분산기를 수동으로 구성하는 경우에도 주소와 nodePort 값이 필요합니다.

가상 IP 주소 따로 설정

통합, 번들, 수동 부하 분산 모드를 사용하는지와 관계없이 부하 분산에 사용할 여러 가상 IP 주소(VIPs)를 별도로 설정해야 합니다. 이러한 VIP를 사용하면 외부 클라이언트가 Kubernetes API 서버, 인그레스 서비스, 부가기능 서비스에 연결할 수 있습니다. VIP를 따로 설정하는 방법에 대한 자세한 내용은 가상 IP 주소 따로 설정을 참조하세요.

노드 IP 주소 따로 설정

수동 부하 분산 모드에서는 DHCP를 사용할 수 없습니다. 클러스터 노드에 고정 IP 주소를 지정해야 합니다. 관리자 클러스터의 노드와 만들려는 모든 사용자 클러스터의 노드에 충분한 주소를 따로 설정해야 합니다. 따로 설정할 수 있는 노드 IP 주소 개수에 대한 자세한 내용은 고정 IP 구성을 참조하세요.

nodePort 값을 따로 설정

GKE On-Prem 클러스터에서 Kubernetes API 서버, 인그레스 서비스, 부가기능 서비스는 NodePort 유형의 Kubernetes 서비스로 구현됩니다. 수동 부하 분산 모드에서는 이러한 서비스에 고유한 nodePort 값을 선택해야 합니다. 30000~32767 범위의 값을 선택합니다. nodePort 값을 선택한 후에 클러스터 구성 파일을 수정할 때 나중에 따로 설정합니다.

다음 nodePort 값을 선택하고 따로 설정합니다.

  • Kubernetes API 서버용으로 따로 설정한 VIP마다 nodePort 값 하나를 따로 설정합니다.

  • 클러스터 인그레스 서비스에 따로 설정한 VIP마다 HTTP 트래픽과 HTTPS 트래픽에 각각 하나씩 nodePort 값을 따로 설정합니다. 이는 사용자 클러스터에만 적용됩니다.

  • 클러스터 부가기능 서비스에 대해 따로 설정한 VIP마다 nodePort 값 하나를 따로 설정합니다. 이는 관리자 클러스터에만 적용됩니다.

예를 들어 사용자 클러스터가 2개이고 부가기능을 사용한다고 가정합니다. 다음 nodePort 값을 선택하고 별도로 설정해야 합니다.

  • 관리자 클러스터의 Kubernetes API 서버에 대한 nodePort

  • 두 사용자 클러스터 각각에 대한 Kubernetes API 서버의 nodePort

  • 두 사용자 클러스터 각각에 대한 인그레스 서비스로 전송되는 HTTP 트래픽의 nodePort

  • 두 사용자 클러스터 각각에 대한 인그레스 서비스로 전송되는 HTTPS 트래픽의 nodePort

  • 관리자 클러스터의 부가기능 서비스 nodePort

따라서 위 예시에서는 8개의 nodePort 값을 별도로 설정해야 합니다.

GKE On-Prem 구성 파일 수정

각 클러스터의 구성 파일(admin clusteruser cluster)을 준비합니다.

  • loadBalancer.kindManualLB로 설정합니다.

  • network.ipModestatic로 설정합니다.

  • network.ipBlockFilePath를 클러스터의 고정 IP YAML 파일 경로로 설정합니다. 자세한 내용은 고정 IP 구성을 참조하세요. DHCP는 수동 부하 분산 모드의 옵션이 아닙니다.

  • loadBalancer.manualLB 필드를 클러스터에 선택한 nodePort 값으로 업데이트합니다.

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

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879
    controlPlaneNodePort: 30562:
    addonsnodeport: 31405

부하 분산기 구성

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

  • 관리자 및 사용자 클러스터 모두에 대한 클러스터 제어 영역, TCP 포트 443
  • 사용하는 경우 관리자 클러스터의 부가기능 관리자, TCP 포트 8443
  • 사용자 클러스터 인그레스 컨트롤러, TCP 포트 80
  • 사용자 클러스터 인그레스 컨트롤러, TCP 포트 443

부하 분산 예시

서비스에는 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로 요청을 전송합니다.

수동 부하 분산 지원 받기

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

다음 단계

문제 해결

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