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

En esta página, se muestra cómo controlar la forma en que el tráfico externo llega a tus servicios en los clústeres de Google Kubernetes Engine (GKE) con 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 costos (nivel Estándar).

El nivel Premium canaliza el tráfico en la red troncal premium de Google para brindar una velocidad y confiabilidad superiores. En cambio, el nivel Estándar usa redes de proveedores de servicios de Internet (ISP) comunes que ofrecen una solución más rentable.

Esta página está dirigida a arquitectos de nube y especialistas en herramientas de redes que diseñan la red de su organización. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas comunes de los usuarios de GKE.

Cómo funcionan los niveles de servicio de red en GKE

En esta sección, se muestra cómo administrar los niveles de servicio de red en GKE.

  • Establece un nivel de red a nivel del proyecto: Puedes establecer el nivel de red predeterminado para que tu proyecto Google Cloud use el nivel estándar o el nivel Premium. Todos los clústeres nuevos se crean con el parámetro de configuración network-default, que hereda el parámetro de configuración de nivel del proyecto. Este parámetro de configuración persiste durante las actualizaciones del clúster. Los grupos de nodos creados dentro del clúster heredan el nivel de red de la configuración a nivel del proyecto.

  • Establece un nivel de red cuando crees clústeres nuevos: Puedes configurar el nivel de red cuando crees un clúster nuevo, independientemente de la configuración del nivel en tu proyecto Google Cloud . Los grupos de nodos nuevos usan el nivel de red del clúster, y esta configuración persiste incluso después de que actualizas los grupos de nodos.

  • Establece un nivel de red cuando actualices clústeres: Puedes configurar el nivel de red cuando actualices un clúster existente. Los grupos de nodos y los servicios LoadBalancer nuevos heredan la configuración actualizada del nivel, mientras que los grupos de nodos y los servicios existentes siguen usando la configuración original del nivel de red. La configuración de nivel actualizada persiste después de que actualizas el clúster.

  • Establece un nivel de red cuando actualices los servicios LoadBalancer: Los servicios LoadBalancer heredan el nivel de red del clúster. Sin embargo, puedes anular este parámetro de configuración y actualizar el nivel de red en el manifiesto del servicio.

Niveles de servicio de red y balanceo de cargas

De forma predeterminada, los balanceadores de cargas de red de transferencia externos usan el nivel Premium. Puedes actualizar esta configuración para que el servicio de LoadBalancer use el nivel Estándar.

Si usas balanceadores de cargas de aplicaciones con Gateway, no puedes configurar los niveles de servicio de red. Los niveles de servicio de red en Gateway se controlan con el recurso GatewayClass. Para obtener más información, consulta Dirección IP de la puerta de enlace.

Ingress de GKE para balanceadores de cargas de aplicaciones externos no admite el nivel Estándar para el enrutamiento del tráfico.

Antes de comenzar

Antes de comenzar, asegúrate de haber 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, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

Restricciones

Se aplican las siguientes restricciones:

  • Solo puedes configurar los parámetros del nivel de red a nivel del proyecto o del clúster. No puedes configurar el nivel de red de los grupos de nodos directamente.
  • El nivel Estándar no admite direcciones IPv4 o IPv6 externas globales de pila doble. Para obtener más información sobre los tipos de direcciones IP, consulta Direcciones IP.

Crea 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 \
     ...

Reemplaza los siguientes valores:

  • CLUSTER_NAME: El nombre de tu clúster.
  • NETWORK_TIER: Es el parámetro de configuración del nivel de red. Usa network-default para el mismo parámetro de configuración de nivel que el de tu proyecto Google Cloud , Standard para el nivel Estándar o Premium para el nivel Premium.

Migra un clúster existente a un nivel diferente

La actualización del nivel de red de un clúster no afecta el nivel de red de los recursos existentes. Los recursos existentes seguirán usando la dirección IP asociada con el nivel de red anterior. Para evitar interrupciones del 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 existente con un nivel de red, ejecuta el siguiente comando:

    gcloud container clusters update CLUSTER_NAME \
        --network-tier=NETWORK_TIER \
        ...
    

    Reemplaza los siguientes valores:

    • CLUSTER_NAME: El nombre de tu clúster.
    • NETWORK_TIER: Es el parámetro de configuración del nivel de red. Usa network-default para el mismo parámetro de configuración de nivel que el de tu proyecto Google Cloud , Standard para el nivel Estándar o Premium para el nivel Premium.
  2. Crea nuevos grupos de nodos y servicios: Para que los clientes externos usen las nuevas direcciones IP asociadas con el nuevo nivel de red, debes crear nuevos grupos de nodos y nuevos servicios de LoadBalancer. Los grupos de nodos y los servicios LoadBalancer nuevos heredan la configuración actualizada del nivel, mientras que los grupos de nodos y los servicios existentes siguen usando la configuración original del nivel de red.

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

  4. Espera a que se propague el DNS: Espera a que venza el tiempo de actividad (TTL) del DNS para asegurarte de que los clientes se dirijan a los servicios nuevos y evitar que se publiquen registros obsoletos.

Actualiza un balanceador de cargas externo con niveles de servicio de red

En el caso de los balanceadores de cargas de red de transferencia externos, GKE usa de forma predeterminada el nivel de red configurado en el clúster para la regla de reenvío externa y la dirección IP. Si el nivel de red del clúster está establecido en network-default, el balanceador de cargas usa el nivel Premium. Puedes anular este parámetro de configuración si configuras 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 para los Services LoadBalancer, consulta Parámetros de Service.

Dirección IP estática: Cuando creas un Service 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 Service LoadBalancer. Si hay una discrepancia, verás el siguiente mensaje de error cuando ejecutes 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

¿Qué sigue?