En esta página se explica cómo controlar el tráfico externo que llega a tus servicios en clústeres de Google Kubernetes Engine (GKE) mediante los niveles de servicio de red. Los niveles de servicio de red te permiten optimizar el tráfico de red para mejorar el rendimiento (nivel Premium) o ahorrar costes (nivel Estándar).
El nivel Premium ofrece tráfico en la red troncal premium de Google para proporcionar una velocidad y una fiabilidad superiores. Por el contrario, el nivel Estándar usa redes de proveedores de Internet normales, lo que ofrece una solución más rentable.
Esta página está dirigida a arquitectos de nube y especialistas en redes que diseñan y definen la arquitectura de la red de su organización. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Cómo funcionan los niveles de servicio de red en GKE
En esta sección se explica cómo gestionar los niveles de servicio de red en GKE.
Definir un nivel de red a nivel de proyecto: puede definir el nivel de red predeterminado de su proyecto Google Cloud para que use el nivel Estándar o el nivel Premium. Todos los clústeres nuevos se crean con el ajuste
network-default
, que hereda el nivel del proyecto. Este ajuste se mantiene durante las actualizaciones del clúster. Los grupos de nodos creados en el clúster heredan el nivel de red de la configuración a nivel de proyecto.Definir un nivel de red al crear clústeres: puedes configurar el nivel de red al crear un clúster, independientemente del nivel que se haya definido en tu Google Cloud proyecto. Los nuevos grupos de nodos usan el nivel de red del clúster y esta configuración se mantiene incluso después de actualizar los grupos de nodos.
Definir un nivel de red al actualizar clústeres: puedes configurar el nivel de red al actualizar un clúster. Los grupos de nodos y los servicios LoadBalancer nuevos heredan la configuración de nivel actualizada, mientras que los grupos de nodos y los servicios ya creados siguen usando la configuración de nivel de red original. La configuración del nivel actualizado se mantiene después de actualizar el clúster.
Definir un nivel de red al actualizar los servicios de tipo LoadBalancer: los servicios de tipo LoadBalancer heredan el nivel de red del clúster. Sin embargo, puedes anular este ajuste y actualizar el nivel de red en el manifiesto de servicio.
Niveles de servicio de red y balanceo de carga
De forma predeterminada, los balanceadores de carga de red de paso a través externos usan el nivel Premium. Puedes actualizar esta configuración para que el servicio LoadBalancer use el nivel Estándar.
Si usas balanceadores de carga de aplicaciones con Gateway, no puedes configurar los niveles de servicio de red. Los niveles de servicio de red de Gateway se controlan mediante el recurso GatewayClass. Para obtener más información, consulta Dirección IP de la puerta de enlace.
Ingress de GKE para balanceadores de carga de aplicaciones externos no admite el nivel Estándar para el enrutamiento del tráfico.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Restricciones
Se aplican las siguientes limitaciones:
- Solo puedes configurar los ajustes de nivel de red a nivel de proyecto o de clúster. No puedes configurar directamente el nivel de red de los grupos de nodos.
- El nivel Estándar no se admite en las direcciones IPv4 o IPv6 de doble pila externas globales. Para obtener más información sobre los tipos de direcciones IP, consulta Direcciones IP.
Crear un clúster con niveles de servicio de red
Para crear un clúster y especificar el nivel de red, ejecuta el siguiente comando:
gcloud container clusters create CLUSTER_NAME \
--network-tier=NETWORK_TIER \
...
Sustituye los siguientes valores:
CLUSTER_NAME
: el nombre de tu clúster.NETWORK_TIER
: el ajuste de nivel de red. Usanetwork-default
para la misma configuración de nivel que en tu proyecto Google Cloud ,Standard
para el nivel Estándar oPremium
para el nivel Premium.
Migrar un clúster a otro nivel
Actualizar el nivel de red de un clúster no afecta al nivel de red de los recursos que ya tenga. Los recursos seguirán usando la dirección IP asociada al nivel de red antiguo. Para evitar interrupciones en el servicio, sigue estos pasos cuando migres tu clúster a un nuevo nivel de red:
Actualiza el clúster: para actualizar un clúster con un nivel de red, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \ --network-tier=NETWORK_TIER \ ...
Sustituye los siguientes valores:
CLUSTER_NAME
: el nombre de tu clúster.NETWORK_TIER
: el ajuste de nivel de red. Usanetwork-default
para la misma configuración de nivel que en tu proyecto Google Cloud ,Standard
para el nivel Estándar oPremium
para el nivel Premium.
Crea grupos de nodos y servicios: para que los clientes externos usen las nuevas direcciones IP asociadas al nuevo nivel de red, debes crear grupos de nodos y servicios LoadBalancer. Los grupos de nodos y los servicios LoadBalancer nuevos heredan la configuración de nivel actualizada, mientras que los grupos de nodos y los servicios ya creados siguen usando la configuración de nivel de red original.
Actualiza los registros DNS: cambia tus registros DNS para que apunten a las nuevas direcciones IP de los nuevos servicios LoadBalancer.
Espera a que se propague el DNS: espera a que caduque el tiempo de vida (TTL) del DNS para asegurarte de que los clientes se dirijan a los nuevos servicios y evitar que se sirvan registros obsoletos.
Actualizar un balanceador de carga externo con niveles de servicio de red
En el caso de los balanceadores de carga de red de paso a través externos, GKE usa de forma predeterminada el nivel de red configurado en el clúster para la regla de reenvío y la dirección IP externas. Si el nivel de red del clúster es network-default
, el balanceador de carga usa el nivel premium. Puedes anular este ajuste configurando la anotación cloud.google.com/network-tier
en el manifiesto del servicio. Por ejemplo:
```yaml
apiVersion: v1
kind: Service
metadata:
name: store-v1-lb-svc
annotations:
cloud.google.com/l4-rbs: "enabled"
cloud.google.com/network-tier: Standard
spec:
type: LoadBalancer
selector:
app: store
ports:
- name: tcp-port
protocol: TCP
port: 8080
targetPort: 8080
```
Para obtener más información sobre los parámetros que se usan en los servicios LoadBalancer, consulta Parámetros de servicio.
Dirección IP estática: cuando creas un servicio con una dirección IP estática, el nivel de red de la dirección IP estática debe coincidir con el nivel de red del servicio LoadBalancer. Si hay alguna discrepancia, verás el siguiente mensaje de error al ejecutar el comando kubectl describe service
:
Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB
Siguientes pasos
- Consulta la descripción general de los niveles de servicio de red.
- Consulta cómo crear un balanceador de carga externo basado en un servicio de backend.