Cette page explique comment effectuer une rotation d'adresses IP pour votre plan de contrôle dans les clusters Google Kubernetes Engine (GKE) exécutant la version 1.16.10-gke.8 ou une version ultérieure.
Présentation
Vous pouvez effectuer une rotation d'adresse IP afin de modifier l'adresse IP utilisée par votre plan de contrôle pour répondre aux requêtes de l'API Kubernetes. L'adresse IP du plan de contrôle est statique et ne change pas, sauf si vous effectuez une rotation d'adresse IP.
La rotation des adresses IP entraîne la modification du certificat SSL et de l'autorité de certification du cluster, ce qui limite la possibilité d'associer l'ancienne adresse à la nouvelle.
La rotation des adresses IP se produit également dans le cadre de la rotation des identifiants.
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
.
Effectuer une rotation des adresses IP
La rotation des adresses IP est un processus en plusieurs étapes :
- Lorsque vous lancez une rotation des adresses IP, le plan de contrôle du cluster commence à diffuser le trafic sur la nouvelle adresse IP en plus de l'adresse IP d'origine.
- GKE recrée vos pools de nœuds pour utiliser la nouvelle adresse IP.
- Après avoir lancé une rotation, vous devez mettre à jour les clients API de votre cluster (tels que les machines de développement utilisant l'interface de ligne de commande
kubectl
) pour commencer à communiquer avec le plan de contrôle via la nouvelle adresse IP. - Lorsque vous terminez la rotation, le plan de contrôle cesse de diffuser le trafic sur l'adresse IP précédente.
Lancer la rotation
Pour lancer une rotation des adresses IP, exécutez la commande suivante :
gcloud container clusters update CLUSTER_NAME \ --start-ip-rotation
Remplacez
CLUSTER_NAME
par le nom du cluster.Le résultat ressemble à ce qui suit :
This will start an IP Rotation on cluster CLUSTER_NAME. The master will be updated to serve on a new IP address in addition to the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes to point to the new IP address. If maintenance window is used, nodes are not recreated until a maintenance window occurs. See documentation on how to manually update nodes. This operation is long-running and will block other operations on the cluster (including delete) until it has run to completion. Do you want to continue (Y/n)?
Cette commande configure le plan de contrôle afin qu'il diffuse le trafic sur deux adresses IP (l'adresse d'origine et une nouvelle adresse).
Confirmez la rotation et laissez l'interface système ouverte pour que l'opération puisse se terminer.
Recréer des nœuds
Après avoir reconfiguré le serveur d'API pour diffuser sur une nouvelle adresse IP, GKE met automatiquement vos nœuds à jour afin qu'ils utilisent la nouvelle adresse IP. GKE met tous vos nœuds à niveau vers la version de nœud compatible la plus proche, ce qui recrée les nœuds. Pour en savoir plus, consultez la page Mises à niveau des pools de nœuds.
Par défaut, GKE effectue automatiquement les rotations des adresses IP sept jours après le démarrage de l'opération. Si un intervalle de maintenance actif ou une exclusion dans votre cluster empêche GKE de recréer certains nœuds pendant cette période de sept jours, la rotation des adresses IP échoue.
Si vous utilisez des exclusions ou des intervalles de maintenance susceptibles d'entraîner une échec de la rotation, mettez à niveau manuellement votre cluster pour forcer la recréation des nœuds :
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION
Remplacez
VERSION
par la même version de GKE que celle utilisée par le cluster.Pour en savoir plus, consultez la section Mise en garde à propos des intervalles de maintenance.
Vérifier la progression de la recréation du pool de nœuds
Pour surveiller l'opération de rotation, exécutez la commande suivante :
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
Cette commande renvoie l'ID d'opération de la mise à niveau des nœuds.
Pour interroger l'opération, transmettez l'ID d'opération à la commande suivante :
gcloud container operations wait OPERATION_ID
Les pools de nœuds sont recréés un par un, et chacun possède sa propre opération. Si vous avez plusieurs pools de nœuds, suivez ces instructions pour interroger chaque opération.
Mettre à jour les clients API
Après avoir lancé la rotation des adresses IP, vous devez mettre à jour tous les clients API en dehors du cluster (tels que kubectl
sur les ordinateurs de développement), de sorte qu'ils pointent vers la nouvelle adresse IP.
Pour mettre à jour vos clients API, exécutez la commande suivante pour chaque client :
gcloud container clusters get-credentials CLUSTER_NAME
Achever la rotation
Après avoir mis à jour les clients API en dehors du cluster, terminez la rotation pour configurer le plan de contrôle afin qu'il ne diffuse le trafic que sur la nouvelle adresse IP.
Pour terminer la rotation, exécutez la commande suivante :
gcloud container clusters update CLUSTER_NAME \
--complete-ip-rotation
Le résultat ressemble à ce qui suit :
This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.
Si la rotation des adresses IP ne se termine pas et renvoie un message d'erreur semblable à celui-ci, consultez la section Dépannage :
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
Étape suivante
- Découvrez-en plus sur les adresses IP d'alias.
- Obtenez plus d'informations sur l'agent de masquage d'adresses IP.
- Familiarisez-vous avec la configuration des réseaux autorisés.