NCP는 각 서비스 포트에 대해 계층 4 로드 밸런서 가상 서버와 풀을 생성합니다.

이 기능에 대한 세부 정보:
  • TCP와 UDP가 모두 지원됩니다.
  • 각 서비스에는 고유한 IP 주소가 할당됩니다.
  • 이 서비스에는 LoadBalancer 정의의 loadBalancerIP 필드를 기준으로 외부 IP 풀의 IP 주소가 할당됩니다. loadBalancerIP 필드는 비워 둘 수 있고 IP 풀의 IP 주소, 이름 또는 ID를 포함할 수 있습니다. loadBalancerIP 필드가 비어 있으면 ncp.ini[nsx_v3] 섹션에 있는 external_ip_pools_lb 옵션에서 지정한 외부 IP 풀에서 IP가 할당됩니다. external_ip_pools_lb 옵션이 없는 경우 external_ip_pools에서 지정한 풀이 사용됩니다. LoadBalancer 서비스는 이 IP 주소와 서비스 포트를 사용합니다.
  • 구성을 변경하고 NCP를 다시 시작하여 다른 IP 풀로 변경할 수 있습니다.
  • loadBalancerIP에서 지정한 IP 풀에는 태그 scope: ncp/owner, tag: cluster:<cluster_name>이 있어야 합니다.

  • 정책 모드에서는 선택기 없는 유형 LoadBalancer의 서비스가 지원됩니다. 이러한 서비스의 경우 NSX-T 로드 밸런서 SNAT IP는 LoadBalancer 유형 서비스의 IP가 됩니다. LoadBalancer 유형 서비스의 IP를 업데이트하면 NSX-T 로드 밸런서 SNAT IP가 업데이트됩니다. 선택기 없는 서비스를 선택기 없이 다른 서비스의 끝점으로 구성할 수 없습니다.
  • 오류는 서비스에 주석으로 추가됩니다. 오류 키는 ncp/error.loadbalancer입니다. 다음과 같은 오류가 발생할 수 있습니다.
    • ncp/error.loadbalancer: IP_POOL_NOT_FOUND

      이 오류는 사용자가 loadBalancerIP: <nsx-ip-pool>을 지정했지만 <nsx-ip-pool>이 없음을 나타냅니다. 이 경우 서비스는 비활성 상태입니다. 이 오류를 해결하려면 올바른 IP 풀을 지정하고, 서비스를 삭제한 후 다시 생성하십시오.

    • ncp/error.loadbalancer: IP_POOL_EXHAUSTED

      이 오류는 사용자가 loadBalancerIP: <nsx-ip-pool>을 지정했지만 해당 IP 풀이 IP 주소를 모두 사용했음을 나타냅니다. 이 경우 서비스는 비활성 상태입니다. 이 오류를 해결하려면 사용 가능한 IP 주소가 있는 IP 풀을 지정하고, 서비스를 삭제한 후 다시 생성하십시오.

    • ncp/error.loadbalancer: IP_POOL_NOT_UNIQUE

      이 오류는 여러 IP 풀에 loadBalancerIP: <nsx-ip-pool>에서 지정한 이름이 있음을 나타냅니다. 이 경우 서비스는 비활성 상태입니다.

    • ncp/error.loadbalancer: POOL_ACCESS_DENIED

      이 오류는 loadBalancerIP에서 지정한 IP 풀에 태그 scope: ncp/owner, tag: cluster:<cluster_name>가 없거나 태그에 지정된 클러스터가 Kubernetes 클러스터의 이름과 일치하지 않음을 나타냅니다.

    • ncp/error.loadbalancer: LB_VIP_CONFLICT

      이 오류는 loadBalancerIP 필드의 IP가 활성 서비스의 IP와 동일함을 나타냅니다. 이 경우 서비스는 비활성 상태입니다.

  • 계층 4 로드 밸런서는 자동 크기 조정을 지원합니다. Kubernetes LoadBalancer 서비스가 생성 또는 수정되어 추가 가상 서버가 필요하고 기존의 계층 4 로드 밸런서에 용량이 충분하지 않으면 새로운 계층 4 로드 밸런서가 생성됩니다. 또한 NCP는 더 이상 가상 서버가 연결되지 않은 계층 4 로드 밸런서를 삭제합니다. 이 기능은 기본적으로 사용하도록 설정되어 있습니다. 이 기능을 사용하지 않도록 설정하려면 NCP ConfigMap에서 l4_lb_auto_scalingfalse로 설정해야 합니다.
  • LoadBalancer 유형의 서비스를 생성할 때 매개 변수 loadBalancerSourceRanges를 지정할 수 있습니다. 예:
    kind: Service
    metadata:
      name: nginx-service-lb
      labels:
        app: nginx
    spec:
      type: LoadBalancer
      loadBalancerSourceRanges:
        - "10.30.88.116/24"
      ports:
        - port: 80
          targetPort: 80
          protocol: TCP
          name: tcp
    ...

    생성된 NSX-T 로드 밸런서는 지정된 소스 IP 주소의 트래픽만 허용합니다. 가상 서버의 액세스 목록 제어를 확인하여 NSX Manager에서 이 사항을 확인할 수 있습니다. 특정 그룹에 대한 액세스를 허용합니다. 이 그룹에는 loadBalancerSourceRanges에 지정된 IP 주소가 포함됩니다. 인벤토리 > 그룹으로 이동하여 이 그룹을 확인할 수 있습니다.