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

GKE On-Prem 클러스터는 두 가지 부하 분산 모드 중 하나로 실행될 수 있습니다. 통합 또는 수동 통합 모드를 사용하면 GKE On-Prem 클러스터가 F5 BIG-IP 부하 분산기로 실행됩니다. 수동 모드에서는 F5 BIG-IP 부하 분산기나 다른 부하 분산기를 사용할 수 있습니다. 수동 부하 분산 모드를 사용하려면 통합 모드보다 더 많은 구성을 수행해야 합니다. 이 페이지에서는 수동 부하 분산 모드를 사용하는 경우 수행해야 하는 단계를 설명합니다.

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

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

가상 IP 주소 따로 설정

통합 모드 또는 수동 모드 사용 여부에 관계없이 부하 분산에 사용할 가상 IP 주소(VIP)를 따로 설정해야 합니다. 이러한 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

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

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

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

  • 두 사용자 클러스터 각각에 대한 부가기능 서버의 nodePort

따라서 앞의 예에서는 11개의 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를 구성합니다.

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

  • 관리자 클러스터 제어 영역, TCP 포트 443
  • 관리자 클러스터 인그레스 컨트롤러, TCP 포트 80
  • 관리자 클러스터 인그레스 컨트롤러, TCP 포트 443
  • 부가기능 관리자, TCP 포트 8443
  • 사용자 제어 영역, TCP 포트 80
  • 사용자 클러스터 인그레스 컨트롤러, 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은 수동 부하 분산 모드로 구성된 부하 분산기를 지원하지 않습니다. 부하 분산기에 문제가 발생하면 부하 분산기 공급업체에 문의하세요.

다음 단계

문제 해결

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