Guide Kubernetes SRE

Guide d'architecture multi-région Kubernetes et de basculement en périphérie

Choisissez les régions, les limites de données et les contrôles de trafic d'un déploiement multi-région en fonction de la correction applicative et de l'expérience utilisateur mesurée, pas de la seule intuition géographique.

Publié le
Mis à jour le
Temps de lecture
16 min de lecture
Sur cette page

Une architecture Kubernetes multi-région peut réduire l'exposition à une défaillance régionale et rapprocher certaines charges de travail des utilisateurs. Elle introduit également davantage de complexité en matière d'état, de coordination, de routage, de publication, d'observabilité et de réponse aux incidents qu'un déploiement à région unique. Une couche de périphérie peut améliorer les décisions de livraison pour un trafic adapté, mais elle ne peut pas rendre sûre une écriture fortement cohérente entre les régions ni supprimer la latence d'une dépendance centralisée.

Commencez par la raison de la distribution : résidence réglementaire, reprise après sinistre, demande régionale, latence pour un parcours précis, isolation opérationnelle ou combinaison de ces facteurs. La raison détermine le modèle de données et la politique de trafic. « Les utilisateurs sont mondiaux » ne suffit pas pour choisir l'actif-actif, l'actif-passif ou un mécanisme de routage particulier.

Pour une entreprise qui fait reposer sa livraison sur un point d'entrée intelligent unique devant plusieurs origines régionales, c'est la même discipline à plus grande échelle : une couche d'orchestration d'edge managée peut piloter le trafic à travers toutes les régions, mais elle ne peut pas inventer une autorité d'écriture que l'application n'a jamais conçue — elle ne fait que rendre la décision de basculement régional plus rapide et visible en un seul endroit.

La conception des données précède le pilotage du trafic

Décidez où résident les écritures faisant autorité, comment les réplicas prennent du retard ou entrent en conflit, et ce qu'un utilisateur voit pendant une défaillance régionale avant d'envoyer la même session dans plus d'une région.

Scénario : comment Acme Shop protège l'autorité de ses paiements

Prenons Acme Shop comme fil rouge tout au long de ce guide. L'objectif recherché : servir les pages de catalogue public au plus près des clients européens et américains, tout en conservant les écritures de compte et de paiement dans leur autorité d'origine, et en répétant un basculement applicatif américain borné et réversible. Cela suppose deux clusters déployables indépendamment, une autorité de données documentée, un site de secours de même autorité déjà testé, une preuve de capacité régionale, une authentification edge-vers-origine et une télémétrie synthétique de paiement.

Acme Shop diffuse ses pages de catalogue public depuis des caches de périphérie régionaux. Les comptes clients et les écritures de paiement européens restent dans l'autorité UE ; les comptes et paiements américains restent dans l'autorité US. Les lectures de catalogue produit peuvent utiliser des réplicas approuvés selon une politique de fraîcheur explicite et documentée. Lors d'une panne de la région applicative américaine, Acme peut déplacer une petite cohorte de paiements US vers un site de secours américain compatible, disposant des prérequis de paiement, de données et de capacité — jamais vers l'autorité européenne, même si celle-ci est géographiquement proche ou en bonne santé à l'instant considéré. Chaque autorité exploite son propre cluster Kubernetes et son propre plan de contrôle : aucun cluster ni quorum etcd n'est étiré à travers l'Atlantique, pour les raisons détaillées plus bas.

Le parcours complet se lit ainsi : les acheteurs UE et US entrent par la périphérie approuvée la plus proche ; celle-ci peut servir les lectures de catalogue public depuis un cache sûr, tandis que les routes privées et d'écriture restent explicites ; les écritures de compte et de paiement restent dans leur autorité UE ou US documentée ; un site de secours de même autorité ne reçoit qu'un basculement progressif et approuvé ; enfin, des parcours synthétiques et des traces de bout en bout prouvent, à chaque étape, la destination, la correction, la latence et la capacité disponible.

Classer la charge de travail et les données

Distinguez les ressources publiques statiques, les réponses publiques pouvant être mises en cache, les lectures personnalisées, les écritures authentifiées, les tâches asynchrones et les fonctions du plan de contrôle. Chacune a des exigences différentes de localité et de défaillance. Une ressource de documentation publique peut souvent être servie près d'un utilisateur selon une politique de fraîcheur soigneusement définie. Une confirmation de paiement ou une mise à jour de compte nécessite un chemin d'écriture faisant autorité, l'idempotence et un contrat de cohérence clair.

Pour chaque magasin de données, documentez la source de vérité, la topologie des réplicas, le comportement du retard de réplication, la résolution des conflits, le processus de sauvegarde et de restauration, ainsi que les exigences de chiffrement et de résidence. Incluez les sessions, compteurs de limitation de débit, feature flags, files d'attente, secrets, certificats et dépendances d'identité ; ce sont des dépendances d'état fréquemment négligées dans un service « sans état ».

Les charges de travail à état ajoutent un second axe de topologie, distinct de la simple classification par sensibilité. Un pod lié à un PersistentVolume zonal ne peut pas être replanifié vers une zone que ce volume ne peut pas atteindre, et la même logique s'aggrave à l'échelle régionale : un réplica de StatefulSet provisionné sur un stockage américain n'a aucun foyer sûr dans le cluster européen, quelle que soit la capacité disponible côté UE. Acme étiquette donc chaque magasin comme zonal, régional ou lié à une autorité, afin qu'une replanification pilotée par la capacité ne tente jamais de déplacer un pod à état vers un endroit où ses données ne peuvent pas le suivre.

Choisir une topologie d'exploitation

Région active unique avec reprise

Une région reçoit les écritures et le trafic de production, avec une région de reprise testée. C'est souvent le modèle de cohérence le plus simple et il peut convenir lorsque les objectifs de reprise permettent une transition. La conception requiert des sauvegardes testées, des procédures de réplication ou de restauration des données, des changements DNS et de trafic, de la capacité dans la région de reprise et un processus de décision explicite pour le failover et le failback.

Régions applicatives actif-passif

Deux régions disposent de capacité applicative déployée, mais une seule reçoit normalement une charge d'écriture donnée. Cela peut réduire le temps de démarrage de l'application lors d'un failover tout en maintenant une propriété claire des écritures. Validez que la région passive peut absorber le trafic réel, dispose d'une configuration et de secrets à jour, et peut atteindre les services de données et tiers requis. C'est le modèle que retient Acme Shop pour son site de secours américain : la région passive doit prouver qu'elle atteint les mêmes fournisseurs de paiement et de données que la région primaire avant qu'un seul euro ou dollar de trafic réel ne lui soit confié.

Actif-actif par partition ou localité

Plusieurs régions servent le trafic simultanément, généralement avec un partitionnement explicite des données, une affinité utilisateur ou un système de données répliqué conçu pour la cohérence requise. Cela n'améliore l'isolation que si les dépendances et les procédures opérationnelles sont conçues de la même manière. Évitez de qualifier un déploiement d'actif-actif parce que des conteneurs s'exécutent dans deux régions alors que toutes les écritures significatives dépendent d'une région de base de données.

Concevoir le plan de contrôle d'une architecture multi-région Kubernetes

Une architecture multi-région Kubernetes est avant tout une décision sur le nombre de plans de contrôle que vous exploitez, pas seulement sur le nombre de régions servies. Le consensus Raft d'etcd suppose des allers-retours de l'ordre de quelques millisecondes entre les membres ; étirer un même quorum entre régions typiquement séparées de dizaines à centaines de millisecondes provoque des élections de leader et des blocages d'écriture en fonctionnement normal, pas seulement pendant une panne. Acme exploite donc un plan de contrôle, un quorum etcd et un domaine de défaillance indépendants par région, afin qu'une panne régionale ne retire jamais la seule chose dont un incident a le plus besoin : la capacité de décider.

La découverte de services entre clusters reste un domaine en évolution : l'API Multi-Cluster Services associe un ServiceExport dans un cluster à un ServiceImport dans un autre, à l'intérieur d'un ClusterSet de confiance. Des implémentations existent, mais l'API demeure une proposition pré-GA qui ne couvre que la découverte — elle ne décide jamais quel cluster est autoritaire. Acme la traite comme un chemin plus rapide vers les services d'une autre région, jamais comme un substitut à la carte d'autorité définie ci-dessus.

Une seule vue sur chaque cluster et chaque fournisseur

Deux plans de contrôle sont le bon choix pour l'isolation, mais cela signifie aussi deux bases etcd et deux tableaux de bord avec lesquels une règle d'autorité peut dériver dans le temps. Acme surveille ses deux clusters régionaux et chaque fournisseur de périphérie en amont à travers MYO, la couche de visibilité d'Optimi, afin que « quel cluster est autoritaire en ce moment » se résolve en une chronologie unique et auditée, plutôt qu'en exercice de recoupement mené en plein incident.

Rendre le placement Kubernetes explicite pour un déploiement multi-région

Déployez chaque charge de travail régionale de façon reproductible et validez-la selon le rôle qu'elle doit tenir en cas de défaillance. Pour répartir son service checkout-api entre les zones d'un même cluster régional, Acme utilise une contrainte topologySpreadConstraints avec un écart maximal (maxSkew) de un et la politique whenUnsatisfiable: DoNotSchedule, ce qui interdit à l'ordonnanceur de concentrer les remplacements de pods sur une seule zone lorsqu'une autre dispose de capacité. Cette contrainte améliore la répartition à l'intérieur d'une région ; elle ne remplace ni la réplication de données inter-régions, ni la capacité, ni une politique de basculement — et elle ne dit rien de la région qui reçoit une requête en premier lieu, ce qui se décide une couche plus haut.

Distinguer le routage local à la zone du pilotage du trafic inter-régions

Kubernetes dispose de son propre mécanisme natif de routage sensible aux zones, à un niveau différent de la décision inter-régions qui occupe l'essentiel de ce guide. Le champ trafficDistribution d'un Service peut demander PreferSameZone — acheminer vers un point de terminaison situé dans la même zone que le client lorsque celui-ci est sain — ou PreferSameNode. Associez-le au routage sensible à la topologie, via l'annotation service.kubernetes.io/topology-mode: Auto, pour donner à kube-proxy les indices de zone nécessaires.

Ce réglage réduit la latence inter-zone et, sur la plupart des fournisseurs cloud, le coût de transfert inter-zone — mais il reste entièrement intra-cluster, sans aucune notion de frontière d'autorité UE ou US. Il retombe sur un routage à l'échelle du cluster lorsque les zones sont trop déséquilibrées ou trop clairsemées pour être réparties de façon sûre, et il est incompatible avec internalTrafficPolicy: Local. Traitez-le comme une optimisation superposée sous le pilotage du trafic sensible à l'autorité décrit ci-dessous — jamais comme un substitut à ce dernier.

Concevoir le pilotage du trafic et les contrôles de santé

La décision inter-régions elle-même peut opérer au niveau DNS, d'un proxy de périphérie, d'un équilibreur de charge global ou de la couche applicative. Choisissez le point de contrôle selon le comportement de propagation, les besoins de protocole, la gestion des sessions, l'observabilité et la vitesse de rollback. Les caches DNS et le comportement client peuvent retarder un changement ; le routage de périphérie peut réagir plus vite pour certains trafics, mais doit préserver les en-têtes, les contrôles de sécurité et la sélection correcte de l'origine.

Utilisez des contrôles de santé qui représentent le service dont les utilisateurs ont besoin, plutôt qu'un simple listener TCP ou endpoint de pod Kubernetes prêt. Un service peut répondre à une requête de santé superficielle alors que sa base de données, son service d'identité ou sa file d'attente critique est indisponible. Dans le même temps, ne rendez pas les contrôles de santé si profonds qu'une dépendance optionnelle lente retire toute capacité saine. Définissez l'ensemble de dépendances et testez-le.

Maintenez les basculements de trafic progressifs. Commencez avec une cohorte ou un chemin limité lorsque cela est possible, surveillez le succès et la latence visibles par les clients en parallèle de la saturation régionale, puis élargissez. Un basculement immédiat complet peut transformer un problème régional isolé en incident de capacité mondial. Chaque politique nécessite un rollback documenté et une dérogation manuelle dont l'accès est contrôlé et audité.

Pour un basculement planifié de 50 % d'une charge de paiement américaine de 800 requêtes par seconde, avec 30 % de marge de sécurité, le site de secours doit disposer d'au moins 800 × 0,5 × 1,3 = 520 requêtes par seconde de capacité validée et sûre. Validez au même moment les pools de base de données, le quota du fournisseur de paiement, TLS, la politique WAF ou de limitation de débit, les workers de file d'attente et la parité de déploiement. La télémétrie de décision doit exposer clairement, pour chaque requête, l'origine choisie, l'autorité résolue, l'état de santé du parcours et la confirmation qu'aucune requête européenne n'a été acheminée vers l'autorité américaine — c'est ce niveau de preuve qui transforme un basculement régional en décision auditable plutôt qu'en pari.

Mesurer la latence de bout en bout

Mesurez depuis l'utilisateur ou le client synthétique à travers DNS, TLS, la périphérie, l'ingress, l'application, le magasin de données et les services externes critiques. Segmentez par région utilisateur, route, région d'origine, réseau et publication. Cela montre si une nouvelle région améliore le parcours réel ou rapproche seulement le serveur applicatif tandis que la base de données reste distante.

Évitez les cibles de latence universelles. Une recherche interactive, un téléchargement de média et une exportation asynchrone ont des attentes utilisateurs et des contraintes techniques différentes. Établissez des objectifs pour le parcours, mesurez une distribution représentative et surveillez les régressions après des changements de routage, cache, données ou déploiement.

Préparer Kubernetes aux opérations régionales

Maintenez une configuration de cluster reproductible et indépendante par région lorsque cela est réaliste. Versionnez les manifests, les politiques, les références de secrets, le comportement d'ingress, la politique réseau, la configuration d'observabilité et les règles de livraison. Utilisez des contrôles de déploiement pouvant être suspendus ou annulés indépendamment, tout en vous assurant qu'un changement d'urgence peut être coordonné entre les régions lorsqu'une vulnérabilité partagée ou un défaut applicatif l'exige.

Dimensionnez chaque région selon son trafic prévu et son rôle en cas de défaillance. L'autoscaling, le provisionnement de nœuds et les protections contre les perturbations de pods nécessitent une validation sous charge régionale, pas seulement un test de développement local. Confirmez que les registres d'images, systèmes d'identité, émissions de certificats, pipelines de télémétrie et API externes restent accessibles lorsqu'une région ou un chemin fournisseur est dégradé.

Répéter le basculement régional et le retour au primaire

Menez des exercices contrôlés pour une panne applicative régionale, une dégradation du magasin de données, une mauvaise configuration du routage de périphérie, une défaillance de dépendance, un déploiement obsolète et une surcharge dans la région de réception. Enregistrez la distribution du trafic, les résultats visibles par les utilisateurs, les décisions des contrôles de santé, le comportement de cohérence des données, le temps de récupération et les actions manuelles. Exercez le failback aussi bien que le failover ; le retour du trafic peut révéler un retard de réplication, une dérive de configuration ou un second pic de capacité.

N'effectuez pas automatiquement un failover simplement parce qu'une métrique de bas niveau franchit un seuil. Une action automatique peut être appropriée dans des cas bien compris et bornés, mais elle doit être testée face aux faux positifs et aux défaillances partielles. Pour les changements aux conséquences élevées, exigez une autorité d'incident claire et un runbook qui nomme les preuves nécessaires pour procéder.

Le retour au primaire mérite la même prudence que le basculement régional lui-même. Restaurer 100 % du trafic dès que le contrôle de santé du site primaire redevient vert peut recréer l'incident sous un autre angle : les caches sont froids, les pools de connexions ne sont pas réchauffés, et la région qui vient de se rétablir absorbe alors un palier de charge au lieu d'une montée progressive. Inversez le même calendrier de bascule progressive que celui utilisé pour le basculement — petite cohorte, palier d'observation, puis extension — et attendez une hystérésis de récupération avant d'élargir.

Dans une fenêtre d'exercice approuvée, Acme établit d'abord une base de référence pour le taux de succès des paiements américains, la latence p95, le comportement des paiements, l'âge de la file d'attente et la capacité régionale. L'équipe force artificiellement l'échec du seul contrôle de parcours primaire américain concerné, déplace 10 % du trafic de paiement synthétique et jetable vers le site de secours américain compatible, puis observe pendant le palier défini. Elle vérifie que les requêtes européennes ne sélectionnent jamais l'autorité américaine et que chaque commande de test n'est enregistrée qu'une seule fois, avant de restaurer la santé du primaire, d'attendre l'hystérésis de récupération et de ramener le trafic progressivement. Si un comportement dupliqué, incertain ou traversant les autorités apparaît, l'exercice s'arrête : on restaure la dernière politique de routage validée ou la destination primaire, on conserve les preuves, et on ne réconcilie que via le processus documenté de paiement et de commande — jamais en forçant un basculement global ni en contournant les contrôles de sécurité pour terminer l'exercice.

Plusieurs symptômes reviennent régulièrement pendant ces répétitions. Un trafic qui oscille entre régions trahit généralement un contrôle de santé sans hystérésis de récupération ni palier minimal ; ajoutez une exigence de succès consécutifs avant de rejouer l'exercice. Un site de secours qui reçoit du trafic mais dont les paiements échouent signale le plus souvent un déploiement, une référence de secret, une dépendance ou un quota manquant : arrêtez la bascule, restaurez le routage primaire et corrigez le prérequis manquant. Une requête européenne qui atteint un service américain indique qu'une règle de proximité a pris le pas sur la politique d'autorité des données ; désactivez la règle de routage dangereuse, restaurez la politique validée et évaluez l'exposition selon le processus prévu. Un pic de charge sur l'origine après une bascule régionale trahit souvent un cache froid, une clé de cache différente ou un bouclier contourné ; comparez le taux de succès du cache, les clés et la concurrence à l'origine, puis ne réchauffez que les routes publiques. Un changement DNS qui semble inefficace vient presque toujours de résolveurs récursifs ayant conservé la réponse précédente ; utilisez le contrôle de périphérie approuvé pour une panne confirmée et laissez les caches DNS converger. Un routage local à la zone qui cesse d'équilibrer entre zones peut simplement signifier que la sauvegarde par indices d'EndpointSlice est retombée sur un routage à l'échelle du cluster — un comportement de repli sûr par défaut, pas un incident. Enfin, une importation de service inter-cluster qui résout vers la mauvaise région révèle souvent un ServiceExport ou ServiceImport obsolète ou mal configuré : corrigez ou retirez l'export, car la découverte ne doit jamais l'emporter sur la politique de basculement.

Liste de contrôle d'architecture

Avant de lancer le trafic multi-région, confirmez la raison et la classification de la charge de travail ; le modèle d'autorité et de cohérence des données, y compris le placement zonal, régional ou lié à une autorité des charges à état ; le nombre et l'isolation des plans de contrôle et quorums etcd ; la capacité régionale et les limites des dépendances ; la sémantique de routage et des contrôles de santé, y compris la distinction entre routage local à la zone et pilotage inter-régions ; le comportement des sessions et de l'authentification ; la corrélation de télémétrie entre la périphérie et les clusters ; les contrôles de déploiement et de rollback ; l'accès aux changements d'urgence ; ainsi que les procédures de basculement régional et de retour au primaire réellement exercées.

Références officielles

Une vue unique sur chaque région de votre architecture multi-région Kubernetes

Échangez avec Optimi sur l'orchestration de la Performance, de la Sécurité et de la Visibilité à travers chaque cluster régional et chaque fournisseur de périphérie que vous exploitez, pour que le basculement régional reste une décision répétée, jamais une improvisation.

Discuter du basculement multi-région