Créer un cluster de VPC natif


Cette page explique comment configurer des clusters de VPC natif dans Google Kubernetes Engine (GKE).

Pour en savoir plus sur les avantages et les exigences des clusters de VPC natif, consultez la page de présentation des clusters de VPC natif.

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 déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

Limites

  • Vous ne pouvez pas convertir un cluster de VPC natif en cluster basé sur le routage, ni convertir un cluster basé sur le routage en cluster de VPC natif.
  • Les clusters de VPC natif nécessitent des réseaux VPC. Les anciens réseaux ne sont pas compatibles.
  • Comme pour tout cluster GKE, les adresses de services (ClusterIP) ne sont disponibles qu'au sein du cluster. Si vous devez accéder à un service Kubernetes à partir d'instances de VM en dehors du cluster, mais dans le réseau VPC et la région du cluster, créez un équilibreur de charge réseau passthrough interne.
  • Si vous utilisez toutes les adresses IP de pods dans un sous-réseau, vous ne pouvez pas remplacer la plage d'adresses IP secondaire du sous-réseau sans entraîner l'instabilité du cluster. Toutefois, vous pouvez créer des plages d'adresses IP de pods supplémentaires à l'aide du CIDR multipods non contigu.

Créer un cluster dans un sous-réseau existant

Les instructions suivantes décrivent comment créer un cluster GKE de VPC natif dans un sous-réseau existant à l'aide de la méthode d'attribution de plages secondaires de votre choix.

gcloud

  • Pour utiliser une méthode d'attribution de plages secondaires gérée par GKE :

    gcloud container clusters create CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-ip-alias \
        --subnetwork=SUBNET_NAME \
        --cluster-ipv4-cidr=POD_IP_RANGE \
        --services-ipv4-cidr=SERVICES_IP_RANGE
    
  • Pour utiliser une méthode d'attribution de plages secondaires gérée par l'utilisateur :

    gcloud container clusters create CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-ip-alias \
        --subnetwork=SUBNET_NAME \
        --cluster-secondary-range-name=SECONDARY_RANGE_PODS \
        --services-secondary-range-name=SECONDARY_RANGE_SERVICES
    

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster GKE.
  • COMPUTE_LOCATION : emplacement Compute Engine du cluster.
  • SUBNET_NAME : nom d'un sous-réseau existant. La plage d'adresses IP principale du sous-réseau est utilisée par les nœuds. Le sous-réseau doit exister dans la même région que celle utilisée par le cluster. S'il est omis, GKE tente d'utiliser un sous-réseau dans le réseau VPC default de la région du cluster.
  • Si la méthode d'attribution de plages secondaires est gérée par GKE :
    • POD_IP_RANGE : plage d'adresses IP au format CIDR (par exemple, 10.0.0.0/14) ou taille du masque de sous-réseau d'un bloc CIDR (par exemple, /14) Cela permet de créer la plage d'adresses IP secondaire du sous-réseau utilisée par les pods. Si vous omettez l'option --cluster-ipv4-cidr, GKE choisit automatiquement une plage /14 (218 adresses). La plage choisie automatiquement est sélectionnée de manière aléatoire à partir de 10.0.0.0/8 (une plage de 224 adresses) et n'inclut pas les plages d'adresses IP allouées aux VM, les routes existantes ou les plages allouées à d'autres clusters. La plage choisie automatiquement peut entrer en conflit avec des adresses IP réservées, des routes dynamiques ou des routes au sein de VPC appairés à ce cluster. Si vous utilisez l'un de ces éléments, vous devez spécifier --cluster-ipv4-cidr pour éviter les conflits.
    • SERVICES_IP_RANGE : plage d'adresses IP au format CIDR (par exemple, 10.4.0.0/19) ou à la taille du masque de sous-réseau d'un bloc CIDR (par exemple, /19). Cela permet de créer la plage d'adresses IP secondaire du sous-réseau utilisée par les services.
  • Si la méthode d'attribution de plages secondaires est gérée par l'utilisateur :
    • SECONDARY_RANGE_PODS : nom d'une plage d'adresses IP secondaire existante dans le paramètre SUBNET_NAME spécifié. GKE utilise la totalité de la plage d'adresses IP secondaire du sous-réseau pour les pods du cluster.
    • SECONDARY_RANGE_SERVICES : nom d'une plage d'adresses IP secondaire existante dans le paramètre spécifié.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer, puis sur Configurer dans la section Standard ou Autopilot.

  3. Dans le volet de navigation, cliquez sur Réseau sous Cluster.

  4. Dans la liste déroulante Réseau, sélectionnez un VPC.

  5. Dans la liste déroulante Sous-réseau de nœud, sélectionnez un sous-réseau pour le cluster.

  6. Assurez-vous que la case Activer le routage du trafic de VPC natif (utilisation d'une adresse IP d'alias) est cochée.

  7. Cochez la case Créer automatiquement des plages secondaires si vous souhaitez que la méthode d'attribution de plages secondaires soit gérée par GKE. Désactivez cette option si vous avez déjà créé des plages secondaires pour le sous-réseau sélectionné et que vous souhaitez que la méthode d'attribution de plages secondaires soit gérée par l'utilisateur.

  8. Dans le champ Plage d'adresses de pod, saisissez une plage pour le pod, par exemple 10.0.0.0/14.

  9. Dans le champ Plage d'adresses du service, saisissez une plage pour le service, par exemple 10.4.0.0/19.

  10. Configurez votre cluster.

  11. Cliquez sur Créer.

Terraform

Vous pouvez facilement créer un cluster VPC natif avec Terraform à l'aide d'un module Terraform.

Par exemple, vous pouvez ajouter le bloc suivant à votre configuration Terraform :

module "gke" {
  source  = "terraform-google-modules/kubernetes-engine/google"
  version = "~> 12.0"

  project_id        = "PROJECT_ID"
  name              = "CLUSTER_NAME"
  region            = "COMPUTE_LOCATION"
  network           = "NETWORK_NAME"
  subnetwork        = "SUBNET_NAME"
  ip_range_pods     = "SECONDARY_RANGE_PODS"
  ip_range_services = "SECONDARY_RANGE_SERVICES"
}

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • CLUSTER_NAME : nom du cluster GKE.
  • COMPUTE_LOCATION : emplacement Compute Engine du cluster. Pour Terraform, la région Compute Engine.
  • NETWORK_NAME : nom d'un réseau existant.
  • SUBNET_NAME : nom d'un sous-réseau existant. La plage d'adresses IP principale du sous-réseau est utilisée par les nœuds. Le sous-réseau doit exister dans la même région que celle utilisée par le cluster.
  • SECONDARY_RANGE_PODS : nom d'une plage d'adresses IP secondaire existante dans le paramètre spécifié.
  • SECONDARY_RANGE_SERVICES : nom d'une plage d'adresses IP secondaire existante dans le paramètre spécifié.

API

Lorsque vous créez un cluster de VPC natif, vous définissez un objet IPAllocationPolicy. Vous pouvez référencer des plages d'adresses IP secondaires de sous-réseaux existantes ou spécifier des blocs CIDR. Référencez des plages d'adresses IP secondaires de sous-réseau existantes pour créer un cluster dont la méthode d'attribution de plages secondaires est gérée par l'utilisateur. Spécifiez des blocs CIDR si vous souhaitez que la méthode d'attribution des plages soit gérée par GKE.

{
  "name": CLUSTER_NAME,
  "description": DESCRIPTION,
  ...
  "ipAllocationPolicy": {
    "useIpAliases": true,
    "clusterIpv4CidrBlock"      : string,
    "servicesIpv4CidrBlock"     : string,
    "clusterSecondaryRangeName" : string,
    "servicesSecondaryRangeName": string,

  },
  ...
}

Cette commande inclut les valeurs suivantes :

  • "clusterIpv4CidrBlock" : plage CIDR des pods. Cela détermine la taille de la plage secondaire destinée aux pods et peut être au format CIDR, par exemple 10.0.0.0/14. Un espace vide de la taille donnée est sélectionné au sein de l'espace disponible dans votre VPC. Si aucune valeur n'est spécifiée, une plage valide est trouvée et créée avec une taille par défaut.
  • "servicesIpv4CidrBlock" : plage CIDR des services. Lisez la description de "clusterIpv4CidrBlock".
  • "clusterSecondaryRangeName" : nom de la plage secondaire destinée aux pods. Cette plage doit déjà exister et elle doit appartenir au sous-réseau associé au cluster.
  • "serviceSecondaryRangeName" : nom de la plage secondaire destinée aux services. Cette plage doit déjà exister, et elle doit appartenir au sous-réseau associé au cluster.

Créer un cluster et sélectionner la plage d'adresses IP du plan de contrôle

Par défaut, les clusters dotés de Private Service Connect utilisent la plage de sous-réseau principale pour provisionner l'adresse IP interne attribuée au point de terminaison du plan de contrôle. Vous pouvez remplacer ce paramètre par défaut en sélectionnant une plage de sous-réseaux différente uniquement lors de la création du cluster. Les sections suivantes expliquent comment créer un cluster avec Private Service Connect et remplacer la plage de sous-réseau.

gcloud

Créer un cluster avec Private Service Connect défini comme public

gcloud container clusters create CLUSTER_NAME \
    --private-endpoint-subnetwork=SUBNET_NAME \
    --location=COMPUTE_LOCATION

Ajoutez l'option --enable-private-nodes pour créer le cluster Private Service Connect comme privé.

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster GKE.
  • SUBNET_NAME : nom d'un sous-réseau existant.
  • COMPUTE_LOCATION : emplacement Compute Engine du cluster.

GKE crée un cluster avec Private Service Connect.

Créez un cluster défini comme privé :

Dans GKE version 1.29 ou ultérieure, vous pouvez créer un cluster avec Private Service Connect :

gcloud container clusters create CLUSTER_NAME --enable-ip-alias \
    --enable-private-nodes  \
    --private-endpoint-subnetwork=SUBNET_NAME \
    --region=COMPUTE_REGION

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster GKE.
  • SUBNET_NAME : nom d'un sous-réseau existant. Si vous n'indiquez pas de valeur pour l'option private-endpoint-subnetwork, mais que vous utilisez l'option master-ipv4-cidr, GKE crée un sous-réseau qui utilise les valeurs que vous avez définies dans master-ipv4-cidr. GKE utilise le nouveau sous-réseau pour provisionner l'adresse IP interne du plan de contrôle.
  • COMPUTE_LOCATION : emplacement Compute Engine du cluster.

Console

Créez un cluster défini comme public :

Pour attribuer un sous-réseau au plan de contrôle d'un nouveau cluster, vous devez d'abord ajouter un sous-réseau. Ensuite, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Dans la section Standard ou Autopilot, cliquez sur Configurer.

  4. Dans le champ Nom, saisissez le nom de votre cluster.

  5. Pour les clusters standards, dans le volet de navigation, sous Cluster, cliquez sur Mise en réseau.

  6. Dans la section Accès au réseau IPv4, procédez comme suit :

    1. Pour créer un cluster GKE en tant que public, sélectionnez Cluster public.
    2. Pour créer un cluster GKE en tant que cluster privé, sélectionnez Cluster privé.

    Dans les deux cas, vous pouvez ensuite modifier le mode d'isolation du cluster lors de la modification de sa configuration.

  7. Dans la section Options de mise en réseau avancées, cochez la case Remplacer le sous-réseau du point de terminaison privé par défaut du plan de contrôle.

  8. Dans la liste Sous-réseau du point de terminaison privé, sélectionnez le sous-réseau que vous avez créé.

  9. Cliquez sur OK. Ajoutez d'autres réseaux autorisés selon les besoins.

Créer simultanément un cluster et un sous-réseau

Les instructions suivantes décrivent comment créer dans le même temps un cluster et un sous-réseau GKE sur un VPC natif. La méthode d'attribution de plages secondaires est gérée par GKE lorsque vous effectuez ces deux étapes à l'aide d'une seule commande.

gcloud

Pour créer simultanément un cluster et un sous-réseau VPC natif :

gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --enable-ip-alias \
    --create-subnetwork name=SUBNET_NAME,range=NODE_IP_RANGE \
    --cluster-ipv4-cidr=POD_IP_RANGE \
    --services-ipv4-cidr=SERVICES_IP_RANGE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster GKE.
  • COMPUTE_LOCATION : emplacement Compute Engine du cluster.
  • SUBNET_NAME : nom du sous-réseau à créer. La région du sous-réseau est la même que celle du cluster (ou que la région dans laquelle réside le cluster zonal). Utilisez une chaîne vide (name="") si vous souhaitez que GKE génère un nom automatiquement.
  • NODE_IP_RANGE : plage d'adresses IP au format CIDR (par exemple, 10.5.0.0/20) ou taille du masque de sous-réseau d'un bloc CIDR (par exemple, /20) Cela permet de créer la plage d'adresses IP principale du sous-réseau utilisée par les nœuds. Si cette valeur est omise, GKE choisit une plage d'adresses IP disponible dans le VPC, d'une taille de /20.
  • POD_IP_RANGE : plage d'adresses IP au format CIDR (par exemple, 10.0.0.0/14) ou taille du masque de sous-réseau d'un bloc CIDR (par exemple, /14) Cela permet de créer la plage d'adresses IP secondaire du sous-réseau utilisée par les pods. Si cette valeur est omise, GKE utilise une plage /14 choisie de manière aléatoire contenant 218 adresses. La plage choisie automatiquement est sélectionnée de manière aléatoire à partir de 10.0.0.0/8 (une plage de 224 adresses) et n'inclut pas les plages d'adresses IP allouées aux VM, les routes existantes ou les plages allouées à d'autres clusters. La plage choisie automatiquement peut entrer en conflit avec des adresses IP réservées, des routes dynamiques ou des routes au sein de VPC appairés à ce cluster. Si vous utilisez l'un de ces éléments, vous devez spécifier --cluster-ipv4-cidr pour éviter les conflits.
  • SERVICES_IP_RANGE : plage d'adresses IP au format CIDR (par exemple, 10.4.0.0/19) ou taille du masque de sous-réseau d'un bloc CIDR (par exemple, /19) Cela permet de créer la plage d'adresses IP secondaire du sous-réseau utilisée par les services. Si cette valeur est omise, GKE applique la valeur /20, soit la taille par défaut de la plage d'adresses IP des services.

Console

Vous ne pouvez pas créer simultanément un cluster et un sous-réseau à l'aide de la console Google Cloud. Vous devez donc commencer par créer un sous-réseau, puis créer le cluster dans un sous-réseau existant.

API

Pour créer un cluster de VPC natif, définissez un objet IPAllocationPolicy dans votre ressource de cluster :

{
  "name": CLUSTER_NAME,
  "description": DESCRIPTION,
  ...
  "ipAllocationPolicy": {
    "useIpAliases": true,
    "createSubnetwork": true,
    "subnetworkName": SUBNET_NAME
  },
  ...
}

Le champ createSubnetwork crée et provisionne automatiquement un sous-réseau pour le cluster. Le champ subnetworkName est facultatif. Si aucune valeur n'est spécifiée, un nom est automatiquement choisi pour le sous-réseau.

Utiliser des plages d'adresses IP non-RFC 1918

Les clusters GKE peuvent utiliser des plages d'adresses IP en dehors des plages RFC 1918 pour les nœuds, les pods et les services. Consultez la section Plages valides dans la documentation du réseau VPC pour obtenir la liste des plages privées non-RFC 1918 pouvant être utilisées comme adresses IP internes pour les plages de sous-réseaux.

Les plages d'adresses IP non-RFC 1918 sont compatibles avec les clusters privés et les clusters non privés.

Les plages privées non-RFC 1918 sont des plages de sous-réseaux. Vous pouvez les utiliser exclusivement ou conjointement avec des plages de sous-réseaux RFC 1918. Les nœuds, les pods et les services continuent à utiliser les plages de sous-réseaux, comme décrit dans la section Plages d'adresses IP pour les clusters de VPC natif. Si vous utilisez des plages non-RFC 1918, tenez bien compte des éléments suivants :

  • Les plages de sous-réseaux, y compris celles utilisant des plages non-RFC 1918, doivent être attribuées manuellement ou par GKE avant la création des nœuds du cluster. Vous ne pouvez pas basculer vers ou cesser d'utiliser des plages de sous-réseaux non-RFC 1918, sauf si vous remplacez le cluster.

  • Les équilibreurs de charge réseau passthrough internes n'utilisent que des adresses IP de la plage d'adresses IP principale du sous-réseau. Pour créer un équilibreur de charge réseau passthrough interne avec une adresse non-RFC 1918, la plage d'adresses IP principale de votre sous-réseau doit être autre que RFC 1918.

Les destinations situées en dehors de votre cluster peuvent rencontrer des difficultés pour recevoir du trafic provenant de plages privées non-RFC 1918. Par exemple, les plages privées RFC 1112 (classe E) sont généralement utilisées en tant qu'adresses de multidiffusion. Si une destination extérieure à votre cluster ne peut pas traiter les paquets dont les sources sont des adresses IP privées en dehors de la plage RFC 1918, vous pouvez effectuer les opérations suivantes :

  • Utilisez une plage RFC 1918 pour la plage d'adresses IP principale du sous-réseau. De cette manière, les nœuds du cluster utilisent des adresses RFC 1918.
  • Vérifiez que votre cluster exécute l'agent de masquage d'adresses IP et que les destinations ne sont pas dans la liste nonMasqueradeCIDRs. De cette manière, les sources (SNAT) des paquets envoyés à partir de pods sont remplacées par des adresses de nœuds, qui sont RFC 1918.

Activer les plages d'adresses IP publiques utilisées en mode privé

Les clusters GKE peuvent utiliser en mode privé certaines plages d'adresses IP publiques en tant que plages d'adresses IP de sous-réseau internes. Vous pouvez utiliser en mode privé toute adresse IP publique, à l'exception de certaines plages restreintes, comme décrit dans la documentation du réseau VPC.

Votre cluster doit être un cluster de VPC natif pour pouvoir utiliser des plages d'adresses IP publiques utilisées en mode privé. Les clusters basés sur le routage ne sont pas compatibles.

Les plages publiques utilisées en mode privé sont des plages de sous-réseaux. Vous pouvez les utiliser exclusivement ou conjointement avec d'autres plages de sous-réseaux qui utilisent des adresses privées. Les nœuds, les pods et les services continuent à utiliser les plages de sous-réseaux, comme décrit dans la section Plages d'adresses IP pour les clusters de VPC natif. Tenez bien compte des éléments suivants lorsque vous réutilisez des adresses IP publiques en mode privé :

  • Lorsque vous utilisez une plage d'adresses IP externes comme plage de sous-réseaux, votre cluster ne peut plus communiquer avec les systèmes sur Internet qui utilisent cette plage publique. La plage devient une plage d'adresses IP interne dans le réseau VPC du cluster.

  • Les plages de sous-réseaux, y compris celles utilisant des plages d'adresses IP publiques en mode privé, doivent être attribuées manuellement ou par GKE avant la création des nœuds du cluster. Vous ne pouvez pas basculer vers ou cesser d'utiliser des adresses IP publiques utilisées en mode privé, sauf si vous remplacez le cluster.

Par défaut, GKE met en œuvre la SNAT sur les nœuds vers des adresses IP publiques. Si vous avez configuré le CIDR des pods pour qu'il utilise des adresses IP externes, les règles SNAT s'appliquent au trafic entre pods. Pour éviter cela, deux options s'offrent à vous :

Utiliser un réseau IPv4/IPv6 à double pile pour créer un cluster à double pile

Vous pouvez créer un cluster avec une mise en réseau à double pile IPv4/IPv6 sur un sous-réseau à double pile nouveau ou existant.

Ce guide vous explique comment effectuer les tâches suivantes :

  • Créer un sous-réseau à double pile (disponible dans les clusters Autopilot version 1.25 ou ultérieure et les clusters Standard version 1.24 ou ultérieure).
  • Mettre à jour un sous-réseau existant vers un sous-réseau à double pile (disponible dans les clusters Autopilot version 1.25 ou ultérieure et les clusters Standard version 1.24 ou ultérieure).
  • Créer un cluster avec la mise en réseau à double pile (disponible dans les clusters Autopilot version 1.25 ou ultérieure et les clusters Standard version 1.24 ou ultérieure). Par défaut, les clusters GKE Autopilot utilisent un cluster à double pile lorsque vous utilisez un sous-réseau à double pile. Une fois le cluster créé, vous pouvez le mettre à jour pour qu'il soit de type IPv4 uniquement.
  • Créer un cluster et un sous-réseau à double pile simultanément (disponible dans les clusters Autopilot version 1.25 et ultérieure, et les clusters Standard version 1.24 ou ultérieure).

Pour en savoir plus sur les avantages et les exigences des clusters GKE avec une présentation du réseau à double pile, consultez la documentation sur les clusters de VPC natif.

Créer un sous-réseau à double pile

Pour créer un sous-réseau à double pile, exécutez la commande suivante :

gcloud compute networks subnets create SUBNET_NAME \
    --stack-type=ipv4-ipv6 \
    --ipv6-access-type=ACCESS_TYPE \
    --network=NETWORK_NAME \
    --range=PRIMARY_RANGE \
    --region=COMPUTE_REGION

Remplacez les éléments suivants :

  • SUBNET_NAME : nom du sous-réseau que vous choisissez.
  • ACCESS_TYPE : type de routage vers l'Internet public. Utilisez INTERNAL pour les clusters privés et EXTERNAL pour les clusters publics. Si --ipv6-access-type n'est pas spécifié, le type d'accès par défaut est EXTERNAL.
  • NETWORK_NAME : nom du réseau qui contiendra le nouveau sous-réseau. Ce réseau doit répondre aux conditions suivantes :
  • PRIMARY_RANGE : plage d'adresses IP principale IPv4 pour le nouveau sous-réseau, au format CIDR. Pour en savoir plus, consultez la section sur les plages de sous-réseaux.
  • COMPUTE_REGION : région de calcul du cluster.

Mettre à jour un sous-réseau existant vers un sous-réseau à double pile

Pour mettre à jour un sous-réseau existant vers un sous-réseau à double pile, exécutez la commande suivante. La mise à jour d'un sous-réseau n'a pas d'incidence sur les clusters IPv4 existants du sous-réseau.

gcloud compute networks subnets update SUBNET_NAME \
    --stack-type=ipv4-ipv6 \
    --ipv6-access-type=ACCESS_TYPE \
    --region=COMPUTE_REGION

Remplacez les éléments suivants :

  • SUBNET_NAME : nom du sous-réseau
  • ACCESS_TYPE : type de routage vers l'Internet public. Utilisez INTERNAL pour les clusters privés et EXTERNAL pour les clusters publics. Si --ipv6-access-type n'est pas spécifié, le type d'accès par défaut est EXTERNAL.
  • COMPUTE_REGION : région de calcul du cluster.

Créer un cluster avec une mise en réseau à double pile

Pour créer un cluster avec un sous-réseau à double pile existant, vous pouvez utiliser gcloud CLI ou la console Google Cloud :

gcloud

  • Pour les clusters Autopilot, exécutez la commande suivante :

      gcloud container clusters create-auto CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --network=NETWORK_NAME \
          --subnetwork=SUBNET_NAME
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre nouveau cluster Autopilot.
    • COMPUTE_LOCATION : emplacement Compute Engine du cluster.
    • NETWORK_NAME : nom du réseau VPC contenant le sous-réseau. Ce réseau VPC doit être un réseau VPC en mode personnalisé. Pour en savoir plus, découvrez comment basculer un réseau VPC en mode automatique vers le mode personnalisé.
    • SUBNET_NAME : nom du sous-réseau à double pile. Pour en savoir plus, découvrez comment créer un sous-réseau à double pile.

      Par défaut, les clusters GKE Autopilot utilisent un cluster à double pile lorsque vous utilisez un sous-réseau à double pile. Une fois le cluster créé, vous pouvez le mettre à jour pour qu'il soit de type IPv4 uniquement.

  • Pour les clusters Standard, exécutez la commande suivante :

    gcloud container clusters create CLUSTER_NAME \
        --enable-ip-alias \
        --enable-dataplane-v2 \
        --stack-type=ipv4-ipv6 \
        --network=NETWORK_NAME \
        --subnetwork=SUBNET_NAME \
        --location=COMPUTE_LOCATION
    

    Remplacez les éléments suivants :

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.

  3. Dans la section Standard ou Autopilot, cliquez sur Configurer.

  4. Configurez le cluster selon vos besoins.

  5. Dans le volet de navigation, cliquez sur Réseau sous Cluster.

  6. Dans la liste Réseau, sélectionnez le nom de votre réseau.

  7. Dans la liste Sous-réseau de nœud, sélectionnez le nom de votre sous-réseau à double pile.

  8. Pour les clusters Standard, cochez la case d'option IPv4 et IPv6 (double pile). Cette option n'est disponible que si vous avez sélectionné un sous-réseau à double pile.

    Par défaut, les clusters Autopilot utilisent un cluster à double pile lorsque vous utilisez un sous-réseau à double pile.

  9. Cliquez sur Créer.

Créer simultanément un cluster et un sous-réseau à double pile

Vous pouvez créer simultanément un sous-réseau et un cluster à double pile. GKE crée un sous-réseau IPv6 et attribue une plage principale IPv6 externe au sous-réseau.

  • Pour les clusters Autopilot, exécutez la commande suivante :

    gcloud container clusters create-auto CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --network=NETWORK_NAME \
        --create-subnetwork name=SUBNET_NAME
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom de votre nouveau cluster Autopilot.
    • COMPUTE_LOCATION : emplacement Compute Engine du cluster.
    • NETWORK_NAME : nom du réseau VPC contenant le sous-réseau. Ce réseau VPC doit être un réseau VPC en mode personnalisé qui utilise des adresses Unicast IPv6 uniques locales (ULA). Pour en savoir plus, découvrez comment basculer un réseau VPC en mode automatique vers le mode personnalisé.
    • SUBNET_NAME : nom du nouveau sous-réseau. GKE peut créer le sous-réseau en fonction de vos règles d'administration :
      • Si vos règles d'administration autorisent la double pile et que le réseau est en mode personnalisé, GKE crée un sous-réseau à double pile et attribue une plage principale IPv6 externe au sous-réseau.
      • Si vos règles d'administration n'autorisent pas la double pile ou si le réseau est en mode automatique, GKE crée un sous-réseau à pile unique (IPv4).
  • Pour les clusters Standard, exécutez la commande suivante :

    gcloud container clusters create CLUSTER_NAME \
        --enable-ip-alias \
        --stack-type=ipv4-ipv6 \
        --ipv6-access-type=ACCESS_TYPE \
        --network=NETWORK_NAME \
        --create-subnetwork name=SUBNET_NAME,range=PRIMARY_RANGE \
        --location=COMPUTE_LOCATION
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME : nom du nouveau cluster choisi.
    • ACCESS_TYPE : type de routage vers l'Internet public. Utilisez INTERNAL pour les clusters privés et EXTERNAL pour les clusters publics. Si --ipv6-access-type n'est pas spécifié, le type d'accès par défaut est EXTERNAL.
    • NETWORK_NAME : nom du réseau qui contiendra le nouveau sous-réseau. Ce réseau doit répondre aux conditions suivantes :
    • SUBNET_NAME : nom du nouveau sous-réseau que vous choisissez.
    • PRIMARY_RANGE : plage d'adresses IPv4 principale pour le nouveau sous-réseau, au format CIDR. Pour en savoir plus, consultez la section sur les plages de sous-réseaux.
    • COMPUTE_LOCATION : emplacement Compute Engine du cluster.

Mettre à jour le type de pile sur un cluster existant

Vous pouvez modifier le type de pile d'un cluster existant. Avant de modifier le type de pile sur un cluster existant, tenez compte des limites suivantes :

  • La modification du type de pile est compatible avec les nouveaux clusters GKE exécutant la version 1.25 ou ultérieure. Les clusters GKE qui ont été mis à niveau des versions 1.24 vers les versions 1.25 ou 1.26 peuvent recevoir des erreurs de validation lors de l'activation du réseau à double pile. En cas d'erreurs, contactez l'équipe d'assistance Google Cloud.

  • La modification du type de pile est une opération perturbatrice, car GKE redémarre les composants du plan de contrôle et des nœuds.

  • GKE respecte les intervalles de maintenance que vous avez configurés lors de la recréation des nœuds. Cela signifie que le type de pile du cluster ne sera pas opérationnel sur le cluster avant le prochain intervalle de maintenance. Pour éviter d'attendre, vous pouvez mettre à niveau manuellement le pool de nœuds en définissant l'option --cluster-version sur la même version de GKE que celle que le plan de contrôle exécute. Pour cette solution, vous devez utiliser la gcloud CLI. Pour en savoir plus, consultez la section Mise en garde à propos des intervalles de maintenance.

  • La modification du type de pile ne modifie pas automatiquement la famille d'adresses IP des services existants. Les conditions suivantes s'appliquent :

    • Si vous remplacez une pile unique par une double pile, les services existants restent à pile unique.
    • Si vous remplacez une pile double par une pile unique, les services existants avec des adresses IPv6 passent à un état d'erreur. Supprimez le service et créez-en un avec le paramètre ipFamilies approprié. Pour en savoir plus, consultez un exemple de configuration de déploiement.

Pour mettre à jour un cluster de VPC natif existant, vous pouvez utiliser la gcloud CLI ou la console Google Cloud :

gcloud

Exécutez la commande suivante :

  gcloud container clusters update CLUSTER_NAME \
      --stack-type=STACK_TYPE \
      --location=COMPUTE_LOCATION

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster que vous souhaitez mettre à jour.
  • STACK_TYPE : type de pile. Remplacez par l'une des valeurs suivantes :
    • ipv4 : pour mettre à jour un cluster à double pile vers un cluster IPv4 uniquement. GKE utilise la plage d'adresses IPv4 principale du sous-réseau du cluster.
    • ipv4-ipv6 : pour mettre à jour un cluster IPv4 existant vers une double pile. Vous ne pouvez remplacer un cluster par une double pile que si le sous-réseau sous-jacent est compatible avec la double pile. Pour en savoir plus, consultez la section Mettre à jour un sous-réseau existant vers un sous-réseau à double pile.
  • COMPUTE_LOCATION : emplacement Compute Engine du cluster.

Console

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. À côté du cluster que vous souhaitez modifier, cliquez sur Actions, puis sur Modifier.

  3. Dans la section Mise en réseau, à côté de Type de pile, cliquez sur Modifier.

  4. Dans la boîte de dialogue Modifier le type de pile, cochez la case correspondant au type de pile de cluster dont vous avez besoin.

  5. Cliquez sur Save Changes (Enregistrer les modifications).

Créer un service à double pile IPv4/IPv6

Vous pouvez créer un service à double pile IPv4/IPv6 de type ClusterIP ou NodePort. Les nouveaux clusters GKE exécutant la version 1.29 ou ultérieure sont compatibles avec les services à double pile de type LoadBalancer. Pour en savoir plus, consultez Service LoadBalancer IPv4/IPv6 à double pile.

Pour chacun de ces types de service, vous pouvez définir les champs ipFamilies et ipFamilyPolicy comme étant de type IPv4, IPv6 ou à double pile. Pour en savoir plus, consultez Services IPv4/IPv6 à double pile.

Vérifier les plages d'adresses IP des pods, des services et des types de pile

Après avoir créé un cluster de VPC-natif, vous pouvez valider les plages de pod et de service spécifiées.

gcloud

Afin de vérifier le cluster, exécutez la commande suivante :

gcloud container clusters describe CLUSTER_NAME

La sortie comporte un bloc ipAllocationPolicy. Le champ stackType décrit le type de définition de réseau. Pour chaque type, vous pouvez afficher les informations réseau suivantes :

  • Informations sur le réseau IPv4 :

    • clusterIpv4Cidr est la plage secondaire destinée aux pods.
    • servicesIpv4Cidr est la plage secondaire destinée aux services.
  • Informations réseau IPv6 (si un cluster dispose d'une mise en réseau à double pile) :

    • ipv6AccessType : type de routage vers l'Internet public. INTERNAL pour les adresses IPv6 privées et EXTERNAL pour les adresses IPv6 publiques.
    • subnetIpv6CidrBlock : plage d'adresses IPv6 secondaires du nouveau sous-réseau.
    • servicesIpv6CidrBlock : plage d'adresses attribuée aux services IPv6 sur le cluster à double pile.

Console

Pour vérifier le cluster, procédez comme suit :

  1. Accédez à la page Google Kubernetes Engine dans Google Cloud Console.

    Accéder à Google Kubernetes Engine

  2. Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez inspecter.

Les plages secondaires sont affichées dans la section Mise en réseau :

  • La plage d'adresses de pod est la plage secondaire des pods.
  • La plage d'adresses de service est la plage secondaire des services.

Dépannage

Cette section fournit des conseils pour résoudre les problèmes liés aux clusters de VPC natif. Vous pouvez également consulter les insights sur l'utilisation des adresses IP GKE.

La ressource réseau par défaut n'est pas prête.

Symptômes

Un message d'erreur semblable à celui-ci s'affiche :

projects/[PROJECT_NAME]/regions/XXX/subnetworks/default
Causes probables

Des opérations sont effectuées en parallèle sur le même sous-réseau. Par exemple, un autre cluster de VPC natif est en cours de création, ou une plage secondaire est en cours d'ajout ou de suppression sur le sous-réseau.

Solution

Relancez la commande.

Valeur incorrecte pour IPCidrRange

Symptômes

Un message d'erreur semblable à celui-ci s'affiche :

resource.secondaryIpRanges[1].ipCidrRange': 'XXX'. Invalid IPCidrRange: XXX conflicts with existing subnetwork 'default' in region 'XXX'
Causes probables

Un autre cluster de VPC natif est en cours de création simultanément et tente d'allouer les mêmes plages au sein du même réseau VPC.

La même plage secondaire est en cours d'ajout dans le sous-réseau du même réseau VPC.

Solution

Si cette erreur est renvoyée lors de la création du cluster alors qu'aucune plage secondaire n'a été spécifiée, relancez la commande de création du cluster.

Pas assez d'espace d'adresses IP libre pour les pods

Symptômes

Le cluster est bloqué dans un état de provisionnement pendant une période prolongée.

La création de cluster renvoie une erreur de groupe d'instances géré (MIG, Managed Instance Group).

Lorsque vous ajoutez un ou plusieurs nœuds à un cluster, l'erreur suivante s'affiche :

[IP_SPACE_EXHAUSTED] Instance 'INSTANCE_NAME' creation failed: IP space of 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME-SECONDARY_RANGE_NAME' is exhausted.
Causes probables

L'espace non attribué dans la plage d'adresses IP des pods n'est pas suffisant pour ajouter les nœuds demandés dans le cluster. Par exemple, si la plage d'adresses IP de pods d'un cluster comporte un masque de réseau d'une taille de /23 (512 adresses) et un nombre de pods par nœud de 110, vous ne pouvez pas créer plus de deux nœuds. Une plage d'adresses IP avec un masque de réseau d'une taille de /24 est attribuée à chaque nœud.

Solutions

Vous pouvez ajouter des plages d'adresses IP de pods au cluster à l'aide d'un CIDR multipods non contigu.

Créez un cluster de remplacement après avoir examiné et planifié les plages d'adresses IP principale et secondaire d'une taille appropriée. Reportez-vous aux sections Plages d'adresses IP pour les clusters de VPC natif et Planifier des plages d'adresses IP.

Créez un pool de nœuds en définissant un nombre maximal de pods par nœud inférieur. Si possible, transférez les charges de travail vers ce pool de nœuds, puis supprimez le pool de nœuds précédent. La réduction du nombre maximal de pods par nœud vous permet d'accepter un plus grand nombre de nœuds sur une plage d'adresses IP secondaire fixe utilisée par les pods. Reportez-vous aux sections Plage d'adresses IP secondaire du sous-réseau utilisée par les pods et Plages de limites de nœud pour en savoir plus sur les calculs à effectuer.

Vérifier si la configuration SNAT par défaut est désactivée

Exécutez la commande suivante pour vérifier l'état de la configuration SNAT par défaut :

gcloud container clusters describe CLUSTER_NAME

Remplacez CLUSTER_NAME par le nom de votre cluster.

Le résultat ressemble à ce qui suit :

networkConfig:
  disableDefaultSnat: true
  network: ...

Impossible d'utiliser --disable-default-snat sans --enable-ip-alias

Ce message d'erreur, ainsi que le message must disable default sNAT (--disable-default-snat) before using public IP address privately in the cluster, signifient que vous devez définir explicitement l'option --disable-default-snat lors de la création du cluster, car vous utilisez des adresses IP publiques dans votre cluster privé.

Si des messages d'erreur tels que cannot disable default sNAT ... s'affichent, cela signifie que la configuration SNAT par défaut ne peut pas être désactivée dans votre cluster. Pour résoudre ce problème, vérifiez la configuration de votre cluster.

Déboguer Cloud NAT avec la configuration SNAT par défaut désactivée

Si un cluster privé a été créé avec l'option --disable-default-snat et que vous avez configuré Cloud NAT pour l'accès à Internet, mais que vous ne voyez pas de trafic Internet en provenance de vos pods, assurez-vous que la plage dédiée aux pods est comprise dans la configuration Cloud NAT.

En cas de problème de communication entre pods, examinez les règles iptables sur les nœuds afin de vous assurer que les plages dédiées aux pods ne sont pas masquées par celles-ci.

Pour en savoir plus, consultez la documentation sur l'IP masquerading de GKE.

Si vous n'avez pas configuré d'agent d'IP masquerading pour le cluster, GKE s'assure automatiquement que la communication entre pods n'est pas masquée. Toutefois, si un agent d'IP masquerading est configuré, il remplace les règles d'IP masquerading par défaut. Assurez-vous que des règles supplémentaires sont configurées dans l'agent d'IP masquerading pour ignorer le masquage des plages dédiées aux pods.

La communication réseau du cluster à double pile ne fonctionne pas comme prévu

Causes probables
Les règles de pare-feu créées par le cluster GKE n'incluent pas les adresses IPv6 allouées.
Solution
Vous pouvez valider la règle de pare-feu en procédant comme suit :
  1. Vérifiez le contenu de la règle de pare-feu :

    gcloud compute firewall-rules describe FIREWALL_RULE_NAME
    

    Remplacez FIREWALL_RULE_NAME par le nom de la règle de pare-feu.

    Chaque cluster à double pile crée une règle de pare-feu permettant aux nœuds et aux pods de communiquer entre eux. Le contenu de la règle de pare-feu ressemble à ce qui suit :

    allowed:
    - IPProtocol: esp
    - IPProtocol: ah
    - IPProtocol: sctp
    - IPProtocol: tcp
    - IPProtocol: udp
    - IPProtocol: '58'
    creationTimestamp: '2021-08-16T22:20:14.747-07:00'
    description: ''
    direction: INGRESS
    disabled: false
    enableLogging: false
    id: '7326842601032055265'
    kind: compute#firewall
    logConfig:
      enable: false
    name: gke-ipv6-4-3d8e9c78-ipv6-all
    network: https://www.googleapis.com/compute/alpha/projects/my-project/global/networks/alphanet
    priority: 1000
    selfLink: https://www.googleapis.com/compute/alpha/projects/my-project/global/firewalls/gke-ipv6-4-3d8e9c78-ipv6-all
    selfLinkWithId: https://www.googleapis.com/compute/alpha/projects/my-project/global/firewalls/7326842601032055265
    sourceRanges:
    - 2600:1900:4120:fabf::/64
    targetTags:
    - gke-ipv6-4-3d8e9c78-node
    

    La valeur sourceRanges doit être identique à celle de subnetIpv6CidrBlock. La valeur targetTags doit être identique aux tags des nœuds GKE. Pour résoudre ce problème, mettez à jour la règle de pare-feu avec les informations sur le bloc ipAllocationPolicy du cluster.

Étapes suivantes