Configuración de una ruta privada Network Load Balancer for VPC
Nube privada virtual 4.16 y más tarde
En entornos VPC totalmente privados sin acceso público a Internet, puede utilizar un Private Path Network Load Balancer para equilibrar el tráfico de red que fluye hacia las aplicaciones que se ejecutan en sus clústeres VPC. Para más información, consulte los casos de uso del servicio Private Path.
Requisitos previos
-
Si aún no tiene una aplicación en ejecución, despliegue una aplicación en su clúster. Asegúrese de añadir una etiqueta en la sección de metadatos del archivo de configuración de despliegue. Esta etiqueta personalizada identifica todos los pods en los que se ejecuta la app para incluirlos en el equilibrio de carga.
Configuración del servicio LoadBalancer
-
Copia la
LoadBalancerconfiguración y guárdala en un archivo llamadolb.yaml.apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "private-path" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster. -
Personalice los campos para su caso de uso. Para consultar la lista completa de anotaciones, véase Anotaciones y especificaciones.
-
Guarde los cambios.
-
Despliegue el servicio Load Balancer en su cluster.
oc apply -f lb.yaml
Creación de un servicio Private Path
Siga las instrucciones para Crear un servicio Private Path.
Configuración de una puerta de enlace virtual
Ahora que ha configurado un servicio Load Balancer, debe configurar un Virtual Private Endpoint (VPE) Gateway para acceder a las aplicaciones de su clúster.
Para obtener más información, consulte Creación de una pasarela de puntos finales en la interfaz de usuario.
Conexión a sus aplicaciones a través de su VPE
Para obtener información sobre cómo conectarse a sus aplicaciones a través de su VPE, consulte Acceso a su endpoint privado virtual después de configurar su puerta de enlace de endpoint.
Anotaciones y especificaciones
Revise las anotaciones y especificaciones requeridas y opcionales de VPC NLB.
Anotaciones y especificaciones requeridas
externalTrafficPolicy- Especifique
LocaloCluster. - Establezca en
Localpara conservar la dirección IP de origen de las solicitudes de cliente a las apps. Esta configuración impide que el tráfico entrante se reenvíe a un nodo diferente. Esta opción también configura las comprobaciones de estado de HTTP. - Si se establece
Cluster, DSR se implementa solo desde el nodo trabajador al que el VPC NLB reenvía primero la solicitud entrante. Una vez recibida la solicitud, ésta se reenvía a un nodo trabajador que contiene el pod de aplicación, que puede estar en una zona diferente. La respuesta del pod de app se envía al nodo trabajador original, y ese nodo trabajador utiliza DSR para enviar la respuesta directamente al cliente, pasando por alto el VPC NLB. Esta opción también configura las comprobaciones de estado de TCP.
Anotaciones y especificaciones opcionales
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name- Incluya un nombre único para que su equilibrador de carga VPC sea persistente. Los balanceadores de carga VPC persistentes no se eliminan cuando se elimina el clúster al que pertenecen. Para obtener más información, consulte Balanceadores de carga VPC persistentes. Esta anotación sólo puede establecerse al crear el equilibrador de carga. No puede utilizarse en una operación de actualización.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Esta anotación establece el protocolo de comprobación de estado en el recurso de equilibrador de carga de VPC asociado con el servicio de equilibrador de carga Kubernetes. Las opciones disponibles son
http,httpsotcp. Normalmente, el protocolo de comprobación de estado de VPC LB viene determinado por el valor de la configuraciónexternalTrafficPolicyen la especificación del servicio del equilibrador de carga Kubernetes. Sin embargo, esta anotación anula esa lógica. Esta anotación no altera cómo Kubernetes, y kube-proxy en particular, se comporta con respecto a las diversas configuraciones deexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- El puerto TCP que se utiliza para las comprobaciones de estado. Esta anotación sólo se aplica si también se especifica
ibm-load-balancer-cloud-provider-vpc-health-check-protocol. Si el puerto TCP especificado se encuentra fuera del rango de puertos de los nodos Kubernetes (30 000-32 767), será necesario modificar el grupo de seguridad de la VPC aplicado a los nodos de trabajo del clúster para permitir el tráfico entrante en dicho puerto. Si esta anotación se aplica a un servicio de equilibrado de carga de « Kubernetes » asociado a un VPC ALB, es necesario modificar las reglas de salida del grupo de seguridad asignado al VPC ALB para permitir el tráfico saliente hacia el puerto TCP especificado. Para obtener más información, consulte Comprensión de las redes VPC de clúster seguras por defecto y Creación y gestión de grupos de seguridad VPC. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Anotación para especificar qué subred utilizar para asignar las direcciones IP para ppNLB. Estas direcciones IP sólo se utilizan internamente. El valor puede ser un ID de subred de VPC, un nombre de subred de VPC o un CIDR de subred de VPC.
Solo debe especificar una subred. Todo el tráfico entrante parece provenir de estas direcciones IP. Aunque todas las direcciones están en una única zona, el ppNLB sigue gestionando el tráfico entrante de todas las zonas. Si esta zona específica
deja de funcionar, el tráfico entrante de las otras zonas sigue funcionando. Si no especifica esta anotación, la subred se selecciona automáticamente y se utiliza la subred del nodo trabajador del clúster que tenga más direcciones IP libres
disponibles. Para ver las subredes de todos los grupos de recursos, ejecute
ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector- Anotación para especificar un selector de etiquetas de nodos de trabajo. Puede configurar nodos de trabajo específicos en su clúster para recibir tráfico especificando claves de selección de etiquetas. Solo se puede incluir un selector de
etiqueta en la anotación, y dicho selector debe especificarse en el formato
"key=value". Si no se especifica esta anotación, todos los nodos de trabajo del clúster se configuran para recibir tráfico procedente del VPC NLB. Esta anotación tiene prioridad sobre la anotaciónservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone, y se ignoran las etiquetasdedicated: edgede los nodos de trabajo. Para limitar el tráfico a una zona específica, puede utilizar esta anotación para especificar nodos trabajadores en esa zona. Tenga en cuenta que el establecimiento de una nueva etiqueta en un nodo trabajador del clúster no configura automáticamente el nodo trabajador para recibir tráfico; debe volver a crear o actualizar el NLB de la VPC para que el nodo trabajador recién etiquetado reciba tráfico. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- La ruta de comprobación de salud URL para las comprobaciones de salud HTTP y HTTPs. Esta anotación sólo se aplica si
ibm-load-balancer-cloud-provider-vpc-health-check-protocolse establece enhttpohttps. La ruta URL debe tener el formato de un destino de solicitud origen-forma. Si no se especifica esta anotación y la anotaciónibm-load-balancer-cloud-provider-vpc-health-check-protocolse establece enhttpohttps, se aplica el valor por defecto/. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Opcional. El número de segundos que hay que esperar entre los intentos de chequeo. Por defecto, este valor se establece en
5, y tiene un mínimo de2y un máximo de60. Este valor debe ser mayor que el valoribm-load-balancer-cloud-provider-vpc-health-check-timeout, que se establece en2por defecto. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Opcional. El número de segundos que hay que esperar para recibir una respuesta a una comprobación de estado. Por defecto, este valor se establece en
2, y tiene un mínimo de1y un máximo de59. Este valor debe ser inferior aibm-load-balancer-cloud-provider-vpc-health-check-delay, que se establece en5por defecto. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- Número máximo de reintentos de comprobación de estado para el equilibrador de carga de la VPC. Por defecto, este valor se establece en
2, y tiene un mínimo de1y un máximo de10. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Opcional. Número de nodos trabajadores por zona a los que se dirige el equilibrador de carga. El valor predeterminado es 8. En el caso de un clúster con nodos de trabajo en tres zonas, esto hace que el equilibrador de carga dirija el tráfico a un total de 24 nodos de trabajo. El número total de nodos trabajadores de todas las zonas a los que se dirige el equilibrador de carga no puede superar los 50. Si el clúster tiene menos de 50 nodos trabajadores en todas las zonas, especifique 0 para enrutar a todos los nodos trabajadores de una zona.
selector- La clave de etiqueta (
<selector_key>) y el valor (<selector_value>) que ha utilizado en la secciónspec.template.metadata.labelsdel YAML de despliegue de aplicación. Esta etiqueta personalizada identifica todos los pods en los que se ejecuta la app para incluirlos en el equilibrio de carga. port- El puerto que en el que está a la escucha el servicio.
targetPort- Opcional: el puerto al que el servicio dirige el tráfico. La aplicación que se ejecuta en el pod debe estar a la escucha del tráfico entrante TCP en este puerto de destino. El puerto de destino suele definirse estáticamente en la imagen que se ejecuta en el pod de aplicación. El puerto de destino configurado en el pod es diferente del puerto de nodo para el servicio y también podría ser diferente del puerto externo que está configurado en la VPC LB.