Configurar el tráfico externo con niveles de servicio de red

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. Usa network-default para la misma configuración de nivel que en tu proyecto Google Cloud , Standard para el nivel Estándar o Premium 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:

  1. 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. Usa network-default para la misma configuración de nivel que en tu proyecto Google Cloud , Standard para el nivel Estándar o Premium para el nivel Premium.
  2. 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.

  3. Actualiza los registros DNS: cambia tus registros DNS para que apunten a las nuevas direcciones IP de los nuevos servicios LoadBalancer.

  4. 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