Configurer le trafic externe avec les niveaux de service réseau

Cette page explique comment contrôler la manière dont le trafic externe atteint vos services sur les clusters Google Kubernetes Engine (GKE) à l'aide des niveaux de service réseau. Les niveaux de service réseau vous permettent d'optimiser le trafic réseau en fonction des performances (niveau Premium) ou des économies (niveau Standard).

Le niveau Premium achemine le trafic sur le réseau backbone Premium de Google pour une vitesse et une fiabilité supérieures. En revanche, le niveau Standard utilise les réseaux ordinaires des fournisseurs d'accès à Internet (FAI), ce qui constitue une solution plus économique.

Cette page s'adresse aux architectes cloud et aux spécialistes de la mise en réseau qui conçoivent et implémentent le réseau de leur organisation. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE.

Fonctionnement des niveaux de service réseau dans GKE

Cette section explique comment gérer les niveaux de service réseau dans GKE.

  • Définir un niveau de réseau au niveau du projet : vous pouvez définir le niveau de réseau par défaut de votre projet Google Cloud sur le niveau Standard ou Premium. Tous les nouveaux clusters sont créés avec le paramètre network-default, qui hérite du paramètre de niveau au niveau du projet. Ce paramètre persiste lors des mises à niveau du cluster. Les pools de nœuds créés dans le cluster héritent du niveau de réseau de la configuration au niveau du projet.

  • Définissez un niveau réseau lorsque vous créez des clusters : vous pouvez configurer le niveau réseau lorsque vous créez un cluster, quel que soit le paramètre de niveau de votre projet Google Cloud . Les nouveaux pools de nœuds utilisent le niveau réseau du cluster, et cette configuration persiste même après la mise à niveau des pools de nœuds.

  • Définir un niveau réseau lors de la mise à jour des clusters : vous pouvez configurer le niveau réseau lorsque vous mettez à jour un cluster existant. Les nouveaux pools de nœuds et les nouveaux services LoadBalancer héritent de la configuration mise à jour du niveau, tandis que les pools de nœuds et les services existants continuent d'utiliser la configuration d'origine du niveau réseau. La configuration de niveau mise à jour persiste après la mise à niveau de votre cluster.

  • Définir un niveau de réseau lors de la mise à jour des services LoadBalancer : les services LoadBalancer héritent du niveau de réseau du cluster. Toutefois, vous pouvez remplacer ce paramètre et mettre à jour le niveau de réseau dans le fichier manifeste du service.

Niveaux de service réseau et équilibrage de charge

Par défaut, les équilibreurs de charge réseau passthrough externes utilisent le niveau Premium. Vous pouvez mettre à jour cette configuration afin que le service LoadBalancer utilise le niveau Standard.

Si vous utilisez des équilibreurs de charge d'application avec Gateway, vous ne pouvez pas configurer les niveaux de service réseau. Les niveaux de service réseau sur la passerelle sont contrôlés par la ressource GatewayClass. Pour en savoir plus, consultez Adresse IP de la passerelle.

GKE Ingress pour les équilibreurs de charge d'application externes n'est pas compatible avec le niveau Standard pour le routage du trafic.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez précédemment installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update.

Restrictions

Les restrictions suivantes s'appliquent :

  • Vous ne pouvez configurer les paramètres de niveau de réseau qu'au niveau du projet ou du cluster. Vous ne pouvez pas configurer directement le niveau de réseau des pools de nœuds.
  • Le niveau Standard n'est pas compatible avec les adresses IPv4 ou IPv6 à double pile externes globales. Pour en savoir plus sur les types d'adresses IP, consultez Adresses IP.

Créer un cluster avec des niveaux de service réseau

Pour créer un cluster et spécifier le niveau de réseau, exécutez la commande suivante :

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

Remplacez les valeurs suivantes :

  • CLUSTER_NAME : nom du cluster
  • NETWORK_TIER : paramètre du niveau de réseau. Utilisez network-default pour le même paramètre de niveau que celui de votre projet Google Cloud , Standard pour le niveau Standard ou Premium pour le niveau Premium.

Migrer un cluster existant vers un autre niveau

La modification du niveau de réseau d'un cluster n'a aucune incidence sur le niveau de réseau des ressources existantes. Les ressources existantes continuent d'utiliser l'adresse IP associée à l'ancien niveau de réseau. Pour éviter toute interruption de service, procédez comme suit lorsque vous migrez votre cluster vers un nouveau niveau de réseau :

  1. Mettez à jour le cluster : pour mettre à jour un cluster existant avec un niveau de réseau, exécutez la commande suivante :

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

    Remplacez les valeurs suivantes :

    • CLUSTER_NAME : nom du cluster
    • NETWORK_TIER : paramètre du niveau de réseau. Utilisez network-default pour le même paramètre de niveau que celui de votre projet Google Cloud , Standard pour le niveau Standard ou Premium pour le niveau Premium.
  2. Créez des pools de nœuds et des services : pour que les clients externes utilisent les nouvelles adresses IP associées au nouveau niveau de réseau, vous devez créer des pools de nœuds et des services LoadBalancer. Les nouveaux pools de nœuds et les nouveaux services LoadBalancer héritent de la configuration de niveau mise à jour, tandis que les pools de nœuds et les services existants continuent d'utiliser la configuration de niveau réseau d'origine.

  3. Mettez à jour les enregistrements DNS : modifiez vos enregistrements DNS pour qu'ils pointent vers les nouvelles adresses IP des nouveaux services LoadBalancer.

  4. Attendez la propagation du DNS : attendez l'expiration du TTL (Time To Live) du DNS pour vous assurer que les clients sont redirigés vers les nouveaux services et éviter de diffuser des enregistrements obsolètes.

Mettre à jour un équilibreur de charge externe avec les niveaux de service réseau

Pour les équilibreurs de charge réseau passthrough externes, GKE utilise par défaut le niveau réseau configuré sur le cluster pour la règle de transfert externe et l'adresse IP. Si le niveau de réseau du cluster est défini sur network-default, l'équilibreur de charge utilise le niveau Premium. Vous pouvez remplacer ce paramètre en configurant l'annotation cloud.google.com/network-tier dans le fichier manifeste du service. Exemple :

    ```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
    ```

Pour en savoir plus sur les paramètres utilisés pour les services LoadBalancer, consultez Paramètres de service.

Adresse IP statique : lorsque vous créez un service avec une adresse IP statique, le niveau de service réseau de l'adresse IP statique doit correspondre à celui du service LoadBalancer. En cas d'incohérence, le message d'erreur suivant s'affiche lorsque vous exécutez la commande kubectl describe service :

Error syncing load balancer: failed to ensure load balancer: requested ip "standard-service" is neither static nor assigned to the LB

Étapes suivantes