Aller au contenu

Blog

Kubernetes haute disponibilité multi-datacenter en Suisse : architecture et fonctionnement réel

Control plane répliqué, etcd en quorum, stockage Geneva-Gland-Lucerne : architecture réelle d'un cluster Kubernetes haute disponibilité en Suisse.

Article Hidora publié le 21 août 2026. Les chiffres, prix et comparatifs sont ceux de cette date.

Control plane répliqué, etcd en quorum, stockage Geneva-Gland-Lucerne : ce qui se passe réellement quand un datacenter tombe.

Un cluster Kubernetes en configuration single-zone atteint généralement 99,9 % de disponibilité, soit jusqu'à 8,7 heures d'arrêt par an. Passer à une architecture multi-datacenter avec control plane répliqué monte ce chiffre à 99,99 %, soit moins de 53 minutes annuelles. Pour une application métier critique, c'est la différence entre un incident gérable et une interruption qui coûte.

Ce que la plupart des articles sur le K8s HA ne disent pas : la disponibilité ne se joue pas uniquement au niveau des worker nodes. Elle se gagne ou se perd au niveau du control plane et d'etcd. Comprendre ces deux couches avant de configurer quoi que ce soit est la condition d'une vraie haute disponibilité.

Ce qui détermine vraiment la disponibilité d'un cluster Kubernetes

Deux métriques pilotent toutes les décisions d'architecture HA.

Le RTO (Recovery Time Objective) mesure le temps nécessaire pour que les workloads soient recalculés sur les sites sains après une panne. Sur un cluster single-master, ce délai est de plusieurs minutes : il faut détecter la panne, reconstruire le control plane, puis rescheduler les pods. Sur un cluster multi-master avec etcd en quorum, le failover est automatique et se compte en secondes : le control plane continue de fonctionner sans intervention humaine.

Le RPO (Recovery Point Objective) définit la quantité de données potentiellement perdues lors d'un incident. Il dépend directement de la stratégie de réplication du stockage persistant. Une réplication synchrone garantit RPO visé (réplication synchrone ; pas un engagement publié) : aucune donnée n'est perdue car chaque écriture est confirmée sur tous les sites avant d'être acquittée. Une réplication asynchrone tolère une légère perte de données en échange d'une latence d'écriture réduite.

Architecture SLA typique Arrêt annuel Failover control plane
Single-master, single-zone 99,9 % ~8,7 heures Manuel, plusieurs minutes
Multi-master, single-zone 99,95 % ~4,4 heures Automatique, ~30 secondes
Multi-master, multi-datacenter (Hikube) 99,99 % < 53 minutes Automatique, < 60 secondes

* SLA Hikube Kubernetes managé confirmé sur hikube.cloud/pourquoi-hikube

Ces métriques définissent les objectifs. L'architecture du control plane détermine si ces objectifs sont atteignables.

L'architecture du control plane Hikube sur 3 sites suisses

Le control plane Hikube fonctionne avec 3 réplicas opérés par Hikube, distribués sur les 3 datacenters suisses : Geneva, Gland et Lucerne. Chaque réplica comprend un kube-apiserver, un kube-scheduler et un kube-controller-manager. L'ensemble est complété par un cluster etcd répliqué entre les 3 sites.

Le mécanisme clé est le quorum etcd. Pour que le control plane continue de fonctionner, une majorité des membres etcd doit rester disponible. Avec 3 membres, ce quorum est de 2. Si le datacenter de Gland tombe en panne complète, Geneva et Lucerne maintiennent le quorum et le control plane continue de planifier les workloads sans interruption. Si 2 datacenters tombent simultanément, le quorum est perdu et le control plane passe en lecture seule jusqu'à restauration d'un troisième membre. Ce cas de figure, deux pannes de site simultanées, correspond à une probabilité inférieure à ce que couvre un SLA 99,99 %.

Ce mécanisme est entièrement opéré par Hikube. Le client ne gère pas etcd, ne surveille pas le quorum, ne déclenche pas le failover. La configuration control plane dans un manifeste cluster Hikube :

controlPlane:
  replicas: 3
  apiServer:
    resourcesPreset: small
  controllerManager:
    resourcesPreset: small
  scheduler:
    resourcesPreset: micro

Le control plane survivant à une panne de site ne suffit pas seul à maintenir la disponibilité applicative. La répartition des pods (topology spread, PDB) est le deuxième levier.

Pods : ce que Kubernetes ne répartit pas tout seul

Les worker nodes (node groups) tournent dans le tenant client. Hikube les répartit automatiquement sur Genève, Gland et Lucerne : vous ne choisissez pas le DC. Kubernetes ne répartit pas les pods tout seul : un Deployment avec 3 réplicas peut coller les trois dans le même datacenter. Si ce datacenter tombe, l'application est indisponible même si le control plane survit sur les deux autres sites.

Deux mécanismes corrigent ce comportement. Le premier est le topology spread constraint, qui force la répartition des pods entre zones de disponibilité :

topologySpreadConstraints:
  - maxSkew: 1
    topologyKey: topology.kubernetes.io/zone
    whenUnsatisfiable: DoNotSchedule
    labelSelector:
      matchLabels:
        app: mon-application

Le second est le PodDisruptionBudget, qui garantit qu'un nombre minimum de pods reste disponible pendant un rolling update ou une opération de maintenance :

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: mon-application-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: mon-application

Ces deux configurations relèvent de la responsabilité du client, pas de Hikube. Un cluster correctement configuré côté Hikube mais sans ces contraintes côté workloads n'atteindra pas le SLA 99,99 % en pratique. Pour aller plus loin sur les stratégies de déploiements CI/CD sur Kubernetes, notre article dédié couvre les pipelines GitOps avec FluxCD.

StorageClass : le choix qui détermine votre RPO

Hikube propose la réplication des volumes persistants sur les trois sites pour les volumes persistants Kubernetes, chacune avec un compromis différent entre disponibilité, performance et complexité opérationnelle.

StorageClass Réplication RPO Latence écriture Use case
réplication asynchrone 3 sites, asynchrone Faible Moyenne Analytics, batch, applications tolèrant une perte minimale
réplication synchrone 3 sites, synchrone visé, non publié comme engagement Légèrement plus élevée Production critique, bases de données, état applicatif

* Source, documentation Hikube , docs.hikube.cloud/services/kubernetes/faq

La règle de décision est directe, si une perte de données est inacceptable, utilisez réplication synchrone. Si la performance d'écriture prime et qu'une légère perte est tolérable, réplication asynchrone est le bon compromis. Les volumes bloc Hikube sont toujours géo-redondants (Genève, Gland, Lucerne), en synchrone ou en asynchrone. La storageClass se définit au niveau du manifeste cluster et s'applique à tous les PVC créés dans ce cluster. Pour les workloads GPU sur Kubernetes, la storageClass réplication synchrone est recommandée pour protéger les checkpoints de modèles.

Rolling updates sans interruption : ce que Hikube gère, ce que vous gérez

Les mises à jour de version Kubernetes se font par rolling update sans interruption du control plane. Hikube opère la rotation des composants control plane un par un, maintient le quorum etcd pendant toute la durée de l'upgrade, et gère les versions supportées. Le client déclenche la mise à jour via une modification du manifeste cluster.

Deux contraintes s'appliquent du côté client. D'abord, les upgrades doivent être incrémentaux : les upgrades restent incrémentaux (on ne saute pas de version mineure). Ensuite, les workloads doivent être configurés pour survivre au rolling update des worker nodes. Un Deployment critique sans PodDisruptionBudget ni maxUnavailable: 0 peut voir ses pods interrompus pendant la rotation des nodes.

Configuration recommandée pour les workloads critiques pendant un upgrade :

strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 0
    maxSurge: 1

Ce qui se passe quand le datacenter de Gland tombe à 3h du matin

Scénario concret sur un cluster de production Hikube correctement configuré, 3 réplicas control plane sur Geneva, Gland et Lucerne, storageClass réplication synchrone, nodeGroups avec topology spread constraints activés.

T+0 : panne complète du datacenter de Gland. L'ensemble des composants hébergés sur ce site devient indisponible.

T+15 secondes : le kube-apiserver détecte la perte du membre etcd de Gland. Le quorum est maintenu avec Geneva et Lucerne (2 membres sur 3). Le control plane continue de fonctionner en lecture et écriture sans interruption.

T+30 secondes : le kube-controller-manager identifie les pods orphelins précédemment hébergés sur Gland. Le kube-scheduler les recalcule sur les worker nodes disponibles à Geneva et Lucerne, en respectant les topology spread constraints.

T+45 à 60 secondes : les workloads avec minReplicas ≥ 2 et PodDisruptionBudgets configurés sont à nouveau pleinement opérationnels. Les volumes persistants en storageClass réplication synchrone sont accessibles depuis Geneva et Lucerne sans perte de données.

RTO : ordre de grandeur, pas un engagement publié pour les workloads correctement configurés. RPO visé (réplication synchrone ; pas un engagement publié) avec storageClass réplication synchrone. Ce scénario suppose une configuration conforme aux bonnes pratiques décrites dans cet article. Un cluster sans topology spread constraints ni PodDisruptionBudgets verra un RTO significativement plus long.

Synthèse

Trois couches déterminent la HA réelle d'un cluster K8s : le control plane multi-réplicas avec etcd en quorum sur 3 sites suisses (opéré par Hikube), la distribution des workloads via topology spread constraints et PodDisruptionBudgets (à configurer côté client), et le choix de storageClass adapté au RPO cible. La HA ne s'active pas d'un clic. C'est une combinaison de décisions d'architecture à chaque couche.

Votre cluster Kubernetes doit survivre à la panne d'un datacenter suisse. Voir notre offre Kubernetes managé →

Prêt à tourner sur une infra 100 % suisse ?

14 jours d’essai, sans carte. GPU inclus.