Ausführen von Verwaltungsbefehlen auf einem Nicht-Leader-Knoten in Docker Swarm

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Docker Swarm ist ein leistungsstarkes Orchestrierungstool, mit dem Sie einen Cluster von Docker-Hosts als ein einzelnes System verwalten können. In einem Swarm wird ein Knoten als Leader bestimmt, der für die Verwaltung des Clusterzustands und die Entscheidungsfindung verantwortlich ist. Es kann jedoch vorkommen, dass Sie administrative Befehle auf Nicht-Leader-Knoten ausführen müssen. Dieses Tutorial führt Sie durch den Prozess der Identifizierung des Leader-Knotens und der Ausführung administrativer Befehle auf Nicht-Leader-Knoten in einem Docker Swarm.

Verständnis der Docker Swarm-Architektur

Docker Swarm ist ein Container-Orchestrierungstool, mit dem Sie einen Cluster von Docker-Hosts, auch "Schwarm" genannt, verwalten können. In einem Docker Swarm gibt es zwei Arten von Knoten: Manager-Knoten und Worker-Knoten.

Manager-Knoten

Manager-Knoten sind für die allgemeine Verwaltung des Schwarms verantwortlich. Sie übernehmen Aufgaben wie:

  • Planung und Bereitstellung von Containern
  • Aufrechterhaltung des gewünschten Zustands des Schwarms
  • Bereitstellung einer API für die Interaktion mit dem Schwarm

Manager-Knoten können auch Container ausführen, aber ihre Hauptrolle ist die Verwaltung des Schwarms.

Worker-Knoten

Worker-Knoten sind für die Ausführung der tatsächlichen Container verantwortlich. Sie erhalten Anweisungen von den Manager-Knoten und führen diese aus. Worker-Knoten können nach Bedarf zum Skalieren des Clusters dem Schwarm hinzugefügt oder entfernt werden.

graph LR subgraph Docker Swarm Manager[Manager-Knoten] --- Worker[Worker-Knoten] Manager --- Worker end

Die Docker Swarm-Architektur gewährleistet hohe Verfügbarkeit und Fehlertoleranz, indem mehrere Manager-Knoten Teil des Schwarms sein können. Auf diese Weise kann der Schwarm weiterarbeiten, falls ein Manager-Knoten ausfällt, da die verbleibenden Manager-Knoten die Aufgaben übernehmen.

Identifizierung des Leader-Knotens in Docker Swarm

In einem Docker Swarm wird einer der Manager-Knoten als Leader gewählt. Der Leader-Knoten ist verantwortlich für die wichtigen Entscheidungen und die Koordination der Aktionen der anderen Manager-Knoten.

Überprüfung des Leader-Knotens

Um den Leader-Knoten in Ihrem Docker Swarm zu identifizieren, können Sie den folgenden Befehl verwenden:

docker node ls

Dieser Befehl listet alle Knoten im Schwarm auf, und der Leader-Knoten wird mit einem *-Symbol gekennzeichnet.

Alternativ können Sie den Befehl docker node inspect verwenden, um detailliertere Informationen über einen bestimmten Knoten zu erhalten:

docker node inspect < node-id > --pretty

Dies zeigt die Rolle, den Status und andere relevante Informationen des Knotens an, einschließlich ob es sich um den Leader handelt.

Verständnis der Leader-Wahl

Docker Swarm verwendet den Raft-Konsensalgorithmus, um einen Leader unter den Manager-Knoten zu wählen. Der Leader ist verantwortlich für die Entscheidungsfindung und die Koordination der Aktionen der anderen Manager-Knoten.

Wenn der aktuelle Leader-Knoten ausfällt oder nicht verfügbar wird, wird automatisch ein neuer Leader aus den verbleibenden Manager-Knoten gewählt. Dies stellt sicher, dass der Schwarm auch bei Ausfall eines Manager-Knotens weiterarbeiten kann.

graph LR subgraph Docker Swarm Manager1[Manager-Knoten 1] --- Manager2[Manager-Knoten 2] Manager1 --- Manager3[Manager-Knoten 3] Manager2 --- Manager3 Manager1 -- Leader --> Manager2 Manager2 -- Follower --> Manager3 end

Ausführen von Verwaltungsbefehlen auf Nicht-Leader-Knoten

In einem Docker Swarm ist der Leader-Knoten für die wichtigen Entscheidungen und die Koordination der Aktionen der anderen Manager-Knoten verantwortlich. Es kann jedoch Situationen geben, in denen Sie Verwaltungsbefehle auf den Nicht-Leader-Knoten ausführen müssen, beispielsweise zu Wartungs- oder Troubleshooting-Zwecken.

Zugriff auf Nicht-Leader-Knoten

Um auf einen Nicht-Leader-Knoten in Ihrem Docker Swarm zuzugreifen, können Sie den Befehl docker node ssh verwenden. Dieser Befehl ermöglicht es Ihnen, eine SSH-Verbindung zu einem bestimmten Knoten im Schwarm herzustellen.

docker node ssh <node-id>

Ersetzen Sie <node-id> durch die ID des Nicht-Leader-Knotens, auf den Sie zugreifen möchten.

Ausführen von Verwaltungsbefehlen

Nachdem Sie eine SSH-Verbindung zum Nicht-Leader-Knoten hergestellt haben, können Sie nach Bedarf Verwaltungsbefehle ausführen. Einige gängige Verwaltungsbefehle, die Sie möglicherweise ausführen möchten, sind:

  • Überprüfung des Status und der Rolle des Knotens:
    docker node inspect < node-id > --pretty
  • Anzeigen der Knotenprotokolle:
    docker node logs <node-id>
  • Ausführen eines Befehls auf dem Knoten:
    docker exec -it <container-id> <command>

Beachten Sie, dass zwar Verwaltungsbefehle auf Nicht-Leader-Knoten ausgeführt werden können, die vorgenommenen Änderungen oder Aktionen jedoch keinen Einfluss auf den Gesamtzustand des Schwarms haben. Der Leader-Knoten ist weiterhin für die Aufrechterhaltung des gewünschten Zustands des Clusters verantwortlich.

Einschränkungen

Es ist wichtig zu beachten, dass die Ausführung von Verwaltungsbefehlen auf Nicht-Leader-Knoten einige Einschränkungen hat. Beispielsweise können Sie die Befehle docker service oder docker stack nicht auf Nicht-Leader-Knoten verwenden, da diese Befehle Zugriff auf den Zustand des Schwarms benötigen, der vom Leader-Knoten verwaltet wird.

Wenn Sie Aktionen durchführen müssen, die Zugriff auf den Zustand des Schwarms benötigen, sollten Sie dies auf dem Leader-Knoten tun oder den Befehl docker node exec verwenden, um den Befehl auf dem Leader-Knoten von einem Nicht-Leader-Knoten auszuführen.

Zusammenfassung

Am Ende dieses Tutorials haben Sie ein besseres Verständnis der Docker Swarm-Architektur und können Verwaltungsbefehle effektiv auf Nicht-Leader-Knoten ausführen. Dieses Wissen hilft Ihnen, die Hochverfügbarkeit zu gewährleisten und Ihre containerisierten Anwendungen in einer Docker Swarm-Umgebung effizient zu verwalten.