|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Hohe Verfügbarkeit Embedded etcd
|
Embedded etcd (HA) kann auf langsameren Festplatten wie Raspberry Pis, die mit SD-Karten betrieben werden, Leistungsprobleme haben. |
Warum eine ungerade Anzahl von Serverknoten?
Ein HA-Embedded-etcd-Cluster muss aus einer ungeraden Anzahl von Serverknoten bestehen, damit etcd das Quorum aufrechterhalten kann. Für einen Cluster mit n Servern beträgt das Quorum (n/2)+1. Für jeden Cluster mit ungerader Größe erhöht das Hinzufügen eines Knotens immer die Anzahl der Knoten, die für das Quorum erforderlich sind. Obwohl das Hinzufügen eines Knotens zu einem Cluster mit ungerader Größe besser erscheint, da es mehr Maschinen gibt, ist die Fehlertoleranz schlechter, da genau die gleiche Anzahl von Knoten ausfallen kann, ohne das Quorum zu verlieren, aber es gibt mehr Knoten, die ausfallen können.
Ein HA K3s-Cluster mit Embedded etcd besteht aus:
-
Drei oder mehr Serverknoten, die die Kubernetes-API bedienen und andere Steuerungsebene-Dienste ausführen sowie den Embedded etcd-Datenspeicher hosten.
-
Optional: Null oder mehr Agentenknoten, die zum Ausführen Ihrer Apps und Dienste vorgesehen sind
-
Optional: Eine feste Registrierungsadresse für Agentenknoten, um sich beim Cluster zu registrieren
|
Um große HA-Cluster schnell bereitzustellen, siehe Verwandte Projekte |
Um zu beginnen, starten Sie zunächst einen Serverknoten mit dem cluster-init-Flag, um das Clustering zu aktivieren, und einem Token, das als gemeinsames Geheimnis verwendet wird, um zusätzliche Server mit dem Cluster zu verbinden.
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=SECRET sh -s - server \
--cluster-init \
--tls-san=<FIXED_IP> # Optional, needed if using a fixed registration address
Nach dem Starten des ersten Servers fügen Sie den zweiten und dritten Server mit dem gemeinsamen Geheimnis zum Cluster hinzu:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=SECRET sh -s - server \
--server https://<ip or hostname of server1>:6443 \
--tls-san=<FIXED_IP> # Optional, needed if using a fixed registration address
Wo INSTALL_K3S_ARTIFACT_URL die Prime Artifacts URL ist
Überprüfen Sie, ob der zweite und dritte Server jetzt Teil des Clusters sind:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
server1 Ready control-plane,etcd,master 28m vX.Y.Z
server2 Ready control-plane,etcd,master 13m vX.Y.Z
server3 Ready control-plane,etcd,master 10m vX.Y.Z
Jetzt haben Sie eine hoch verfügbare Steuerungsebene. Alle erfolgreich geclusterten Server können im --server Argument verwendet werden, um zusätzliche Server- und Agentenknoten hinzuzufügen. Das Hinzufügen zusätzlicher Agentenknoten zum Cluster folgt demselben Verfahren wie bei Servern:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_TOKEN=SECRET sh -s - agent --server https://<ip or hostname of server>:6443
Es gibt einige Konfigurationsflags, die in allen Serverknoten gleich sein müssen:
-
Netzwerkbezogene Flags:
--cluster-dns,--cluster-domain,--cluster-cidr,--service-cidr -
Flags, die die Bereitstellung bestimmter Komponenten steuern:
--disable-helm-controller,--disable-kube-proxy,--disable-network-policyund jede Komponente, die an--disableübergeben wird -
Funktionsbezogene Flags:
--secrets-encryption
Vorhandene Einzelknoten-Cluster
Wenn Sie ein vorhandenes Cluster verwenden, das die standardmäßige eingebettete SQLite-Datenbank nutzt, können Sie es einfach in etcd umwandeln, indem Sie Ihren K3s-Server mit dem --cluster-init-Flag neu starten. Sobald Sie das getan haben, können Sie zusätzliche Instanzen hinzufügen, wie oben beschrieben.
Wenn ein etcd-Datenspeicher auf der Festplatte gefunden wird, weil dieser Knoten entweder bereits initialisiert oder einem Cluster beigetreten ist, werden die Datenspeicherargumente (--cluster-init, --server, --datastore-endpoint usw.) ignoriert.