En esta página se describen los parámetros de los manifiestos de servicio que controlan el comportamiento y la configuración de LoadBalancer. Antes de leer esta página, asegúrate de conocer los conceptos de servicio LoadBalancer de Google Kubernetes Engine (GKE).
Parámetros de servicio
GKE admite los siguientes parámetros para los servicios de balanceadores de carga.
Parámetro | Campo de servicio y descripción | Interno | Externo | Compatibilidad con versiones |
---|---|---|---|---|
Balanceador de carga de red de paso a través interno | networking.gke.io/load-balancer-type: "Internal"
Indica a GKE que cree un balanceador de carga de red de paso a través interno. El balanceador de carga usa backends de NEG Para obtener más información, consulta la sección Agrupación de nodos . |
Todas las versiones compatibles. | ||
Balanceador de carga de red de paso a través externo basado en el servicio de backend | cloud.google.com/l4-rbs: "enabled"
Indica a GKE que cree un balanceador de carga de red de paso a través externo basado en un servicio de backend. El balanceador de carga usa Para obtener más información, consulta la sección Agrupación de nodos . |
GKE 1.25.5 | ||
Balanceo de carga ponderado | networking.gke.io/weighted-load-balancing: "pods-per-node"
Permite que los nodos que tienen más pods de servicio reciban una mayor proporción de conexiones nuevas en comparación con los nodos que tienen menos pods de servicio. |
GKE 1.31.0 o versiones posteriores | ||
Política de tráfico interno | spec.internalTrafficPolicy
Si se define como Este parámetro no se admite en los clústeres que ejecutan GKE Dataplane V2. |
GKE 1.22 y versiones posteriores | ||
Política de tráfico externo | spec.externalTrafficPolicy
Controla qué VMs de nodo superan las comprobaciones de estado del balanceador de carga y cómo se enrutan los paquetes a los pods listos y activos del clúster. También controla cómo se agrupan los nodos en Para obtener más información, consulta los conceptos de servicio LoadBalancer. |
GKE 1.14 o versiones posteriores (1.23.4-gke.400 o versiones posteriores para grupos de nodos de Windows). | ||
Afinidad zonal (vista previa) | spec.trafficDistribution
Habilita la afinidad zonal para los servicios LoadBalancer internos. La afinidad de zona controla la zona a la que el balanceador de carga de red con paso a través interno dirige el tráfico entrante de los clientes compatibles cuando es posible una coincidencia de zona. Para usar la afinidad zonal, debes habilitar la creación de subconjuntos de GKE. Para obtener más información, consulta el artículo sobre afinidad de zona y distribución del tráfico. |
GKE 1.33.3-gke.1392000 o versiones posteriores. | ||
Puerto de comprobación del estado | spec.healthCheckNodePort
Despliega una comprobación del estado del balanceador de carga para los servicios LoadBalancer. Este parámetro solo es válido si se asigna el valor |
Todas las versiones compatibles. | ||
Reglas de cortafuegos y lista de permitidas de direcciones IP de origen | spec.loadBalancerSourceRanges
Configura reglas de cortafuegos opcionales en GKE y en la red de VPC para permitir solo determinados intervalos de origen.
|
Todas las versiones compatibles. | ||
Direcciones IP estáticas |
Especifica una dirección IPv4 estática, un intervalo de direcciones IPv6 estáticas o ambas, que se asignan a las reglas de reenvío del balanceador de carga. Consulta Consideraciones para compartir una dirección IP común para obtener información sobre los requisitos de configuración y los detalles de implementación. |
|
||
Niveles de servicio de red | cloud.google.com/network-tier
Especifica qué niveles de servicio de red usa GKE para la regla de reenvío externa y la dirección IP. Los valores válidos de la anotación son |
GKE 1.19 y versiones posteriores. | ||
Subred personalizada |
|
(solo se aplica a IPv6) |
|
|
Acceso global | networking.gke.io/internal-load-balancer-allow-global-access: "true"
Permite que los clientes de cualquier región de la red de VPC o de una red conectada puedan acceder a la dirección IP de la regla de reenvío. |
Vista previa en GKE 1.16+. Disponible para el público general en GKE 1.17.9-gke.600+. | ||
Todos los puertos | GKE configura automáticamente la regla de reenvío para usar todos los puertos si se especifican más de cinco (hasta 100) puertos únicos en |
Versión 1.18.19-gke.1400 de GKE o posterior | ||
ipFamilyPolicy |
Define cómo asigna GKE direcciones IP a un servicio.
Puedes definir Para obtener más información, consulta Servicios de pila dual IPv4/IPv6. |
Los clústeres de GKE con la versión 1.29 o posterior admiten redes de doble pila para los servicios LoadBalancer. | ||
ipFamilies (opcional) |
Define la familia de direcciones IP para asignar servicios de pila única o de pila dual. Usa cualquiera de los siguientes valores:
|
Los clústeres de GKE con la versión 1.29 o posterior admiten redes de doble pila para los servicios LoadBalancer. |
Puerto de comprobación del estado
Como se describe en Comprobaciones del estado de los balanceadores de carga, GKE siempre implementa una comprobación del estado de un balanceador de carga cuando crea un balanceador de carga de red de paso a través externo o interno.
Si puedes configurar el parámetro healthCheckNodePort
o no, depende de la siguiente configuración de externalTrafficPolicy
:
externalTrafficPolicy |
Puerto de comprobación del estado |
---|---|
Cluster |
No puedes usar |
Local |
Puedes seleccionar un puerto personalizado con el
|
Reglas de cortafuegos y lista de permitidas de direcciones IP de origen
A menos que hayas configurado un clúster para omitir la creación de reglas de cortafuegos de VPC para los servicios LoadBalancer, GKE crea una regla de cortafuegos de VPC de entrada para cada servicio.
Cada regla de cortafuegos creada automáticamente tiene las siguientes características:
- La dirección de la regla de cortafuegos es de entrada y su acción es permitir. Las reglas de cortafuegos de entrada de denegación implícita de Google Cloud significan que GKE usa un modelo de lista de permitidos al crear reglas de cortafuegos de entrada.
- GKE asigna el protocolo y el puerto de destino de la regla de cortafuegos a los especificados en la lista
spec.ports[]
del servicio. - GKE configura las reglas de cortafuegos de los servicios LoadBalancer definiendo explícitamente el parámetro de destino en la dirección IP virtual del balanceador de carga (la regla de reenvío del balanceador de carga).
- GKE asigna el valor target parameter de la regla de cortafuegos para incluir todos los nodos del clúster.
- Si el Servicio incluye
spec.loadBalancerSourceRanges[]
, GKE asigna al parámetro de origen de la regla de firewall las direcciones IP de esa lista. Además, GKE configura rutas y reglas en el sistema operativo del nodo para limitar las direcciones IP de origen del tráfico balanceado de carga mediantekube-proxy
yiptables
(Dataplane antiguo) ocilium-agent
y reglas eBPF (GKE Dataplane V2). Si el servicio no incluyeloadBalancerSourceRanges[]
, GKE asigna el parámetro de origen de la regla de firewall a todas las direcciones IP(0.0.0.0/0)
.
Direcciones IP estáticas
Puedes crear una dirección IP estática y configurar GKE para que asigne esa dirección estática a la regla de reenvío del balanceador de carga. Si usas una dirección IP estática, te aseguras de que la dirección IP del balanceador de carga siga siendo la misma aunque hagas cambios en el servicio LoadBalancer.
Sin una dirección IP estática, es posible que GKE asigne una dirección IP diferente a la regla de reenvío del balanceador de carga cuando actualices un servicio LoadBalancer. La dirección IP de la regla de reenvío no es la misma que la dirección spec.clusterIP
del servicio. La dirección ClusterIP de un servicio nunca cambia cuando actualizas un servicio LoadBalancer.
Parámetros de dirección IP estática
Para indicar a un servicio LoadBalancer que use una dirección IP estática, usa el parámetro spec.loadBalancerIP
o la anotación networking.gke.io/load-balancer-ip-addresses
. En GKE 1.29 y versiones posteriores, la anotación tiene prioridad sobre spec.loadBalancerIP
si el manifiesto de Service contiene tanto el parámetro como la anotación.
Parámetro o anotación y valor | Requisitos y funciones |
---|---|
spec.loadBalancerIP: IPv4_ADDRESS
|
Puedes especificar una dirección IPv4 interna estática para un servicio Internal LoadBalancer solo IPv4. Puedes especificar una dirección IPv4 externa estática para un servicio External LoadBalancer solo IPv4. El parámetro funciona con todas las versiones de GKE compatibles. |
networking.gke.io/load-balancer-ip-addresses: IP_ADDRESS_RESOURCE_NAME
|
Puedes especificar una dirección IPv4 estática, un intervalo de direcciones IPv6 estáticas o ambas para los servicios Internal y External LoadBalancer de solo IPv4, solo IPv6 y de doble pila. La anotación requiere GKE 1.29 o una versión posterior, así como los siguientes requisitos adicionales:
|
Consideraciones para compartir una dirección IP común
Dos o más servicios LoadBalancer pueden hacer referencia a la misma dirección IP estática si la regla de reenvío de cada balanceador de carga usa una combinación única de dirección IP, protocolo, especificación de puerto y especificación de niveles de servicio de red, tal como se indica en la tabla de esta sección. También tienes estas opciones:
Las direcciones IPv6 estáticas son en realidad
/96
intervalos de direcciones IPv6, pero GKE solo configura los nodos para que acepten paquetes en la primera dirección IPv6 (/128
) del intervalo/96
.Para que dos o más servicios Internal LoadBalancer utilicen la misma dirección IPv4 interna o el mismo intervalo de direcciones IPv6 internas, la dirección IP estática debe crearse con el
SHARED_LOADBALANCER_VIP
.
Servicio LoadBalancer interno | Servicio LoadBalancer externo | |
---|---|---|
Especificación de puerto | Las reglas de reenvío de los balanceadores de carga de red internos de tipo pasarela admiten hasta cinco números de puerto individuales o se pueden configurar para que usen todos los puertos. Cuando un servicio Internal LoadBalancer tiene más de cinco Las reglas de reenvío con la misma dirección IP y el mismo protocolo no pueden tener puertos superpuestos. Esto significa que no puedes crear varios servicios Internal LoadBalancer que compartan la misma dirección IP, el mismo protocolo y los mismos puertos. Por ejemplo:
Para obtener más información, consulta las reglas de reenvío de balanceadores de carga de red de pases internos que usan una dirección IP común. |
GKE crea un grupo de destino basado en un balanceador de carga de red de paso a través externo si el manifiesto de servicio LoadBalancer no tiene la anotación Las reglas de reenvío de los balanceadores de carga de red de paso a través externos basados en grupos de destino deben usar intervalos de puertos contiguos. El intervalo de puertos contiguo incluye todos los puertos que necesita el servicio, pero también puede incluir puertos adicionales que no utilice el servicio. Por ejemplo, un servicio External LoadBalancer basado en un balanceador de carga de red de paso a través externo basado en un pool de destino que especifica los puertos 80 y 443 en su manifiesto de servicio usa una regla de reenvío del balanceador de carga con un intervalo de puertos de 80 a 443. Este intervalo de puertos evita que otros servicios External LoadBalancer usen los puertos 80 y 443, así como cualquier número entre 80 y 443. GKE crea un balanceador de carga de red de paso a través externo basado en el servicio de backend si el manifiesto del servicio LoadBalancer incluye la anotación |
Niveles de servicio de red | No se puede configurar: las direcciones internas siempre son de nivel Premium. | Se puede configurar para direcciones IPv4 externas regionales estáticas. Los intervalos de direcciones IPv6 externas regionales estáticas solo se pueden crear en el nivel Premium. La especificación de los niveles de servicio de red de la dirección IP externa estática debe coincidir con una de las siguientes opciones:
El nivel predeterminado del proyecto es Premium, a menos que lo hayas configurado de otra forma. |
Reserva de direcciones IP
GKE no reserva las direcciones IP estáticas configuradas mediante la anotación spec.loadBalancerIP
o networking.gke.io/load-balancer-ip-addresses
.
Esto significa que la dirección IP que asignes a tu Servicio se puede liberar cuando se elimine el Servicio.
Para mantener reservada la dirección IP, debes crear manualmente un recurso de dirección en tu proyecto. La dirección IP estática debe tener los siguientes atributos:
- Solo se aceptan donaciones.
- Estar en la misma región que el clúster.
- Estar en los mismos niveles de servicio de red que el servicio LoadBalancer.
- Tener un nombre que no use el nombre de LoadBalancer, prefijos como
k8s-
o el UUID del servicio.
Si no reservas la dirección tú mismo, los registros del proyecto pueden contener entradas sobre los recursos de dirección creados y eliminados poco después. Esto forma parte del aprovisionamiento normal de servicios y es algo que se debe esperar.
Subred de LoadBalancer
Puedes configurar un servicio Internal LoadBalancer para que use una dirección IPv4 efímera o estática, un intervalo de direcciones IPv6 o ambos en una subred personalizada ubicada en la misma región y red de VPC que el clúster. Usa una subred personalizada para un servicio Internal LoadBalancer para lo siguiente:
- Agrupa los balanceadores de carga de red de paso a través internos creados por los servicios Internal LoadBalancer de dos o más clústeres de GKE en la misma red de VPC y región.
- Crea servicios de balanceador de carga interno cuyos balanceadores de carga de red de transferencia internos tengan direcciones IPv4 independientes de las direcciones IPv4 de los nodos del clúster.
- En un clúster de doble pila, crea servicios Internal LoadBalancer cuyos balanceadores de carga de red de transferencia interna tengan intervalos de direcciones IPv6 independientes de las direcciones IPv6 de los nodos y los pods del clúster. Es obligatorio usar una subred LoadBalancer personalizada para admitir servicios LoadBalancer internos si la subred del clúster tiene un intervalo de direcciones IPv6 externo.
Puedes configurar un servicio External LoadBalancer para que use un intervalo de direcciones IPv6 efímero o estático en una subred personalizada ubicada en la misma región y red de VPC que el clúster. Usa una subred personalizada para crear servicios External LoadBalancer cuyos balanceadores de carga de red de paso a través externos tengan intervalos de direcciones IPv6 independientes de las direcciones IPv6 de los nodos y los pods del clúster. Es obligatorio usar una subred LoadBalancer personalizada para admitir servicios LoadBalancer externos en un clúster de doble pila, ya que la subred del clúster tiene un intervalo de direcciones IPv6 internas.
Anotaciones de subred personalizadas
Usa una de las siguientes anotaciones para indicar a un servicio LoadBalancer que utilice una dirección IP efímera o estática en una subred personalizada. Si un manifiesto de servicio LoadBalancer incluye ambas anotaciones, la anotación networking.gke.io/load-balancer-subnet
tiene prioridad siempre que se cumplan sus requisitos.
Anotación y valor | Requisitos y funciones |
---|---|
networking.gke.io/internal-load-balancer-subnet: SUBNET_RESOURCE_NAME
|
Solo puede usar la anotación para especificar una subred personalizada para un servicio Internal LoadBalancer solo IPv4. La anotación funciona con todas las versiones de GKE compatibles. |
networking.gke.io/load-balancer-subnet: SUBNET_RESOURCE_NAME
|
Puedes especificar una subred personalizada para un servicio Internal LoadBalancer de solo IPv4, solo IPv6 o de doble pila. Puedes especificar una subred personalizada para un servicio de balanceador de carga externo de solo IPv6 o de pila dual. La anotación requiere GKE 1.29 o una versión posterior, así como los siguientes requisitos adicionales:
|
Subred y dirección IPv4 de un servicio Internal LoadBalancer
En la siguiente tabla se describen las combinaciones válidas de especificación de subred y dirección IPv4 para un servicio Internal LoadBalancer solo con IPv4 o con pila dual.
Dirección IPv4 estática
|
Dirección IPv4 efímera | |
---|---|---|
Subred personalizada
|
Subred personalizada y dirección IPv4 estática: la dirección IPv4 interna estática debe haberse creado en el intervalo de direcciones IPv4 principal de la subred personalizada. | Subred personalizada y dirección IPv4 efímera: GKE usa una dirección IPv4 interna no asignada en el intervalo de direcciones IPv4 principal de la subred personalizada. |
Subred de clúster | Subred del clúster y dirección IPv4 estática: la dirección IPv4 interna estática debe haberse creado en el intervalo de direcciones IPv4 principal de la subred del clúster. | Subred del clúster y dirección IPv4 efímera: GKE usa una dirección IPv4 interna no asignada en el intervalo de direcciones IPv4 principal de la subred del clúster. |
Subred e intervalo de direcciones IPv6 de un servicio Internal LoadBalancer
En la siguiente tabla se describen las combinaciones válidas de especificación de subred e intervalo de direcciones IPv6 para un servicio de balanceador de carga interno solo IPv6 o de pila dual. Aunque la regla de reenvío IPv6 del balanceador de carga de red de pases interno usa un intervalo de direcciones IPv6 interno /96
, GKE solo configura los nodos para que acepten paquetes cuyo destino coincida con la primera dirección IPv6 (/128
) del intervalo /96
de la regla de reenvío.
Intervalo de direcciones IPv6 estáticas
|
Intervalo de direcciones IPv6 efímeras | |
---|---|---|
Subred de pila dual personalizada
|
Subred personalizada e intervalo de direcciones IPv6 estáticas: el intervalo de direcciones IPv6 internas /96 estáticas debe haberse creado en el intervalo de direcciones IPv6 internas /64 de la subred personalizada.
|
Subred personalizada e intervalo de direcciones IPv6 efímeras:
GKE usa un intervalo de direcciones /96 IPv6
interno no asignado del intervalo de direcciones /64 IPv6
interno de la subred personalizada.
|
Subred de clúster de doble pila
|
Subred del clúster e intervalo de direcciones IPv6 estáticas: el intervalo de direcciones IPv6 internas estáticas /96 debe haberse creado en el intervalo de direcciones IPv6 internas /64 de la subred del clúster.
|
Subred del clúster e intervalo de direcciones IPv6 efímeras:
GKE usa un intervalo de direcciones IPv6 internas /96 no asignado del intervalo de direcciones IPv6 internas /64 de la subred del clúster.
|
Subred y dirección IPv4 de un servicio External LoadBalancer
En el caso de los servicios External LoadBalancer de solo IPv4 y de pila dual, la dirección IPv4 externa (ya sea una dirección IPv4 externa estática o una dirección IPv4 externa efímera) no procede de una subred.
Subred e intervalo de direcciones IPv6 de un servicio External LoadBalancer
En la siguiente tabla se describen las combinaciones válidas de especificación de subred e intervalo de direcciones IPv6 para un servicio External LoadBalancer de solo IPv6 o de pila dual. Aunque la regla de reenvío IPv6 del balanceador de carga de red de pasarela externa usa un intervalo de direcciones IPv6 externas /96
, GKE solo configura los nodos para que acepten paquetes cuyo destino coincida con la primera dirección IPv6 (/128
) del intervalo /96
de la regla de reenvío.
Intervalo de direcciones IPv6 estáticas
|
Intervalo de direcciones IPv6 efímeras | |
---|---|---|
Subred de pila dual personalizada
|
Subred personalizada e intervalo de direcciones IPv6 estáticas: el intervalo de direcciones IPv6 externas estáticas /96 debe haberse creado en el intervalo de direcciones IPv6 externas /64 de la subred personalizada. Los intervalos de direcciones IPv6 externas estáticas solo se pueden crear en el nivel Premium.
|
Subred personalizada e intervalo de direcciones IPv6 efímeras:
GKE usa un intervalo de direcciones /96 IPv6 externas no asignado del intervalo de direcciones /64 IPv6 externas de la subred personalizada.
|
Subred de clúster de doble pila
|
Subred del clúster e intervalo de direcciones IPv6 estáticas: el intervalo de direcciones IPv6 externas /96 estáticas debe haberse creado en el intervalo de direcciones IPv6 externas /64 de la subred del clúster. Los intervalos de direcciones IPv6 externas estáticas solo se pueden crear en el nivel Premium.
|
Subred del clúster e intervalo de direcciones IPv6 efímeras:
GKE usa un intervalo de direcciones /96 IPv6
externas no asignado del intervalo de direcciones /64 IPv6
externas de la subred del clúster.
|
Acceso global
Cuando la anotación networking.gke.io/internal-load-balancer-allow-global-access
es false
o no se especifica en un servicio Internal LoadBalancer, GKE crea un balanceador de carga de red passthrough interno cuya regla de reenvío tiene el acceso global inhabilitado. Si el acceso global está inhabilitado, los clientes que necesiten acceder al balanceador de carga deben estar ubicados en la misma región y red de VPC, o en una red conectada a la red de VPC del clúster.
Cuando la anotación networking.gke.io/internal-load-balancer-allow-global-access
es true
para un servicio Internal LoadBalancer, GKE habilita la opción de acceso global en la regla de reenvío del balanceador de carga de red con paso a través interno.
Los clientes ubicados en cualquier región de la red de VPC o en una red conectada a la red de VPC del clúster pueden acceder al balanceador de carga.
Para obtener más información sobre cómo se aplica el acceso global a los clientes de una red conectada, consulta lo siguiente:
- Acceso de cliente en la documentación del balanceador de carga de red de paso a través interno
- Balanceadores de carga de red de paso a través internos y redes conectadas
Reglas de reenvío de todos los puertos
Las reglas de reenvío de los balanceadores de carga de red internos de tipo pasarela admiten cinco números de puerto únicos o todos los puertos.
En GKE, un servicio de balanceador de carga interno solo puede admitir hasta 100 puertos en el campo spec.ports[].port
de Service. Si un servicio de balanceador de carga interno define hasta cinco puertos, la regla de reenvío incluirá esos puertos específicos. Sin embargo, si el servicio especifica más de cinco puertos, la regla de reenvío se configurará automáticamente para que coincida con todos los puertos. Cuando se configura una regla de reenvío para usar todos los puertos, GKE solo crea reglas de cortafuegos de entrada para los puertos específicos configurados en spec.ports[].port
del servicio.
Para obtener más información sobre las reglas de reenvío del balanceador de carga de red interno de tipo pasarela y las especificaciones de puertos válidas, consulta Reglas de reenvío y especificaciones de puertos.
Servicio de tipo LoadBalancer de doble pila IPv4/IPv6
Puedes crear un servicio LoadBalancer interno o externo que sea de pila única (solo IPv4 o solo IPv6) o de pila dual. Los servicios LoadBalancer de pila única crean una sola regla de reenvío con una dirección IPv4 o IPv6. Los servicios LoadBalancer de doble pila crean dos reglas de reenvío: una con una dirección IPv4 y otra con una dirección IPv6. Para crear un servicio LoadBalancer de doble pila IPv4/IPv6, despliégalo en un clúster de doble pila IPv4/IPv6 y completa una de las siguientes opciones en función del tipo de balanceador de carga que utilices:
- En el caso de los servicios de balanceadores de carga internos, debes tener habilitado el subconjunto de GKE. Para obtener más información, consulta el artículo sobre cómo habilitar la creación de subconjuntos de balanceadores de carga internos.
- En el caso de los servicios LoadBalancer externos, debes usar un balanceador de carga de red de paso a través externo basado en un servicio de backend. Para obtener más información, consulta el artículo sobre el balanceador de carga de red externo basado en el servicio de backend.
En cada servicio, puedes definir las especificaciones ipFamilyPolicy
y ipFamilies
. Para obtener más información, consulta Doble pila IPv4/IPv6.
Restricciones de los servicios LoadBalancer de doble pila
- Los servicios de tipo LoadBalancer con direcciones IPv6 solo se admiten en clústeres con el tipo de pila
ipv4-ipv6
. Para obtener más información, consulta cómo usar una dirección IP de pila dual en un clúster nativo de VPC. Los servicios LoadBalancer creados con una dirección de pila única no se pueden actualizar a servicios de pila dual.
Los servicios LoadBalancer creados con direcciones de pila dual se pueden cambiar a pila única según las siguientes condiciones:
- Un servicio con ipFamilies
["IPv4","IPv6"]
se puede cambiar a un servicio con ipFamiliesIPv4
, pero no aIPv6
. - Un servicio con ipFamilies
["IPv6","IPv4"]
se puede cambiar a un servicio con ipFamiliesIPv6
, pero no aIPv4
.
- Un servicio con ipFamilies