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 votre trafic réseau en fonction des performances (niveau Premium) ou des économies (niveau Standard).

Avec le niveau Premium, le trafic est acheminé via le réseau principal Premium de Google, ce qui offre 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 pour leur organisation. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans Google Cloud le contenu, 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 sur le niveau Standard ou Niveau Premium. Google Cloud 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éfinir un niveau de réseau lors de la création de clusters : vous pouvez configurer le niveau de réseau lorsque vous créez un cluster, quel que soit le paramètre de niveau de votre Google Cloud projet. Les nouveaux pools de nœuds utilisent le niveau de réseau au niveau du cluster, et cette configuration persiste même après la mise à niveau des pools de nœuds.

  • Définir un niveau de réseau lors de la mise à jour de clusters : vous pouvez configurer le niveau de 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 de niveau mise à jour, tandis que les pools de nœuds et les services existants continuent d'utiliser la configuration de niveau de réseau d'origine. 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 à la place.

Si vous utilisez des équilibreurs de charge d'application avec une passerelle, 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 la section 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 la Google Cloud CLI pour cette tâche, installez et initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

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 externes globales à double pile. Pour en savoir plus sur les types d'adresses IP, consultez la section 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 de niveau de réseau Utilisez network-default pour le même paramètre de niveau que celui de votre Google Cloud projet, Standard pour le niveau Standard ou Premium pour le niveau Premium.

Migrer un cluster existant vers un autre niveau

La mise à jour du niveau de réseau d'un cluster n'a pas d'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 les interruptions de service, procédez comme suit lorsque vous migrez votre cluster vers un nouveau niveau de réseau :

  1. Mettre à 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 de niveau de réseau Utilisez network-default pour le même paramètre de niveau que celui de votre Google Cloud projet, Standard pour le niveau Standard ou Premium pour le niveau Premium.
  2. Créer 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 de réseau d'origine.

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

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

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

Pour les équilibreurs de charge réseau passthrough externes, GKE utilise par défaut le niveau de 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/network-tier: Standard
    spec:
      type: LoadBalancer
      loadBalancerClass: networking.gke.io/l4-regional-external
      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 la section Paramètres de service.

Adresse IP statique : lorsque vous créez un service avec une adresse IP statique, le niveau de réseau de l'adresse IP statique doit correspondre au niveau de réseau du service LoadBalancer. En cas de non-concordance, 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

Étape suivante