Descripción general
Puedes crear un balanceador de cargas TCP/UDP si creas un servicio con type: LoadBalancer
en su especificación. En esta página, se explican los parámetros que puedes usar para configurar los servicios de LoadBalancer. Para obtener más información sobre los balanceadores de cargas internos, consulta Usa un balanceador de cargas de red de transferencia interno.
Para obtener más información específica sobre los balanceadores de cargas externos, consulta cómo exponer aplicaciones mediante servicios.
Parámetros de servicio
Los siguientes parámetros son compatibles con los servicios de balanceadores de cargas de Google Kubernetes Engine (GKE).
Función | Descripción general | Campo de servicio | Compatibilidad con la versión de GKE |
---|---|---|---|
Política de tráfico interno | Habilita las restricciones de tráfico interno para enrutar el tráfico interno solo a los extremos dentro del nodo desde el que se originó el tráfico. Este parámetro no es compatible con clústeres que ejecutan GKE Dataplane V2. | spec:internalTrafficPolicy |
GKE 1.22+ |
Política de tráfico externo | Configura si el tráfico externo tiene balanceo de cargas en los nodos de GKE. | spec:externalTrafficPolicy |
GKE 1.14+ (1.23.4-gke.400+ para el grupo de nodos de Windows) |
Rangos de origen del balanceador de cargas | Configura reglas de firewall opcionales en GKE y en la VPC para permitir solo ciertos rangos de origen. | spec:loadBalancerSourceRanges |
Todas las versiones compatibles |
IP del balanceador de cargas | Especifica una IP para los balanceadores de cargas. | spec:loadBalancerIP |
Todas las versiones compatibles |
Todos los puertos | La capacidad del balanceador de cargas de TCP/UDP para reenviar todos los puertos, en lugar de puertos específicos | N/A | Para los balanceadores de cargas de red de transferencia internos compatibles con la subdivisión. Para los balanceadores de cargas externos compatibles con todas las versiones. |
Niveles de servicio de red | Indica el nivel de red que debe usar un balanceador de cargas
de Google Cloud. Los valores válidos son Standard y
Premium (valor predeterminado). |
metadata:annotations:cloud.google.com/network-tier |
GKE 1.19 o superior |
Política de tráfico externo
La externalTrafficPolicy
es una opción de servicio estándar que define cómo y si el tráfico entrante a un nodo de GKE tiene balanceo de cargas. Cluster
es la política predeterminada, pero a menudo se usa Local
para conservar la IP de origen del tráfico que ingresa a un nodo del clúster. Local
inhabilita de manera eficaz el balanceo de cargas en el nodo del clúster para que el tráfico que recibe un pod local vea la dirección IP de origen original.
externalTrafficPolicy
es compatible con los servicios de LoadBalancer internos (a través del balanceador de cargas de TCP/UDP), pero el comportamiento del balanceo de cargas depende del origen del tráfico y de la política de tráfico configurada.
El tráfico proveniente del exterior del clúster a un balanceador de cargas TCP/UDP tendrá el siguiente comportamiento si hay al menos un pod en buen estado del servicio en el clúster:
- Política
Cluster
: El tráfico se balanceará a cualquier nodo de GKE en buen estado en el clúster y, luego, kube-proxy lo enviará a un nodo con el pod. - Política
Local
: Los nodos que no tienen uno de los pods de backend aparecen como en mal estado para el balanceador de cargas TCP/UDP. El tráfico solo se enviará a uno de los nodos del clúster restantes que tenga el pod. Kube-proxy no vuelve a enrutar el tráfico y, en su lugar, se enviará directamente al pod local con su información de encabezado de IP intacta.
Si el tráfico a una IP de servicio LoadBalancer determinada proviene de un nodo de GKE dentro del clúster, existe un comportamiento de tráfico diferente. En la siguiente tabla, se resume el comportamiento del tráfico proveniente de un nodo o pod dentro del clúster destinado a un pod miembro de un servicio LoadBalancer:
externalTrafficPolicy | ¿Pod miembro del servicio que se ejecuta en el mismo nodo donde se origina el tráfico? | Comportamiento del tráfico |
---|---|---|
Clúster | Sí | Los paquetes se entregan a cualquier pod miembro, ya sea en el nodo o en otro diferente. |
Clúster | No | Los paquetes se entregan a cualquier pod miembro, que debe estar en un nodo diferente. |
Local | Sí | Los paquetes se entregan a cualquier pod miembro en el mismo nodo. |
Local | No | Kubernetes versión 1.14 y anteriores: los paquetes se descartan. Kubernetes versión 1.15 y posterior: Los paquetes se entregan a cualquier pod miembro, que debe estar en un nodo diferente. |
Rangos de origen del balanceador de cargas
El array spec: loadBalancerSourceRanges
especifica uno o más rangos de direcciones IP internas o externas. loadBalancerSourceRanges
restringe el tráfico a través del balanceador de cargas a las IP especificadas en este campo. Con esta configuración, kube-proxy
crea las reglas de iptables correspondientes en los nodos de Kubernetes.
GKE también crea de forma automática una regla de firewall en tu red de VPC. Si omites este campo, tu servicio acepta el tráfico de cualquier dirección IP (0.0.0.0/0
).
Para obtener más información sobre la especificación del servicio, consulta la referencia de la API de servicio.
IP del balanceador de cargas
spec: loadBalancerIP
habilita la opción de elegir una dirección IP específica para el balanceador de cargas. Otro balanceador de cargas de red de transferencia interno o Service no debe usar la dirección IP. Si se omite, se asigna una IP efímera. Para obtener más información, consulta Reserva una dirección IP interna estática.
Si la dirección IP en spec: loadBalancerIP
es una IP de nivel Estándar,
la anotación cloud.google.com/network-tier
con valor Standard
es obligatoria,
ya que Google Kubernetes Engine debe crear una Regla de reenvío con el mismo nivel de red
que la dirección IP especificada.
Desde Google Kubernetes Engine 1.17 o una versión superior, el nivel de red predeterminado para crear reglas de reenvío
es Premium
, sin importar el nivel de red predeterminado del proyecto.
Todos los puertos
El controlador de GKE establece de forma automática el campo allPorts en la regla de reenvío si hay 5 o más puertos en la especificación del servicio en las versiones 1.20.6 y posteriores de GKE o en las versiones 1.21 y posteriores. Este comportamiento también está disponible en las versiones 1.18 y posteriores de GKE y en las versiones 1.19 y posteriores si habilitas la subdivisión del balanceador de cargas de red de transferencia interno en el clúster.
Si creas un balanceador de cargas de red de transferencia interno de forma manual, puedes elegir el grupo de instancias de los nodos de Google Kubernetes Engine como backend. Los servicios de Kubernetes de type: NodePort
están disponibles a través del balanceador de cargas de red de transferencia interno.
Niveles de servicio de red
La anotación cloud.google.com/network-tier
especifica qué nivel de servicio de red se debe usar para la regla de reenvío externa y la dirección IP en GKE versión 1.19 y versiones posteriores. Los valores válidos incluyen Estándar y Premium. El valor predeterminado es Premium.
Esta anotación solo es compatible con balanceadores de cargas externos.
¿Qué sigue?
- Consulta la descripción general de la red GKE.
- Más información sobre el balanceador de cargas de Compute Engine.
- Obtén más información sobre los balanceadores de cargas internos.
- Obtén información sobre cómo exponer aplicaciones de forma externa mediante servicios.