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

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

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

이 주제에서는 나중에 사용할 수 있도록 IP 주소와 nodePort 값을 따로 설정합니다. 부하 분산과 클러스터 노드에 사용할 IP 주소와 nodePort 값을 선택하는 것이 좋습니다. 그러나 지금은 주소와 nodePort 값으로 아무것도 하지 않습니다. 나중에 클러스터를 만들 준비가 되면 관리자 클러스터 구성 파일사용자 클러스터 구성 파일을 작성하기 위해 주소 및 nodePort 값이 필요합니다. 부하 분산기를 수동으로 구성하는 경우에도 주소와 nodePort 값이 필요합니다.

노드 IP 주소 따로 설정

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

가상 IP 주소 따로 설정

통합 모드, 번들 모드, 수동 모드 사용 여부에 관계없이 부하 분산에 사용할 가상 IP 주소(VIP)를 따로 설정해야 합니다. 이러한 VIP를 사용하면 외부 클라이언트가 로그 통합을 위해 Kubernetes API 서버, 인그레스 서비스, 부가기능 서비스에 연결할 수 있습니다.

다음 VIP를 따로 준비합니다.

  • 관리자 클러스터의 Kubernetes API 서버의 VIP. 관리자 클러스터 구성 파일에서는 controlPlaneVIP라고 합니다.

  • 관리자 클러스터에서 실행되는 Prometheus 및 Grafana 부가기능의 VIP입니다. 사용자 클러스터는 이 VIP를 관리자 클러스터와의 측정항목 통신에 사용합니다. 관리자 클러스터 구성 파일에서 이 파일을 addonsVIP라고 부릅니다.

  • 만들려는 각 사용자 클러스터의 경우 사용자 클러스터의 Kubernetes API 서버의 VIP. 사용자 클러스터 구성 파일에서는 이를 controlPlaneVIP라고 부릅니다.

  • 만들려는 각 사용자 클러스터의 경우 사용자 클러스터의 인그레스 서비스에 대한 VIP. 사용자 클러스터 구성 파일에서는 이를 ingressVIP라고 부릅니다.

nodePort 값을 따로 설정

VMware용 Anthos 클러스터에서 Kubernetes API 서버, 인그레스 서비스, 로그 집계를 위한 부가기능 서비스가 Kubernetes 서비스에 의해 노출됩니다. 수동 부하 분산 모드에서는 이러한 서비스에 고유한 nodePort 값을 선택해야 합니다. 30000~32767 범위의 값을 선택합니다. nodePort 값을 선택한 후에 클러스터 구성 파일을 입력할 때 나중에 따로 설정합니다.

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

  • 관리자 클러스터의 Kubernetes API 서버에 대해 따로 설정한 VIP에 대해 nodePort 값 하나를 따로 설정합니다.

  • 부가기능 서비스에 대해 따로 설정한 VIP에 대해 nodePort 값 하나를 따로 설정합니다.

  • 사용자 클러스터의 Kubernetes API 서버에 대해 따로 설정한 각 VIP에 대해 nodePort 값 하나를 따로 설정합니다.

  • 사용자 클러스터의 인그레스 서비스에 대해 따로 설정한 각 VIP에 대해 HTTP 트래픽 및 HTTPS 트래픽용으로 하나씩 2개의 nodePort 값을 따로 설정합니다.

예를 들어 관리자 클러스터 및 사용자 클러스터 2개를 사용한다고 가정합니다. 다음 nodePort 값을 선택하고 따로 설정해야 합니다.

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

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

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

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

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

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

클러스터 구성 파일 작성

관리자 클러스터의 구성 파일 및 각 사용자 클러스터의 구성 파일을 준비합니다.

각 클러스터 구성 파일에서 다음을 수행합니다.

  • loadBalancer.kindManualLB로 설정합니다.

  • network.ipModestatic로 설정합니다.

  • network.ipBlockFilePath를 클러스터의 IP 블록 파일 경로로 설정합니다.

  • loadBalancer.manualLB 섹션을 클러스터에 선택한 nodePort 값으로 업데이트합니다.

다음 예시는 사용자 클러스터 구성 파일의 일부를 보여줍니다.

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

부하 분산기 구성

관리자 클러스터

관리자 클러스터 구성 파일에서 다음을 작성했습니다.

  • loadBalancer.vips.controlPlaneVIP
  • loadBalancer.vips.addonsVIP
  • loadBalancer.manualLB.controlPlaneNodePort
  • loadBalancer.manualLB.addonsNodePort
  • network.ipMode.ipBlockFilePath

관리자 클러스터의 IP 블록 파일에서 관리자 클러스터 노드에 사용할 정적 IP 주소 목록을 작성했습니다.

부하 분산기의 관리 콘솔 또는 도구를 사용하여 부하 분산기에서 다음 매핑을 구성합니다. 이를 수행하는 방법은 부하 분산기에 따라 달라집니다.

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodewPort)

사용자 클러스터

사용자 클러스터 구성 파일에서 다음을 작성했습니다.

  • loadBalancer.vips.controlPlaneVIP
  • loadBalancer.vips.ingressVIP
  • loadBalancer.manualLB.controlPlaneNodePort
  • loadBalancer.manualLB.konnectivityServerNodePort
  • loadBalancer.manualLB.ingressHTTPNodePort
  • loadBalancer.manualLB.ingressHTTPSNodePort
  • network.ipMode.ipBlockFilePath

사용자 클러스터의 IP 블록 파일에서 사용자 클러스터 노드에 사용할 정적 IP 주소 목록을 작성했습니다.

부하 분산기의 관리 콘솔 또는 도구를 사용하여 부하 분산기에서 다음 매핑을 구성합니다. 이를 수행하는 방법은 부하 분산기에 따라 달라집니다.

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)

  • (controlPlaneVIP:8132) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort)

  • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)

  • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

위의 요구사항 외에도 백엔드 노드 장애가 감지되면 클라이언트 연결을 재설정하도록 부하 분산기를 구성하는 것이 좋습니다. 이 구성을 사용하지 않으면 Kubernetes API 서버의 클라이언트가 서버 인스턴스가 다운될 때 몇 분 동안 응답을 중지할 수 있으며, 이로 인해 Kubernetes 제어 영역이 불안정해질 수 있습니다.

  • F5 BIG-IP의 경우 이 설정은 백엔드 풀 구성 페이지에서 Action On Service Down이라고 합니다.
  • HAProxy의 경우 이 설정은 백엔드 서버 구성에서 on-marked-down shutdown-sessions라고 부릅니다.
  • 다른 부하 분산기를 사용하는 경우 해당 문서를 참조하여 해당하는 설정을 찾아야 합니다.

수동 부하 분산 지원 받기

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

다음 단계