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

다음 부하 분산 모드 중 하나를 구성하는 것이 좋습니다.

  • 번들 모드에서 Google Distributed Cloud는 부하 분산기를 제공하고 관리합니다. 사용자는 부하 분산기의 라이선스를 가져올 필요가 없으며 설정해야 하는 양은 최소 수준입니다.

  • 수동 모드에서는 Google Distributed Cloud가 F5 BIG-IP 또는 Citrix 등 사용자가 선택한 부하 분산기를 사용합니다. 수동 부하 분산 모드에서는 번들 모드보다 더 많은 구성을 수행해야 합니다.

수동 부하 분산은 다음 클러스터 유형에 지원됩니다.

  • Controlplane V2가 사용 설정된 사용자 클러스터. Controlplane V2를 사용하면 사용자 클러스터의 제어 영역 노드는 사용자 클러스터 자체에 있습니다.

  • kubeception을 사용하는 사용자 클러스터. kubeception은 사용자 클러스터의 제어 영역이 관리자 클러스터의 하나 이상의 노드에서 실행되는 경우를 나타냅니다. Controlplane V2가 사용 설정되지 않은 경우에는 사용자 클러스터에 kubeception이 사용됩니다.

이 페이지에서는 수동 부하 분산 모드를 사용하는 경우 수행해야 하는 단계를 설명합니다.

이 주제에서는 나중에 사용할 수 있도록 제어 영역 노드와 워커 노드에 대해 IP 주소를 따로 설정합니다. 또한 가상 IP(VIP)에 대해 IP 주소를 따로 설정하고 nodePort 값을 결정합니다. 이를 위해 사용하려는 IP 주소 및 nodePort 값을 선택한 후 이를 스프레드시트 또는 다른 도구에 기록합니다. 클러스터를 만들 준비가 되면 관리자 클러스터사용자 클러스터에 대한 구성 파일과 클러스터에 대한 IP 블록 파일을 작성하기 위해 IP 주소와 nodePort 값이 필요합니다.

또한 사용자 클러스터에 대해 부하 분산기를 수동으로 구성할 때 IP 주소와 nodePort 값이 필요합니다.

노드 IP 주소 따로 설정

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

IP 주소 구성

따로 설정한 고정 IP 주소를 구성하는 위치는 클러스터 유형에 따라 그리고 Controlplane V2가 사용자 클러스터에 사용 설정되었는지 여부에 따라 달라집니다.

HA 관리자 클러스터

다음 표에서는 IP 주소의 용도와 HA 관리자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

고정 IP 구성
제어 영역 노드 network.controlPlaneIPBlock.ips 섹션의 관리자 클러스터 구성 파일
1.16 이하: 부가기능 노드 관리자 클러스터 IP 블록 파일입니다. 관리자 클러스터 구성 파일의 network.ipMode.ipBlockFilePath 필드에 경로를 추가합니다.

1.28 이상에서 새로운 HA 관리자 클러스터에는 부가기능 노드가 없으므로 이전 버전에서와 같이 부가기능 노드에 대해 IP 주소를 따로 설정할 필요가 없습니다.

HA가 아닌 관리자 클러스터

다음 표는 IP 주소의 용도와 HA가 아닌 관리자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

고정 IP 구성
제어 영역 노드 관리자 클러스터 IP 블록 파일입니다. 관리자 클러스터 구성 파일의 network.ipMode.ipBlockFilePath 필드에 경로를 추가합니다.
부가기능 노드 관리자 클러스터 IP 블록 파일

버전 1.28 이상에서 모든 새 관리자 클러스터는 3개의 제어 영역 노드가 있는 고가용성(HA) 클러스터여야 합니다.

CP V2 사용자 클러스터

다음 표에서는 IP 주소의 용도와 Controlplane V2가 사용 설정된 사용자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

고정 IP 구성
제어 영역 노드 network.controlPlaneIPBlock.ips 섹션의 사용자 클러스터 구성 파일
워커 노드 사용자 클러스터 IP 블록 파일입니다. 사용자 클러스터 구성 파일의 network.ipMode.ipBlockFilePath 필드에 경로를 추가합니다.

Kubeception 사용자 클러스터

다음 표에서는 IP 주소의 용도와 kubeception을 사용하는 사용자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

고정 IP 구성
제어 영역 노드 관리자 클러스터 IP 블록 파일입니다. 관리자 클러스터 구성 파일의 network.ipMode.ipBlockFilePath 필드에 경로를 추가합니다.
워커 노드 사용자 클러스터 IP 블록 파일입니다. 사용자 클러스터 구성 파일의 network.ipMode.ipBlockFilePath 필드에 경로를 추가합니다.

VIP용 IP 주소 따로 설정

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

VIP 구성

VIP를 구성하는 위치는 클러스터 유형에 따라 달라집니다.

HA 관리자 클러스터

다음 표에서는 VIP의 용도와 HA 관리자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

VIP 구성
관리자 클러스터의 Kubernetes API 서버의 VIP loadBalancer.vips.controlPlaneVIP 필드의 관리자 클러스터 구성 파일
1.15 이하: 부가기능 VIP loadBalancer.vips.addonsVIP 필드의 관리자 클러스터 구성 파일

버전 간에는 다음과 같은 차이점이 있습니다.

  • 1.16 이상에서는 HA 관리자 클러스터에 부가기능 VIP를 구성할 필요가 없습니다.

  • 1.28 이상에서는 새 HA 관리자 클러스터에 부가기능 노드가 없습니다.

HA가 아닌 관리자 클러스터

다음 표는 VIP의 용도와 HA가 아닌 관리자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

VIP 구성
관리자 클러스터의 Kubernetes API 서버의 VIP loadBalancer.vips.controlPlaneVIP 필드의 관리자 클러스터 구성 파일
1.15 이하: 부가기능 VIP loadBalancer.vips.addonsVIP 필드의 관리자 클러스터 구성 파일

버전 간에는 다음과 같은 차이점이 있습니다.

1.16 이상에서는 HA가 아닌 관리자 클러스터에 부가기능 VIP를 구성할 필요가 없습니다.

CP V2 사용자 클러스터

다음 표에서는 VIP의 용도와 Controlplane V2가 사용 설정된 사용자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

VIP 구성
사용자 클러스터의 Kubernetes API 서버의 VIP loadBalancer.vips.controlPlaneVIP 필드의 사용자 클러스터 구성 파일
사용자 클러스터의 인그레스 서비스에 대한 VIP loadBalancer.vips.ingressVIP 필드의 사용자 클러스터 구성 파일

Kubeception 사용자 클러스터

다음 표에서는 VIP의 용도와 kubeception을 사용하는 사용자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

VIP 구성
사용자 클러스터의 Kubernetes API 서버의 VIP loadBalancer.vips.controlPlaneVIP 필드의 사용자 클러스터 구성 파일
사용자 클러스터의 인그레스 서비스에 대한 VIP loadBalancer.vips.ingressVIP 필드의 사용자 클러스터 구성 파일

nodePort 값을 따로 설정

Google Distributed Cloud에서 Kubernetes API 서버와 인그레스 서비스는 Kubernetes 서비스에 의해 노출됩니다. 수동 부하 분산 모드에서는 이러한 서비스에 고유한 nodePort 값을 선택해야 합니다. 30000~32767 범위의 값을 선택합니다.

nodePort 값 구성

nodePort 값을 구성하는 위치는 사용자 클러스터에 ControlPlane V2가 사용 설정되었는지 여부에 따라 달라집니다.

HA 관리자 클러스터

다음 표는 nodePort의 용도와 HA 관리자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

nodePort 구성
1.15 이하: 부가기능 노드의 경우 nodePort loadBalancer.manualLB.addonsNodePort 필드의 관리자 클러스터 구성 파일

버전 1.16 이상에서는 HA 관리자 클러스터의 부가기능 노드에 nodePort를 구성할 필요가 없습니다.

HA가 아닌 관리자 클러스터

다음 표에서는 nodePort 값의 용도와 HA가 아닌 관리자 클러스터에서 값을 구성하는 위치를 설명합니다.

nodePort 구성
1.16 이하: 관리자 클러스터의 Kubernetes API 서버용 nodePort 1.15 이하: loadBalancer.vips.controlPlaneNodePort 필드의 관리자 클러스터 구성 파일
1.15 이하: 부가기능 노드용 nodePort loadBalancer.manualLB.addonsNodePort 필드의 관리자 클러스터 구성 파일

버전 1.16 이상에서는 HA가 아닌 관리자 클러스터의 부가기능 노드에 nodePort를 구성할 필요가 없습니다.

CP V2 사용자 클러스터

다음 표에서는 nodePorts의 용도와 Controlplane V2가 사용 설정된 사용자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

nodePorts 구성
사용자 클러스터의 인그레스 서비스에 대한 HTTP nodePort loadBalancer.manualLB.ingressHTTPNodePort의 사용자 클러스터 구성 파일
사용자 클러스터의 인그레스 서비스에 대한 HTTPS nodePort loadBalancer.manualLB.ingressHTTPSNodePort의 사용자 클러스터 구성 파일

Google Distributed Cloud가 Controlplane V2가 사용 설정된 사용자 클러스터에 대해 부하 분산을 처리하기 때문에 제어 영역 VIP에 대해 nodePort를 구성할 필요가 없습니다.

Kubeception 사용자 클러스터

다음 표에서는 nodePort 값의 용도와 kubeception을 사용하는 사용자 클러스터에 대해 이를 구성하는 위치에 대해 설명합니다.

nodePort 구성
사용자 클러스터의 Kubernetes API 서버에 대한 nodePort loadBalancer.manualLB.controlPlaneNodePort 필드의 사용자 클러스터 구성 파일
사용자 클러스터의 Konnectivity 서버에 대한 nodePort(Konnectivity 서버가 제어 영역 VIP 사용) loadBalancer.manualLB.konnectivityServerNodePort 필드의 사용자 클러스터 구성 파일
사용자 클러스터의 인그레스 서비스에 대한 HTTP nodePort loadBalancer.manualLB.ingressHTTPNodePort의 사용자 클러스터 구성 파일
사용자 클러스터의 인그레스 서비스에 대한 HTTPS nodePort loadBalancer.manualLB.ingressHTTPSNodePort의 사용자 클러스터 구성 파일

클러스터 구성 파일 예시

다음 예시에서는 관리자 및 사용자 클러스터 구성 파일 부분을 보여줍니다.

HA 관리자 클러스터

  • 버전 1.16 이상:

    network:
      controlPlaneIPBlock:
        netmask: "255.255.248.0"
        gateway: "21.0.143.254"
        ips:
        - ip: "21.0.140.226"
          hostname: "admin-cp-vm-1"
        - ip: "21.0.141.48"
          hostname: "admin-cp-vm-2"
        - ip: "21.0.141.65"
          hostname: "admin-cp-vm-3"
    loadBalancer:
      vips:
        controlPlaneVIP: "172.16.21.40"
      kind: ManualLB
    
  • 버전 1.15 이하에는 부가기능 노드에 VIP 및 nodeport가 필요합니다.

    network:
      controlPlaneIPBlock:
        netmask: "255.255.248.0"
        gateway: "21.0.143.254"
        ips:
        - ip: "21.0.140.226"
          hostname: "admin-cp-vm-1"
        - ip: "21.0.141.48"
          hostname: "admin-cp-vm-2"
        - ip: "21.0.141.65"
          hostname: "admin-cp-vm-3"
    loadBalancer:
      vips:
        controlPlaneVIP: "172.16.21.40"
        addonsVIP: "203.0.113.4"
      kind: ManualLB
      manualLB:
        addonsNodePort: 31405
    

HA가 아닌 관리자 클러스터

  • 버전 1.16 이상:

    network:
      ipMode:
        type: static
        ipBlockFilePath: "ipblock-admin.yaml"
    loadBalancer:
      vips:
        controlPlaneVIP: "172.16.21.40"
      kind: ManualLB
      manualLB:
        controlPlaneNodePort: 30562
    
  • 버전 1.15 이하에는 부가기능 노드에 VIP 및 nodeport가 필요합니다.

    network:
    ipMode:
      type: static
      ipBlockFilePath: "ipblock-admin.yaml"
    loadBalancer:
    vips:
      controlPlaneVIP: "172.16.21.40"
      addonsVIP: "172.16.21.41"
    kind: ManualLB
    manualLB:
      controlPlaneNodePort: 30562
      addonsNodePort: 30563
    

CP V2 사용자 클러스터

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.6"
      hostname: "cp-vm-1"
    - ip: "172.16.21.7"
      hostname: "cp-vm-2"
    - ip: "172.16.21.8"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879

Kubeception 사용자 클러스터

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

부하 분산기 구성

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

HA 관리자 클러스터

제어 영역 노드에 대한 트래픽

Google Distributed Cloud는 HA 관리자 클러스터에 대해 제어 영역 트래픽의 부하 분산을 자동으로 처리합니다. 부하 분산기에서 매핑을 구성할 필요가 없지만 loadBalancer.vips.controlPlaneVIP 필드에 IP 주소를 지정해야 합니다.

부가기능 노드의 서비스에 대한 트래픽

1.15 이하: 다음은 부가기능 노드의 서비스에 대한 트래픽의 IP 주소 및 nodePort 값에 대한 매핑을 보여줍니다.

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

제어 영역 노드와 부가기능 노드을 포함하여 관리자 클러스터의 모든 노드에 이 매핑을 추가합니다.

버전 1.16 이상에서는 HA 관리자 클러스터의 부가기능 노드에 대해 이 매핑을 구성할 필요가 없습니다.

HA가 아닌 관리자 클러스터

제어 영역 트래픽

다음은 제어 영역 노드에 대한 IP 주소와 nodePort 값 매핑을 보여줍니다.

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

제어 영역 노드와 부가기능 노드를 포함하여 관리자 클러스터의 모든 노드에 이 매핑을 추가합니다.

부가기능 노드의 서비스에 대한 트래픽

1.15 이하: 다음은 부가기능 노드에서 실행되는 서비스의 IP 주소와 nodePort 값에 대한 매핑을 보여줍니다.

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

제어 영역 노드와 부가기능 노드를 포함하여 관리자 클러스터의 모든 노드에 이 매핑을 추가합니다.

버전 1.16 이상에서는 HA가 아닌 관리자 클러스터의 부가기능 노드에 대해 이 매핑을 구성할 필요가 없습니다.

CP V2 사용자 클러스터

제어 영역 트래픽

Google Distributed Cloud는 Controlplane V2가 사용 설정된 사용자 클러스터에 대해 제어 영역 트래픽의 부하 분산을 자동으로 처리합니다. 부하 분산기에서 매핑을 구성할 필요가 없지만 loadBalancer.vips.controlPlaneVIP 필드에 IP 주소를 지정해야 합니다.

데이터 영역 트래픽

다음은 데이터 영역 트래픽에 대한 IP 주소 및 nodePort 값 매핑을 보여줍니다.

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

사용자 클러스터의 모든 노드(제어 영역 노드 및 워커 노드)에 대해 이러한 매핑을 추가합니다. 클러스터에 NodePort를 구성했기 때문에 Kubernetes가 모든 클러스터 노드에서 NodePort를 엽니다. 이렇게 하면 클러스터의 모든 노드가 데이터 영역 트래픽을 처리합니다.

매핑을 구성한 후 부하 분산기는 표준 HTTP 및 HTTPS 포트에서 사용자 클러스터의 인그레스 VIP에 대해 구성한 IP 주소로 트래픽을 수신 대기합니다. 부하 분산기는 클러스터의 노드로 요청을 라우팅합니다. 요청이 클러스터 노드 중 하나로 라우팅된 후에는 다시 내부 Kubernetes 네트워킹이 요청을 대상 포드로 라우팅합니다.

Kubeception 사용자 클러스터

제어 영역 트래픽

다음은 제어 영역 트래픽에 대한 IP 주소 및 nodePort 값 매핑을 보여줍니다.

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

관리자 클러스터의 모든 노드(관리자 클러스터 및 사용자 클러스터 제어 영역 노드)에 대해 이 매핑을 추가합니다.

데이터 영역 트래픽

다음은 데이터 영역 트래픽에 대한 IP 주소 및 nodePort 값 매핑을 보여줍니다.

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

사용자 클러스터의 모든 노드에 대해 이러한 매핑을 추가합니다. kubeception을 사용하는 사용자 클러스터에서는 클러스터의 모든 노드가 워커 노드입니다.

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

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

수동 부하 분산 지원 받기

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

다음 단계