Puede crear objetos CustomResourceDefinition (CRD) para supervisar el uso de equilibradores de carga de NSX y para crear equilibradores de carga de Capa 7 de NSX adicionales que gestionen las cargas de trabajo de entrada de las que no pueda hacerse cargo el equilibrador de carga predeterminado. Estos objetos CRD no se pueden utilizar para ajustar la escala de los equilibradores de carga de Capa 4 que se creen para los servicios LoadBalancer de Kubernetes.
Si tiene una topología de nivel 1 compartida, deberá configurar tier0_gateway en [nsx_v3] en el ConfigMap nsx-ncp-config para usar esta función.
- NSXLoadBalancerMonitor: se utiliza para informar sobre las estadísticas de uso de los equilibradores de carga de NSX. En el modo Directiva, este CRD solo supervisará equilibradores de carga de espacios de nombres creados con el CRD del equilibrador de carga.
- LoadBalancer: se utiliza para crear equilibradores de carga de NSX nuevos. La definición de este recurso se encuentra en el archivo YAML de NCP. En el modo Directiva e implementaciones de TKGI, este es un recurso de espacio de nombres. En implementaciones del modo Manager, este es un recurso de todo el clúster.
El procedimiento para habilitar esta función es el mismo para el modo Manager y para el modo Directiva.
- Configure la opción enable_lb_crd de la sección [k8s] como True.
- Aplique el archivo YAML de NCP con el siguiente comando:
kubectl apply -f ncp-<platform>.yaml
apiVersion: vmware.com/v1alpha1 kind: LoadBalancer metadata: name: cluster1-lbs0 spec: httpConfig: {} size: SMALL
Este archivo YAML creará un equilibrador de carga de NSX del tamaño especificado y un par de servidores virtuales de Capa 7 sin configuración de persistencia, SSL ni encabezados X-forward. El parámetro size puede ser SMALL, MEDIUM o LARGE. El valor predeterminado es SMALL. Después de crear el equilibrador de carga de NSX, no se podrá cambiar el tamaño y se ignorará cualquier actualización del parámetro size. La dirección IP del servidor virtual se asigna a partir del grupo externo de equilibradores de carga predeterminado que se haya configurado. Los puertos predeterminados son el 80 y el 443. Los puertos no estándar son compatibles si el puerto personalizado se incluye en el encabezado HOST HTTP. Tenga en cuenta que los puertos personalizados solo se admiten en entradas que no sean TLS. Además, los servidores virtuales creados por CRD LoadBalancer no admiten el parámetro "enable access log".
kubectl get lb <name of the LoadBalancer> -o yaml
status: conditions: - status: "True" type: Ready httpVirtualIP: <realized virtual IP>
Este resultado indica que la creación se realizó correctamente. Si no se pudo crear, status será False y no habrá una dirección IP virtual.
spec: httpConfig: virtualIP: <ip address, default to auto-allocate> port: <port number, default to 80>
Nota: No debe configurar la misma virtualIP para distintos CRD de LoadBalancer.
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
Puede crear el secreto antes o después de generar LoadBalancer. Para actualizar el certificado, elimine primero secretName de la especificación de LoadBalancer; actualice los datos del secreto y, a continuación, vuelva a asociar el mismo secreto con la configuración anterior. También puede crear un secreto y actualizar secretName. Tenga en cuenta que varios objetos CRD de equilibradores de carga no pueden compartir los mismos datos de secreto. Debe utilizar certificados distintos para configurar los objetos CRD de equilibradores de carga.
kubectl get lbm
- Uso: indica el número de cargas de trabajo del equilibrador de carga de NSX.
- Tráfico: indica las estadísticas globales de cada servidor virtual.
- Estado: este campo tiene dos dimensiones.
- servicePressureIndex: indica el rendimiento del equilibrador de carga. Se proporcionan dos valores: puntuación y gravedad.
- infraPressureIndex: indica el rendimiento de los componentes de la infraestructura subyacente. En NCP 2.5.1, este valor no siempre es preciso.
- El campo metrics ofrece una idea de los parámetros que se tienen en cuenta para calcular la puntuación del estado.
Cuando el valor de servicePressureIndex de un equilibrador de carga es HIGH, puede migrar la carga de trabajo de entrada a otros equilibradores de carga. Puede elegir entre el equilibrador de carga predeterminado o los equilibradores de carga creados con el objeto CRD LoadBalancer.
annotations: nsx/loadbalancer: <name of the LoadBalancer CRD>
Si falta la anotación o se establece como null, la entrada se colocará en el equilibrador de carga de NSX predeterminado.