CRD(CustomResourceDefinitions)를 생성하여 NSX 로드 밸런서의 사용량을 모니터링하고, 추가 NSX 계층 7 로드 밸런서를 생성하여 기본 로드 밸런서가 처리할 수 없는 수신 워크로드를 처리하도록 할 수 있습니다. 이러한 CRD는 Kubernetes LoadBalancer 서비스에 대해 생성된 계층 4 로드 밸런서를 확장하기 위한 것이 아닙니다.

공유 Tier-1 토폴로지가 있는 경우 이 기능을 사용하도록 nsx-ncp-config ConfigMap의 [nsx_v3]에서 tier0_gateway를 구성해야 합니다.

CRD는 다음과 같습니다.
  • NSXLoadBalancerMonitor - 이 CRD는 NSX 로드 밸런서의 사용량 통계를 보고하는 데 사용됩니다. 정책 모드에서 이 CRD는 LoadBalancer CRD를 사용하여 생성된 네임스페이스 로드 밸런서만 모니터링합니다.
  • LoadBalancer - 이 CRD는 새 NSX 로드 밸런서를 생성하는 데 사용됩니다. 이 리소스의 정의는 NCP YAML 파일에 있습니다. 정책 모드 및 TKGI 배포에서는 네임스페이스 리소스입니다. 관리자 모드 배포에서는 클러스터 전체 리소스입니다.

이 기능을 사용하도록 설정하는 절차는 관리자 모드 및 정책 모드에서 동일합니다.

다음 단계를 수행하여 이 기능을 사용하도록 설정합니다.
  • [k8s] 섹션의 enable_lb_crd 옵션을 True로 설정합니다.
  • 다음 명령을 사용하여 NCP YAML 파일을 적용합니다.

    kubectl apply -f ncp-<platform>.yaml

새 NSX 로드 밸런서를 생성하려면 LoadBalancer CRD를 정의하는 YAML 파일을 적용합니다. 예를 들면 다음과 같습니다.
apiVersion: vmware.com/v1alpha1
kind: LoadBalancer
metadata:
    name: cluster1-lbs0
spec:
    httpConfig: {}

이 YAML 파일은 크기가 작은 NSX 로드 밸런서와 지속성, SSL 또는 X 전달 설정이 없는 계층 7 가상 서버 쌍을 생성합니다. 가상 서버의 IP는 로드 밸런서에 대해 구성된 기본 외부 풀에서 할당됩니다. 기본적으로 포트는 80 및 443입니다. 사용자 지정 포트가 HTTP HOST 헤더에 포함되어 있으면 비표준 포트가 지원됩니다. 사용자 지정 포트는 비 TLS 수신에서만 지원됩니다.

LoadBalancer CRD의 생성 상태를 확인하려면 다음 명령을 실행합니다.
kubectl get lb <name of the LoadBalancer> -o yaml
결과는 다음과 같아야 합니다.
status:
 conditions:
 - status: "True"
   type: Ready
 httpVirtualIP: <realized virtual IP>

이 결과는 생성이 성공적으로 완료되었음을 나타냅니다. 생성에 실패하면 statusFalse가 되고 가상 IP는 없습니다.

NSX 로드 밸런서 및 가상 서버에 대한 설정을 사용자 지정할 수도 있습니다. 가상 서버의 IP 및 포트를 구성하려면 다음을 수행합니다.
spec:
    httpConfig:
        virtualIP: <ip address, default to auto-allocate>
        port: <port number, default to 80>
세션 선호도 및 X 전달 모드를 지정하려면:
spec:
    httpConfig:
         xForwardedFor: <INSERT or REPLACE, default to None>
         affinity:
             type: <source_ip or cookie, default to None>
             timeout: <timeout number, default to 10800>
TLS 설정을 구성하려면:
spec:
    httpConfig:
        tls:
            port: <tls port number, default to 443>
            secretName: <name of secret, default to None>
            secretNamespace: <namespace of secret, default to None>
HTTP 및 HTTPS 포트를 기본값이 아닌 값으로 설정한 경우에도 수신 프린터는 Kubernetes 제한으로 인해 수신 상태를 표시할 때 항상 기본 포트 값(80 및 443)을 표시합니다. 수신에 액세스하려면 계속해서 구성된 포트를 사용해야 합니다. 예를 들면 다음과 같습니다.
curl -I -HHost:tea.example.com http://$INGRESS_IP:$CRD_LB_HTTP_PORT/tea

LoadBalancer를 생성하기 전이나 후에 암호를 생성할 수 있습니다. 인증서를 업데이트하려면 먼저 LoadBalancer 스펙에서 secretNamesecretNamespace를 제거하고 비밀 데이터를 업데이트한 다음, 위의 구성을 사용하여 동일한 암호를 다시 연결합니다. 새 비밀을 생성하고 secretNamesecretNamespace도 업데이트할 수 있습니다. 서로 다른 CRD 로드 밸런서 간에 동일한 비밀 데이터를 공유하는 것은 지원되지 않습니다. 다른 인증서로 CRD 로드 밸런서를 구성해야 합니다.

NSX 로드 밸런서의 상태 및 통계를 보려면 다음 명령을 실행합니다.
kubectl get lbm
그러면 각 NSX 로드 밸런서에 대해 하나씩 모든 NSXLoadBlancerMonitor가 나열됩니다. 다음과 같은 정보가 표시됩니다.
  • 사용량 - NSX 로드 밸런서의 워크로드 수입니다.
  • 트래픽 - 각 가상 서버의 집계된 통계입니다.
  • 상태 - 이 필드에는 다음과 같은 두 개의 차원이 있습니다.
    • servicePressureIndex - 로드 밸런서의 성능을 나타냅니다. 점수 및 심각도의 두 값이 제공됩니다.
    • infraPressureIndex - 기본 인프라 구성 요소의 성능을 나타냅니다. NCP 2.5.1에서 이 값이 항상 정확하지는 않습니다.
    • 필드 metrics는 상태 점수가 계산될 때 고려되는 매개 변수의 개념을 제공합니다.

로드 밸런서의 servicePressureIndexHIGH이면 수신 워크로드를 기본 로드 밸런서 또는 LoadBalancer CRD를 사용하여 생성한 로드 밸런서에 해당하는 다른 로드 밸런서로 마이그레이션할 수 있습니다.

수신을 전용 로드 밸런서에 배치하려면 수신 규격에 주석을 추가합니다. 예를 들면 다음과 같습니다.
 annotations:
   nsx/loadbalancer: <name of the LoadBalancer CRD>

주석이 누락되거나 null로 설정되면 수신이 기본 NSX 로드 밸런서에 배치됩니다.