CRD(CustomResourceDefinitions)를 생성하여 NSX 로드 밸런서의 사용량을 모니터링하고, 추가 NSX 계층 7 로드 밸런서를 생성하여 기본 로드 밸런서가 처리할 수 없는 수신 워크로드를 처리하도록 할 수 있습니다. 이러한 CRD는 Kubernetes LoadBalancer 서비스에 대해 생성된 계층 4 로드 밸런서를 확장하기 위한 것이 아닙니다.
공유 Tier-1 토폴로지가 있는 경우 이 기능을 사용하도록 nsx-ncp-config ConfigMap의 [nsx_v3]에서 tier0_gateway를 구성해야 합니다.
- 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
apiVersion: vmware.com/v1alpha1 kind: LoadBalancer metadata: name: cluster1-lbs0 spec: httpConfig: {} size: SMALL
YAML 파일은 지정된 크기의 NSX 로드 밸런서 및 지속성, SSL, X 전달 설정이 없는 계층 7 가상 서버 한 쌍을 생성합니다. size 매개 변수는 SMALL, MEDIUM, LARGE 중 하나입니다. 기본값은 SMALL입니다. NSX 로드 밸런서가 생성된 후에는 크기를 변경할 수 없으며 size 매개 변수의 업데이트는 모두 무시됩니다. 가상 서버의 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>
이 결과는 생성이 성공적으로 완료되었음을 나타냅니다. 생성에 실패하면 status는 False가 되고 가상 IP는 없습니다.
spec: httpConfig: virtualIP: <ip address, default to auto-allocate> port: <port number, default to 80>
참고: 서로 다른 LoadBalancer CRD에 대해 동일한 virtualIP를 구성하면 안 됩니다.
spec: httpConfig: xForwardedFor: <INSERT or REPLACE, default to None> affinity: type: <source_ip or cookie, default to None> timeout: <timeout number, default to 10800>
spec: httpConfig: tls: port: <tls port number, default to 443> secretName: <name of secret, default to None>
curl -I -HHost:tea.example.com http://$INGRESS_IP:$CRD_LB_HTTP_PORT/tea
LoadBalancer를 생성하기 전이나 후에 암호를 생성할 수 있습니다. 인증서를 업데이트하려면 먼저 LoadBalancer 스펙에서 secretName을 제거하고 암호 데이터를 업데이트한 다음 위의 구성을 사용하여 동일한 암호를 다시 연결합니다. 새 암호를 생성하고 secretName을 업데이트할 수도 있습니다. 서로 다른 CRD 로드 밸런서 간에 동일한 비밀 데이터를 공유하는 것은 지원되지 않습니다. 다른 인증서로 CRD 로드 밸런서를 구성해야 합니다.
kubectl get lbm
- 사용량 - NSX 로드 밸런서의 워크로드 수입니다.
- 트래픽 - 각 가상 서버의 집계된 통계입니다.
- 상태 - 이 필드에는 다음과 같은 두 개의 차원이 있습니다.
- servicePressureIndex - 로드 밸런서의 성능을 나타냅니다. 점수 및 심각도의 두 값이 제공됩니다.
- infraPressureIndex - 기본 인프라 구성 요소의 성능을 나타냅니다. NCP 2.5.1에서 이 값이 항상 정확하지는 않습니다.
- 필드 metrics는 상태 점수가 계산될 때 고려되는 매개 변수의 개념을 제공합니다.
로드 밸런서의 servicePressureIndex가 HIGH이면 수신 워크로드를 기본 로드 밸런서 또는 LoadBalancer CRD를 사용하여 생성한 로드 밸런서에 해당하는 다른 로드 밸런서로 마이그레이션할 수 있습니다.
annotations: nsx/loadbalancer: <name of the LoadBalancer CRD>
주석이 누락되거나 null로 설정되면 수신이 기본 NSX 로드 밸런서에 배치됩니다.