Ajouter des sous-réseaux aux clusters

Cette page vous explique comment attribuer des sous-réseaux supplémentaires à un cluster de VPC natif. Les sous-réseaux supplémentaires attribués à un cluster vous permettent de créer des pools de nœuds dans lesquels les adresses IPv4 des nœuds et des pods proviennent des plages de sous-réseaux supplémentaires.

Cette page s'adresse 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 le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE.

Présentation

Lorsque vous créez un cluster GKE de VPC natif, vous sélectionnez un sous-réseau par défaut pour le cluster. Le sous-réseau par défaut du cluster fournit des adresses IPv4 pour les nœuds, les pods et les services, comme décrit dans Plages d'adresses IP pour les clusters de VPC natif.

Vous pouvez attribuer jusqu'à huit sous-réseaux supplémentaires à un cluster de VPC natif, ce qui permet une croissance importante du cluster. Chaque sous-réseau supplémentaire nouvellement attribué est appelé sous-réseau non défini par défaut.

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

Conditions requises et limites

Cette section décrit les exigences et les limites qui s'appliquent lorsque vous attribuez et utilisez des sous-réseaux supplémentaires à un cluster. Vous devez remplir toutes les conditions requises avant d'attribuer des sous-réseaux supplémentaires.

  • Assurez-vous que votre cluster GKE est un cluster de VPC natif qui exécute GKE version 1.30.3-gke.1211000 ou ultérieure. Les clusters basés sur le routage et les clusters sur les anciens réseaux ne sont pas compatibles avec les sous-réseaux supplémentaires.
  • Vous pouvez attribuer jusqu'à huit sous-réseaux supplémentaires par cluster.
  • Les sous-réseaux supplémentaires ne fournissent que des adresses IPv4 pour les nœuds et les pods. Vous ne pouvez pas utiliser de sous-réseaux supplémentaires pour fournir des adresses IPv6 aux nœuds ou aux pods.
  • Seuls les nouveaux pools de nœuds peuvent utiliser les sous-réseaux supplémentaires, et non les pools de nœuds existants. Lorsque vous créez un pool de nœuds et que plusieurs sous-réseaux non définis par défaut sont disponibles, GKE sélectionne le sous-réseau le mieux adapté au pool de nœuds en fonction des exigences en termes d'adresses IP et de la disponibilité des adresses IP dans tous les sous-réseaux du cluster.
  • Vous ne pouvez pas contrôler le sous-réseau autre que celui par défaut qu'un nouveau pool de nœuds utilise. Par exemple, si votre cluster comporte un sous-réseau par défaut (celui utilisé lors de la création du cluster) et deux sous-réseaux non par défaut, vous ne pouvez pas spécifier lequel des sous-réseaux non par défaut un nouveau pool de nœuds doit utiliser.
  • Les plages d'adresses IPv4 secondaires de sous-réseau dans un sous-réseau non défini par défaut ne peuvent être utilisées que par un seul cluster.
  • Les sous-réseaux supplémentaires ne peuvent pas être utilisés avec les passerelles multiclusters.
  • Si vous utilisez la compatibilité multiréseau pour les pods, les plages d'adresses IPv4 principale et de pod d'un sous-réseau supplémentaire ne doivent pas chevaucher les plages CIDR configurées dans votre configuration multiréseau. Les sous-réseaux supplémentaires que vous configurez ne s'appliquent qu'au réseau par défaut. Cette limitation signifie que les interfaces réseau supplémentaires sur vos nœuds et pods ne peuvent pas utiliser les adresses IP fournies par ces sous-réseaux supplémentaires.
  • Lorsque vous ajoutez un sous-réseau à des clusters pour lesquels Cloud Service Mesh est activé, le maillage ne peut pas acheminer le trafic vers les pods du sous-réseau non défini par défaut.

Exigences relatives à l'équilibreur de charge pour les clusters avec des sous-réseaux supplémentaires

Cette section décrit les exigences relatives à l'équilibreur de charge qui s'appliquent lorsque vous utilisez des sous-réseaux supplémentaires sur votre cluster. Ces exigences s'appliquent chaque fois que vous créez un service Ingress externe, une passerelle externe ou un service LoadBalancer externe.

  • Pour utiliser un service Ingress, Gateway ou LoadBalancer externe dans un cluster avec des sous-réseaux supplémentaires, votre cluster doit exécuter GKE version 1.33.2-gke.4780000 ou ultérieure.
  • Les objets Ingress externes utilisant le contrôleur GKE Ingress doivent utiliser l'équilibrage de charge natif en conteneur.
  • Activez le sous-paramètre GKE pour les services LoadBalancer internes. Le sous-paramètre GKE n'affecte que les nouveaux services LoadBalancer internes. Par conséquent, vous devez supprimer et recréer tous les services existants dans votre cluster après avoir activé le sous-paramètre GKE.
  • Pour créer un équilibreur de charge réseau passthrough externe basé sur un service de backend, les nouveaux services LoadBalancer externes doivent inclure l'annotation cloud.google.com/l4-rbs: "enabled". Cette annotation n'affecte que les nouveaux services LoadBalancer externes et ne s'applique pas aux services LoadBalancer externes existants. Supprimez et recréez tous les services LoadBalancer externes qui ont été créés sans l'annotation cloud.google.com/l4-rbs: "enabled".

    Le type de backend utilisé (backends NEG GCE_VM_IP ou backends de groupe d'instances) dépend de la version de GKE lorsque vous créez le service LoadBalancer externe. Pour en savoir plus, consultez la section Regroupement de nœuds.

Ajouter un sous-réseau avec une plage d'adresses IPv4 de pods

  1. Créez un sous-réseau et ajoutez une plage d'adresses IPv4 secondaire de sous-réseau. Le sous-réseau doit se trouver dans la même région et sur le même réseau VPC que le cluster :

       gcloud compute networks subnets create SUBNET_NAME \
         --network=NETWORK \
         --region=REGION \
         --range=PRIMARY_RANGE \
         --secondary-range=POD_RANGE_NAME=SECONDARY_RANGE \
         --enable-private-ip-google-access
    

    Remplacez les éléments suivants :

    • SUBNET_NAME : nom du nouveau sous-réseau.
    • NETWORK: nom du réseau VPC contenant le nouveau sous-réseau.
    • REGION est la région dans laquelle se trouve le sous-réseau.
    • PRIMARY_RANGE : plage d'adresses IPv4 principales pour le nouveau sous-réseau, au format CIDR. Pour en savoir plus, consultez la section sur les plages de sous-réseaux IPv4.
    • POD_RANGE_NAME: nom de la plage secondaire.
    • SECONDARY_RANGE correspond à la plage d'adresses IPv4 secondaire en notation CIDR. Pour connaître les plages valides, consultez la section sur les plages de sous-réseaux IPv4.

    Pour plus d'informations, consultez la section Travailler avec des sous-réseaux.

  2. Mettez à jour votre cluster pour utiliser le sous-réseau supplémentaire à l'aide de la gcloud CLI :

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster existant.
    • SUBNET_NAME : nom du nouveau sous-réseau que vous avez créé.
    • POD_RANGE_NAME : nom de la plage d'adresses IPv4 secondaire du sous-réseau que vous souhaitez utiliser pour la plage d'adresses IPv4 de pod.

Ajouter un sous-réseau avec plusieurs plages d'adresses IPv4 de pods

  1. Créez un sous-réseau dans la même région et le même réseau VPC que le cluster. Définissez la plage d'adresses IPv4 principale du sous-réseau sur une plage d'adresses IPv4 supplémentaire pour les nœuds.

  2. Pour chaque plage d'adresses IPv4 de pods supplémentaire dont vous avez besoin, ajoutez une plage d'adresses IPv4 secondaire de sous-réseau au sous-réseau que vous avez créé à l'étape précédente.

  3. Mettez à jour votre cluster pour qu'il utilise le sous-réseau supplémentaire à l'aide de gcloud CLI. L'exemple suivant ajoute un sous-réseau comportant deux plages d'adresses IPv4 secondaires de sous-réseau pour les pods.

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_1 \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_2
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre cluster existant.
    • SUBNET_NAME : nom du nouveau sous-réseau que vous avez créé.
    • POD_RANGE_NAME_1 et POD_RANGE_NAME_2 : noms des plages d'adresses IPv4 secondaires de sous-réseau que vous souhaitez utiliser pour les plages d'adresses IPv4 de pods.

Valider les sous-réseaux

Par cluster : pour afficher les détails de tous les sous-réseaux associés à un cluster, exécutez la commande suivante :

   gcloud container clusters describe CLUSTER_NAME

Remplacez CLUSTER_NAME par le nom de votre cluster.

Le résultat ressemble à ce qui suit :

ipAllocationPolicy:
  additionalIPRangesConfig:
  - podIpv4RangeNames:
    - pod-range-1
    subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Par pool de nœuds : pour afficher les détails de tous les sous-réseaux associés à un pool de nœuds, exécutez la commande suivante :

gcloud container node-pools describe POOL_NAME \
    --cluster=CLUSTER_NAME \

Remplacez les éléments suivants :

  • POOL_NAME : nom du pool de nœuds.
  • CLUSTER_NAME : nom du cluster.

Le résultat ressemble à ce qui suit :

name: pool-1
networkConfig:
  podRange: pod-range-1
  subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Supprimer un sous-réseau autre que celui par défaut

Si vous supprimez un sous-réseau non défini par défaut d'un cluster, le cluster n'utilisera plus les plages du sous-réseau dans aucun de ses pools de nœuds. La suppression a les effets suivants :

  • La plage d'adresses IPv4 principale du sous-réseau non défini par défaut ne peut pas être utilisée pour les plages d'adresses IPv4 des nœuds.
  • Les plages d'adresses IPv4 secondaires de sous-réseau dans le sous-réseau non défini par défaut ne peuvent pas être utilisées pour les plages d'adresses IPv4 de pods.

Avant de supprimer un sous-réseau non défini par défaut, vous devez supprimer tous les pools de nœuds qui l'utilisent. La première étape recommandée consiste à définir l'état du sous-réseau sur "Draining" (Vidange). Les sous-réseaux à l'état "Draining" ne seront pas pris en compte pour l'utilisation par les pools de nœuds nouvellement créés. Cela empêche les opérations de l'autoscaler de cluster (comme le scaling à la hausse du pool de nœuds) de sélectionner le sous-réseau que vous souhaitez supprimer, sans avoir à désactiver l'autoscaling pour l'ensemble du cluster.

Voici comment supprimer un sous-réseau :

  1. Définissez l'état du sous-réseau non défini par défaut sur "Vidange en cours". Cela empêche les nouveaux pools de nœuds de sélectionner ce sous-réseau, ce qui est utile lorsque vous activez l'autoscaling sur le cluster.
  2. Supprimez tous les pools de nœuds qui utilisent ce sous-réseau.
  3. Supprimez le sous-réseau du cluster.

Pour supprimer un sous-réseau non défini par défaut du cluster, exécutez la commande suivante :

   gcloud container clusters update CLUSTER_NAME \
     --remove-additional-ip-ranges=subnetwork=SUBNET_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • SUBNET_NAME : nom du sous-réseau que vous souhaitez supprimer du cluster.

Pour définir l'état d'un sous-réseau non défini par défaut sur "Vidange en cours", exécutez la commande suivante :

   gcloud container clusters update CLUSTER_NAME \
     --drain-additional-ip-ranges=subnetwork=SUBNET_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • SUBNET_NAME : nom du sous-réseau dont vous souhaitez définir l'état sur "Vidange".

Pour annuler le drainage d'un sous-réseau non défini par défaut, exécutez la commande suivante :

   gcloud container clusters update CLUSTER_NAME \
     --undrain-additional-ip-ranges=subnetwork=SUBNET_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • SUBNET_NAME : nom du sous-réseau dont vous souhaitez annuler la vidange.

Après avoir supprimé un sous-réseau non défini par défaut du cluster, vous pouvez supprimer le sous-réseau non défini par défaut.

Supprimer une plage d'adresses IPv4 secondaire d'un sous-réseau non défini par défaut

Lorsque vous supprimez une plage d'adresses IPv4 secondaire de sous-réseau non définie par défaut d'un cluster, GKE indique au cluster de ne pas utiliser cette plage pour les plages d'adresses IPv4 de pod dans un pool de nœuds. Si la plage d'adresses IPv4 secondaire du sous-réseau non défini par défaut que vous supprimez est la seule plage du sous-réseau non défini par défaut utilisée par ce cluster, GKE demande également au cluster d'arrêter d'utiliser l'adresse IPv4 principale de ce sous-réseau pour les adresses IPv4 des nœuds.

Avant de supprimer une plage d'adresses IPv4 secondaire de sous-réseau non définie par défaut, vous devez supprimer tous les pools de nœuds qui utilisent la plage pour les adresses IPv4 de pod.

Pour supprimer une plage d'adresses IPv4 secondaire non définie par défaut du cluster, exécutez la commande suivante :

   gcloud container clusters update CLUSTER_NAME \
     --remove-additional-ip-ranges=\
       subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster.
  • SUBNET_NAME : nom du sous-réseau non défini par défaut.
  • POD_RANGE_NAME : nom de la plage d'adresses IPv4 secondaire de sous-réseau non définie par défaut que vous souhaitez supprimer du cluster.

Après avoir supprimé une plage d'adresses IPv4 secondaire de sous-réseau non définie par défaut du cluster, vous pouvez supprimer la plage d'adresses IPv4 secondaire de sous-réseau non définie par défaut.

Utiliser des sous-réseaux supplémentaires dans le VPC partagé

Avant de continuer, assurez-vous de disposer des éléments suivants :

  • Un environnement de VPC partagé fonctionnel dans lequel les projets hôte et de service sont associés. Pour obtenir des instructions, consultez Configurer un cluster avec un VPC partagé.
  • Un cluster GKE en cours d'exécution situé dans le projet de service.
  • Toutes les API nécessaires sont activées dans les projets hôte et de service.
  1. Créez un sous-réseau supplémentaire dans le projet hôte, sous le même réseau que le cluster GKE :

    gcloud compute networks subnets create ADDITIONAL_SUBNET_NAME \
      --project HOST_PROJECT_ID \
      --network shared-net \
      --range 172.16.4.0/22 \
      --region COMPUTE_REGION \
      --secondary-range ADDITIONAL_SUBNET_NAME-services=172.16.16.0/20,ADDITIONAL_SUBNET_NAME-pods=172.20.0.0/14
    
  2. Obtenez la stratégie IAM. Pour permettre au cluster GKE du projet de service d'accéder à des sous-réseaux supplémentaires dans le VPC partagé du projet hôte, vous devez configurer les autorisations IAM nécessaires. Si les autorisations ne sont pas déjà configurées, suivez les étapes ci-dessous. Aucune action n'est requise si les autorisations existent déjà.

    gcloud compute networks subnets get-iam-policy ADDITIONAL_SUBNET_NAME \
        --project HOST_PROJECT_ID \
        --region COMPUTE_REGION
    

    Le résultat contient un champ etag. Notez la valeur etag.

  3. Créez un fichier nommé ADDITIONAL_SUBNET_NAME-policy.yaml avec le contenu suivant :

      bindings:
      - members:
        - serviceAccount:SERVICE_PROJECT_NUM@cloudservices.gserviceaccount.com
        - serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com
        role: roles/compute.networkUser
      etag: ETAG_STRING
    

    Remplacez ETAG_STRING par la valeur etag que vous avez notée précédemment.

  4. Définissez la stratégie IAM pour le sous-réseau ADDITIONAL_SUBNET_NAME :

      gcloud compute networks subnets set-iam-policy ADDITIONAL_SUBNET_NAME \
          ADDITIONAL_SUBNET_NAME-policy.yaml \
          --project HOST_PROJECT_ID \
          --region COMPUTE_REGION
    
  5. Vérifiez les sous-réseaux utilisables et les plages d'adresses IP secondaires, comme décrit dans VPC partagé : vérifier les sous-réseaux utilisables.

  6. Mettez à jour le cluster VPC partagé des sous-réseaux supplémentaires :

    gcloud container clusters update CLUSTER_NAME \
        --project=SERVICE_PROJECT_ID \
        --location=CONTROL_PLANE_LOCATION \
        --additional-ip-ranges=subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/ADDITIONAL_SUBNET_NAME,pod-ipv4-range=ADDITIONAL_SUBNET_NAME-pods

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre cluster GKE dans le projet de service.
  • ADDITIONAL_SUBNET_NAME : nom du sous-réseau supplémentaire que vous avez créé dans le projet hôte (par exemple, tier-2).
  • HOST_PROJECT_ID : ID du projet hôte.
  • SERVICE_PROJECT_NUM : nom du projet de service.
  • COMPUTE_REGION est la région dans laquelle se trouve le sous-réseau.

Cela vous permet d'utiliser les sous-réseaux supplémentaires dans un environnement VPC partagé.

Étapes suivantes