Kubernetes über mehrere Kontinente: k3s und k8s hochverfügbar über Rechenzentren weltweit

Veröffentlicht am 13 Min. Lesezeit

Kubernetes über USA, Europa und Asien, bei dem ein ganzer Kontinent ausfallen darf: warum etcd keine Fernstrecken verträgt, ein k3s-Cluster je Region, GitOps mit Flux, Geo-DNS-Failover, Daten über Regionen und die Unterschiede zu kubeadm.

Kubernetes ist der Standard, wenn Anwendungen ausfallsicher und automatisch skalierend laufen sollen. Die naheliegende Idee, einen einzigen Kubernetes-Cluster über Server in den USA, Europa und Asien zu spannen, scheitert allerdings an einem Detail: an etcd, der Datenbank, in der Kubernetes seinen gesamten Zustand speichert. Dieser Beitrag zeigt, wie Kubernetes über mehrere Kontinente trotzdem funktioniert, und zwar so, dass ein ganzer Kontinent ausfallen darf: mit einem Cluster je Region, einer gemeinsamen Auslieferung per GitOps und einem Geo-DNS, das die Nutzer zur nächsten gesunden Region schickt.

Wir bauen die Architektur mit k3s auf, der schlanken, vollständig zertifizierten Kubernetes-Distribution, die sich in Minuten installieren lässt, und zeigen am Ende, was sich mit einem klassischen Kubernetes per kubeadm ändert. Die Grundlagen zu Verfügbarkeit, Quorum und Failover über mehrere Standorte stehen ausführlich im Beitrag Docker Swarm über drei Kontinente; hier geht es um das, was bei Kubernetes anders ist.

Ein Cluster über alle Kontinente oder ein Cluster je Region?

Für Kubernetes über mehrere Kontinente ist ein Cluster je Region die richtige Architektur, nicht ein einziger Cluster über alle Kontinente. Jeder Cluster läuft für sich, alle werden aus demselben Git-Repository ausgerollt, und ein Geo-DNS mit Health Checks verteilt die Nutzer. Fällt eine Region aus, übernehmen die anderen, ohne dass ein gemeinsamer Clusterzustand über den Ozean abgestimmt werden muss.

Warum etcd keine Fernstrecken verträgt

Kubernetes speichert jeden Zustand, jede Konfiguration und jede Änderung in etcd, einem Schlüssel-Wert-Speicher mit Raft-Konsens. Jeder Schreibvorgang braucht die Bestätigung der Mehrheit aller etcd-Mitglieder. etcd arbeitet standardmäßig mit einem Herzschlag von 100 Millisekunden und einem Wahl-Timeout von einer Sekunde; zwischen Europa, Nordamerika und Asien liegen die Paketlaufzeiten bei 80 bis 250 Millisekunden. Man kann die Zeiten hochsetzen, aber dann wird jeder Schreibvorgang im Cluster langsam, von der Planung eines Pods bis zum Speichern eines Secrets. Die k3s-Dokumentation ist an dieser Stelle eindeutig: Das eingebaute etcd wird in über mehrere Netze verteilten Clustern nicht unterstützt, alle Server sollen am selben Standort stehen. Auch Kubernetes selbst ist dafür ausgelegt, dass ein Cluster mehrere Zonen innerhalb einer Region abdeckt, nicht mehrere Kontinente.

Die drei Muster im Vergleich

MusterSo funktioniert esBewertung
Ein Cluster über alle KontinenteSteuerungsebene und etcd auf mehrere Kontinente verteiltNicht empfohlen: langsame Schreibvorgänge, instabiles etcd, bei k3s mit eingebautem etcd nicht unterstützt
Steuerungsebene in einer Region, Worker weltweitServer an einem Standort, Agents auf anderen KontinentenFunktioniert technisch, aber fällt die Region der Steuerungsebene aus, kann weltweit nichts mehr neu geplant werden
Ein Cluster je RegionDrei unabhängige Cluster, gemeinsam per GitOps ausgerollt, Geo-DNS davorEmpfohlen: jede Region übersteht den Ausfall der anderen, Fehler bleiben auf eine Region begrenzt

Der Ansatz „ein Cluster je Region" hat einen zweiten, oft unterschätzten Vorteil: Ein Fehler in der Steuerungsebene, eine fehlerhafte Änderung am Cluster oder ein Upgrade, das schiefgeht, trifft immer nur eine Region. Die Nutzer der anderen Regionen merken davon nichts.

k3s oder k8s?

Beide sind echtes Kubernetes mit derselben API, denselben Manifesten und denselben Werkzeugen. Der Unterschied liegt im Aufbau und im Aufwand:

Merkmalk3sk8s mit kubeadm
InstallationEin Befehl, eine BinärdateiContainer-Runtime, kubeadm, kubelet, Netzwerk-Plugin einzeln einrichten
Ressourcen für einen Server-KnotenMindestens 2 Kerne und 2 GB RAMDeutlich mehr, je nach Komponenten
MitgeliefertIngress-Controller (Traefik), Netzwerk (Flannel), Storage-Provisioner, Service-Load-BalancerNur der Kern, alles andere wählen Sie selbst
HochverfügbarkeitEingebautes etcd mit drei ServernDrei Control-Plane-Knoten mit Load Balancer vor der API
Geeignet fürDie meisten Anwendungen, kleine Teams, Einzelknoten je RegionTeams, die jede Komponente selbst bestimmen wollen

Für die Architektur mit einem Cluster je Region empfehlen wir k3s: Drei Cluster zu betreiben ist nur dann angenehm, wenn jeder einzelne einfach ist. Wer bereits kubeadm-Erfahrung hat, übernimmt die Architektur unverändert, der Abschnitt zu kubeadm weiter unten zeigt die Unterschiede.

Die Architektur: drei Regionen, drei Cluster, ein Einstieg

BausteinAufgabeWelcher Ausfall damit abgefangen wird
Ein k3s-Cluster je RegionFührt die Anwendung nah bei den Nutzern ausAusfall einer ganzen Region
Drei Server je Region (Ausbaustufe)Hält etcd und die Steuerungsebene innerhalb der Region hochverfügbarAusfall einzelner Server in einer Region
Git-Repository und Flux je ClusterJeder Cluster holt sich seinen Sollzustand selbst aus GitKein zentraler Auslieferungsserver als Ausfallpunkt
Ingress mit Zertifikaten per DNS-ChallengeNimmt Anfragen der Nutzer entgegenZertifikate funktionieren unabhängig von der DNS-Umschaltung
Geo-DNS mit Health ChecksSchickt Nutzer zur nächsten gesunden RegionNicht erreichbare Regionen
Replizierte Datenhaltung und BackupsHält Daten in mehreren RegionenDatenverlust bei Regionsausfall

Einstieg und Ausbau

Der Einstieg sind drei Server, je einer in den USA, in Europa und in Asien, jeder als eigener Einzelknoten-Cluster. Fällt ein Server aus, fällt seine Region aus, und der Geo-DNS schickt ihre Nutzer in die Nachbarregion. Diese Stufe ist bereits auf den Ausfall eines ganzen Kontinents ausgelegt. Im Ausbau bekommt jede Region drei Server am selben Standort, dann übersteht auch jede Region für sich den Ausfall eines Servers, ohne dass Nutzer umgeleitet werden müssen.

Welche KernelHost-Standorte sich eignen

KernelHost betreibt Server im maincubes-Rechenzentrum in Frankfurt am Main und bietet virtuelle Server an weiteren Standorten in Europa, Nordamerika und Asien-Pazifik an, darunter drei Standorte in den USA, Kanada, London, Straßburg, Warschau, Helsinki, Singapur, Japan, Sydney und Mumbai. Die vollständige Liste steht auf der Seite Serverstandorte. Das Beispiel dieses Beitrags nutzt Frankfurt am Main für Europa, die US-Ostküste für Nordamerika und Singapur für Asien.

Anleitung: Kubernetes mit k3s in drei Regionen

Das Beispiel nutzt drei Server mit Debian 12 oder 13: k3s-eu, k3s-us und k3s-asia. Öffentliche Adressen stammen aus dem Dokumentationsnetz 203.0.113.0/24, die Domain ist example.com. Ersetzen Sie beides durch Ihre Werte.

Schritt 1: Server in drei Regionen bereitstellen

Bestellen Sie drei Server in drei Regionen, mindestens mit 2 vCPU und 4 GB RAM, damit neben k3s auch Ihre Anwendung Platz hat. Setzen Sie die Grundabsicherung aus der Checkliste für neue Rootserver um und vergeben Sie sprechende Hostnamen. etcd profitiert spürbar von schnellen SSDs, die NVMe-Speicher der KernelHost-Server erfüllen das.

Schritt 2: k3s installieren

Auf jedem der drei Server installieren Sie k3s mit einem Befehl. Jeder Server wird damit zu einem vollständigen Kubernetes-Cluster mit einem Knoten:

curl -sfL https://get.k3s.io | sh -
kubectl get nodes

Nach etwa einer Minute meldet kubectl get nodes den Knoten als Ready. Mitgeliefert sind Traefik als Ingress-Controller, Flannel als Netzwerk und ein Provisioner für lokale Volumes.

Schritt 3: Ausbau auf drei Server je Region

Soll eine Region selbst hochverfügbar werden, stellen Sie drei Server an denselben Standort. Der erste Server startet das eingebaute etcd, die beiden anderen treten mit einem gemeinsamen Token bei. etcd verlangt eine ungerade Zahl von Servern, bei drei Servern verkraftet die Region den Ausfall eines Servers:

curl -sfL https://get.k3s.io | K3S_TOKEN=GEHEIMES_TOKEN sh -s - server \
    --cluster-init \
    --tls-san=api.eu.example.com
curl -sfL https://get.k3s.io | K3S_TOKEN=GEHEIMES_TOKEN sh -s - server \
    --server https://203.0.113.21:6443 \
    --tls-san=api.eu.example.com

Alle Server einer Region brauchen dieselben Einstellungen für Netzbereiche und Funktionen. Zwischen ihnen müssen die Ports 2379 bis 2380/TCP für etcd, 6443/TCP für die API, 10250/TCP für das Kubelet und 8472/UDP für das Flannel-Netz offen sein, nach außen bleiben sie gesperrt. Das Token ist ein Geheimnis: Wer es kennt, kann eigene Server in den Cluster bringen.

Schritt 4: Zugriff auf alle drei Cluster einrichten

k3s legt die Zugangsdaten unter /etc/rancher/k3s/k3s.yaml ab. Kopieren Sie die Datei jedes Clusters auf Ihren Arbeitsrechner, ersetzen Sie darin 127.0.0.1 durch die Adresse des Servers und benennen Sie die Kontexte nach der Region:

kubectl config rename-context default eu
kubectl config use-context eu
kubectl --context us get nodes

Die API auf Port 6443 ist der mächtigste Zugang zum Cluster. Erlauben Sie ihn in der Firewall nur von Ihrer eigenen Adresse oder einem VPN, nie für das ganze Internet. Die Datei k3s.yaml enthält ein Administratorzertifikat und gehört genauso sorgfältig verwahrt wie ein Root-Passwort.

Schritt 5: GitOps mit Flux in jedem Cluster

Damit alle drei Regionen dieselbe Anwendung in derselben Version betreiben, liegt der Sollzustand in einem Git-Repository, und in jedem Cluster läuft Flux, das diesen Zustand selbstständig herstellt. Jeder Cluster holt sich seine Konfiguration also selbst; einen zentralen Auslieferungsserver, der ausfallen könnte, gibt es nicht. Ein bewährter Aufbau des Repositorys:

apps/
  web/            gemeinsame Manifeste der Anwendung
clusters/
  eu/             Einstellungen und Version für Europa
  us/             Einstellungen und Version für Nordamerika
  asia/           Einstellungen und Version für Asien
flux bootstrap git --url=ssh://git@git.example.com/infra/fleet.git --branch=main --path=clusters/eu

Denselben Befehl führen Sie mit --path=clusters/us und --path=clusters/asia im jeweiligen Kontext aus. Weil jede Region ihr eigenes Verzeichnis hat, können Sie eine neue Version zuerst in einer Region ausrollen und erst danach in den anderen.

Schritt 6: Die Anwendung ausfallsicher beschreiben

Innerhalb einer Region sorgen drei Dinge dafür, dass die Anwendung Wartungen und Serverausfälle übersteht: mehrere Repliken, die auf verschiedene Knoten verteilt werden, Prüfungen, die kranke Pods erkennen, und ein Budget, das verhindert, dass eine Wartung alle Pods gleichzeitig entfernt:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: kubernetes.io/hostname
          whenUnsatisfiable: ScheduleAnyway
          labelSelector:
            matchLabels:
              app: web
      containers:
        - name: web
          image: registry.example.com/web:1.0
          ports:
            - containerPort: 8080
          readinessProbe:
            httpGet:
              path: /health
              port: 8080
            periodSeconds: 5
          livenessProbe:
            httpGet:
              path: /health
              port: 8080
            periodSeconds: 10
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: web
spec:
  minAvailable: 1
  selector:
    matchLabels:
      app: web

Die Readiness-Prüfung nimmt einen Pod aus dem Verkehr, solange er nicht antwortet, die Liveness-Prüfung startet ihn neu, wenn er hängt. Bei einem Einzelknoten-Cluster wirkt die Verteilung auf mehrere Knoten noch nicht, sie greift automatisch, sobald die Region drei Server hat.

Schritt 7: Ingress und Zertifikate

Den Eingang übernimmt der mitgelieferte Traefik. Weil alle drei Regionen dieselbe Domain bedienen, beschaffen Sie die TLS-Zertifikate mit cert-manager über die DNS-Challenge: Sie funktioniert in jeder Region, unabhängig davon, wohin der DNS-Eintrag gerade zeigt. Die HTTP-Challenge scheitert dagegen in jeder Region, auf die der Eintrag gerade nicht zeigt. Wer ohne Kubernetes-Ingress arbeitet, findet die Grundlagen im Beitrag nginx als Reverse Proxy einrichten.

Schritt 8: Geo-DNS mit Failover einrichten

Ein DNS-Dienst mit Geo-Routing und Health Checks schickt Nutzer aus Europa nach Frankfurt am Main, aus Amerika an die US-Ostküste und aus Asien nach Singapur und prüft alle 30 bis 60 Sekunden, ob der Eingang jeder Region antwortet. Fällt eine Region aus, gibt er ihre Adresse nicht mehr heraus. Setzen Sie die TTL der Einträge auf 60 Sekunden, dann ist eine Umstellung meist nach ein bis zwei Minuten abgeschlossen. Wer die Einträge aus dem Cluster heraus pflegen möchte, kann dafür external-dns einsetzen.

Schritt 9: Region für Region ausrollen und den Ausfall testen

Eine neue Version tragen Sie zuerst im Verzeichnis einer Region ein, beobachten die Region einige Minuten und übernehmen die Version danach für die anderen. So erreicht ein Fehler, den keine Prüfung erkennt, höchstens eine Region. Den Ausfall einer Region proben Sie, indem Sie k3s auf ihrem Server anhalten, und prüfen dabei, ob der Geo-DNS die Region aus den Antworten nimmt und die Nachbarregion die Last trägt:

systemctl stop k3s
systemctl start k3s

In einer Region mit drei Servern proben Sie zusätzlich die Wartung eines einzelnen Servers. kubectl drain verlagert die Pods unter Beachtung des Budgets aus Schritt 6, kubectl uncordon nimmt den Server wieder in Betrieb:

kubectl drain k3s-eu-2 --ignore-daemonsets --delete-emptydir-data
kubectl uncordon k3s-eu-2

Daten über Regionen hinweg

Kubernetes verteilt Pods, keine Daten. Ein PersistentVolume des mitgelieferten Provisioners liegt auf genau einem Knoten, und zwischen den Clustern gibt es von Haus aus gar keine gemeinsame Datenhaltung. Für alles mit Daten gilt deshalb dasselbe wie bei jedem Cluster über mehrere Standorte:

  • Datenbanken replizieren sich selbst. Bewährt ist eine primäre Instanz in einer Region mit Replikaten in den anderen; Datenbank-Operatoren wie CloudNativePG für PostgreSQL unterstützen solche Replikate auch über Clustergrenzen hinweg. Über Kontinente läuft die Replikation asynchron, im Ernstfall können die letzten Sekunden an Schreibvorgängen fehlen. Für verlustfreies Schreiben weltweit gibt es Datenbanken für mehrere Regionen wie CockroachDB oder YugabyteDB.
  • Dateien und Uploads gehören in einen S3-kompatiblen Objektspeicher mit Replikation in eine zweite Region.
  • Sitzungen liegen in einer replizierten Datenbank oder einem replizierten Cache, oder die Anwendung nutzt signierte Token.
  • Backups bleiben Pflicht, weil Replikation Fehler genauso verteilt wie gute Daten. Für Kubernetes-Objekte und Volumes eignet sich Velero, für die Grundlagen siehe die Backup-Strategie für Server.

Kubernetes mit kubeadm statt k3s

Die Architektur bleibt mit kubeadm dieselbe: ein Cluster je Region, GitOps, Geo-DNS. Anders ist der Aufbau jedes Clusters. Sie installieren auf allen Knoten eine Container-Runtime wie containerd sowie kubeadm, kubelet und kubectl, setzen vor die API der Region einen Load Balancer oder eine virtuelle Adresse, etwa mit kube-vip, und initialisieren den ersten Control-Plane-Knoten:

kubeadm init --control-plane-endpoint "api.eu.example.com:6443" --upload-certs

Die Ausgabe enthält zwei Beitrittsbefehle: einen mit --control-plane --certificate-key für die beiden weiteren Control-Plane-Knoten und einen für Worker. Danach installieren Sie ein Netzwerk-Plugin wie Calico oder Cilium und einen Ingress-Controller, den k3s bereits mitbringt. Der Mehraufwand lohnt sich, wenn Sie einzelne Komponenten gezielt auswählen oder eng an der Upstream-Version bleiben müssen.

Warum KernelHost für Kubernetes über mehrere Kontinente

AnforderungWarum sie zähltBei KernelHost
Standorte auf mehreren KontinentenEin Cluster je Region braucht Server in jeder RegionFrankfurt am Main plus Standorte in Europa, Nordamerika und Asien-Pazifik aus einer Hand
Unbegrenzter TrafficImage-Downloads, Datenbank-Replikation und Backups erzeugen dauerhaft VerkehrUnlimited-Traffic-VPS ohne Volumenbegrenzung
Schneller Speicheretcd reagiert empfindlich auf langsame DatenträgerNVMe-SSDs im RAID
DDoS-SchutzJeder Ingress ist öffentlich erreichbarAn jedem Standort inklusive, am Kernstandort Frankfurt am Main mit 3,2 Tbps Arbor-Echtzeitfilterung, ohne Nullrouting
Voller Root-Zugriffk3s, Firewall und Kernel-Einstellungen brauchen volle KontrolleAuf jedem KVM-Rootserver und Dedicated Server
Keine VertragsbindungKnoten und Testcluster kommen und gehenPrePaid, ohne Mindestlaufzeit, ohne Einrichtungsgebühr
AutomatisierungNeue Knoten sollen per Skript entstehenBestellung und Steuerung über die KernelHost API

Einen Überblick über alle Cloud-Tarife und einen Kostenvergleich mit den großen Cloud-Anbietern finden Sie auf der Seite Cloud-Server mieten.

Häufige Fehler und wie Sie sie vermeiden

  • etcd über Kontinente gespannt. Langsame Schreibvorgänge und instabile Wahlen sind die Folge, bei k3s mit eingebautem etcd ist es nicht unterstützt. Lösung: ein Cluster je Region.
  • Zwei Server in einer Region. etcd braucht eine Mehrheit, zwei Server verkraften keinen Ausfall. Lösung: einer oder drei.
  • API für das ganze Internet offen. Port 6443 ist der Generalschlüssel zum Cluster. Lösung: nur von der eigenen Adresse oder per VPN.
  • Zentraler Auslieferungsserver. Fällt er aus, lässt sich nichts mehr ausrollen. Lösung: Flux in jedem Cluster, das sich selbst aus Git bedient.
  • Update in allen Regionen gleichzeitig. Ein Fehler trifft dann alle Nutzer. Lösung: Region für Region über die Verzeichnisse im Repository.
  • Zertifikate per HTTP-Challenge. In Regionen, auf die der DNS-Eintrag gerade nicht zeigt, scheitert die Erneuerung. Lösung: DNS-Challenge.
  • Datenbank im lokalen Volume ohne Replikation. Fällt der Knoten aus, sind die Daten nicht erreichbar. Lösung: Replikation über einen Datenbank-Operator.
  • Keine Probes und kein Budget. Kranke Pods bekommen weiter Verkehr, Wartungen nehmen alle Pods gleichzeitig vom Netz. Lösung: Readiness- und Liveness-Prüfung plus PodDisruptionBudget.

Kurz zusammengefasst

  • Für Kubernetes über mehrere Kontinente ist ein Cluster je Region richtig, ein einziger Cluster über alle Kontinente scheitert an der Latenz von etcd.
  • Der Einstieg sind drei Server, je einer in den USA, in Europa und in Asien; schon diese Stufe übersteht den Ausfall eines ganzen Kontinents.
  • Im Ausbau bekommt jede Region drei Server am selben Standort, dann übersteht jede Region auch Ausfälle einzelner Server.
  • Flux in jedem Cluster rollt die Anwendung aus demselben Git-Repository aus, Region für Region.
  • Geo-DNS mit Health Checks und kurzer TTL schickt Nutzer zur nächsten gesunden Region, Zertifikate kommen per DNS-Challenge.
  • Kubernetes verteilt Pods, keine Daten: Datenbanken brauchen eigene Replikation, Backups bleiben Pflicht.
  • k3s ist für diese Architektur meist die bessere Wahl als kubeadm, weil drei einfache Cluster leichter zu betreiben sind als drei komplexe.

Häufige Fragen

Kann ein Kubernetes-Cluster über mehrere Kontinente laufen?
Technisch lässt sich die Steuerungsebene verteilen, empfehlenswert ist es nicht. Kubernetes speichert seinen Zustand in etcd, und jeder Schreibvorgang braucht die Bestätigung einer Mehrheit aller etcd-Mitglieder. Zwischen Kontinenten liegen 80 bis 250 Millisekunden Laufzeit, etcd arbeitet standardmäßig mit einem Herzschlag von 100 Millisekunden. Die k3s-Dokumentation unterstützt eingebautes etcd über verteilte Netze nicht. Richtig ist ein Cluster je Region.
Wie baut man Kubernetes über mehrere Regionen hochverfügbar auf?
Mit einem eigenen Cluster je Region, zum Beispiel je einem k3s-Cluster in den USA, in Europa und in Asien. Alle Cluster werden per GitOps aus demselben Git-Repository ausgerollt, etwa mit Flux in jedem Cluster, und ein Geo-DNS mit Health Checks schickt die Nutzer zur nächsten gesunden Region. Fällt eine Region aus, übernehmen die anderen, ohne dass ein gemeinsamer Zustand über den Ozean abgestimmt werden muss.
Was ist der Unterschied zwischen k3s und k8s?
Beide sind vollwertiges Kubernetes mit derselben API und denselben Manifesten. k3s ist eine schlanke, zertifizierte Distribution in einer einzigen Binärdatei, die mit einem Befehl installiert wird und Ingress-Controller, Netzwerk und Storage-Provisioner mitbringt; ein Server braucht mindestens 2 Kerne und 2 GB RAM. Ein k8s-Cluster mit kubeadm wird aus Einzelkomponenten zusammengesetzt, bietet mehr Wahlfreiheit und verlangt mehr Aufwand.
Wie viele Server braucht ein hochverfügbarer k3s-Cluster?
Drei Server-Knoten mit eingebautem etcd, am selben Standort. etcd braucht eine Mehrheit, drei Server verkraften damit den Ausfall eines Servers. Zwei Server bringen keinen Gewinn, weil der Ausfall eines der beiden die Mehrheit kostet. Für Kubernetes über mehrere Kontinente reichen für den Einstieg drei Einzelknoten-Cluster, je einer pro Region, weil der Geo-DNS den Ausfall einer ganzen Region abfängt.
Welche Ports braucht k3s?
Die Kubernetes-API und der k3s-Supervisor laufen auf Port 6443/TCP, das Kubelet auf 10250/TCP, das Flannel-Netz mit VXLAN auf 8472/UDP, mit WireGuard auf 51820/UDP. Bei mehreren Servern mit eingebautem etcd kommen die Ports 2379 bis 2380/TCP zwischen den Servern dazu. Keiner dieser Ports gehört offen ins Internet, die API erlauben Sie nur von der eigenen Adresse oder per VPN.
Wie werden Anwendungen in mehrere Kubernetes-Cluster ausgerollt?
Per GitOps: Der Sollzustand aller Cluster liegt in einem Git-Repository, und in jedem Cluster läuft ein Werkzeug wie Flux, das diesen Zustand selbstständig herstellt. Jede Region hat ein eigenes Verzeichnis, so lässt sich eine neue Version zuerst in einer Region ausrollen und nach einer Beobachtungszeit in den anderen. Einen zentralen Auslieferungsserver, der ausfallen könnte, gibt es dabei nicht.
Wie funktioniert das Failover zwischen den Kubernetes-Regionen?
Über einen DNS-Dienst mit Geo-Routing und Health Checks. Er schickt Nutzer zur nächstgelegenen Region und prüft alle 30 bis 60 Sekunden, ob deren Ingress antwortet. Fällt eine Region aus, gibt er ihre Adresse nicht mehr heraus und leitet die Nutzer zur nächsten gesunden Region. Mit einer TTL von 60 Sekunden ist die Umstellung meist nach ein bis zwei Minuten abgeschlossen.
Wie bleiben Daten bei einem Regionsausfall erhalten?
Kubernetes verteilt Pods, keine Daten. Datenbanken replizieren sich deshalb selbst, etwa PostgreSQL mit dem Operator CloudNativePG, der Replikate auch über Clustergrenzen hinweg betreibt. Über Kontinente läuft die Replikation asynchron, die letzten Sekunden an Schreibvorgängen können im Ernstfall fehlen. Dateien gehören in replizierten Objektspeicher, und regelmäßige Backups, etwa mit Velero, bleiben Pflicht.
Kubernetes oder Docker Swarm für mehrere Kontinente?
Docker Swarm lässt sich als ein einziger Cluster über drei Kontinente spannen und ist deutlich einfacher zu betreiben. Kubernetes bietet mehr Automatisierung und ein größeres Ökosystem, wird über Kontinente aber als ein Cluster je Region betrieben und per GitOps zusammengeführt. Für kleine Teams mit überschaubaren Anwendungen ist Swarm oft die pragmatische Wahl, für komplexe Plattformen Kubernetes.
Welche KernelHost-Standorte eignen sich für Kubernetes über mehrere Kontinente?
KernelHost bietet Server in Frankfurt am Main sowie an weiteren Standorten in Europa, Nordamerika und Asien-Pazifik, darunter drei Standorte in den USA, Kanada, London, Straßburg, Warschau, Helsinki, Singapur, Japan, Sydney und Mumbai. Eine bewährte Kombination ist Frankfurt am Main, die US-Ostküste und Singapur, je Region mit einem oder drei Servern am selben Standort.
Was kostet Kubernetes über drei Kontinente?
Im Einstieg drei Server, einer je Region, im Ausbau neun, dazu ein DNS-Dienst mit Health Checks. k3s selbst ist kostenlos. Weil Replikation, Backups und Image-Downloads dauerhaft Verkehr erzeugen, sind Tarife mit unbegrenztem Traffic entscheidend. Bei KernelHost laufen die Unlimited-Traffic-VPS ohne Volumenbegrenzung, PrePaid ohne Mindestlaufzeit und ohne Einrichtungsgebühr, sodass sich Cluster je nach Bedarf vergrößern oder verkleinern lassen.

Kubernetes k3s k8s kubeadm Hochverfügbarkeit Multi-Region GitOps Flux Geo-DNS Cloud