SSH in Kubernetes Pod

SSH in Kubernetes Pod

Vor der Ankunft von Containern wurden Probleme mit Bereitstellungskompatibilität durch Softwareentwickler konfrontiert. Dies kann passieren, wenn Software wie in der Entwicklungsphase beabsichtigt funktioniert, jedoch aufgrund von Abhängigkeitsproblemen Fehlfunktionen in der produktiven Umgebung. Alle für die Entwicklung verwendeten Softwareanforderungen können jedoch in der Produktionsumgebung aufgrund von Containern geliefert und verwendet werden. Nachdem Sie Ihr Containerbild erstellt und eine Instanz davon ausgeführt haben, benötigen Sie möglicherweise eine Verbindung zum Container zu Debugging -Zwecken oder zum Auftragen eines Hotfix. Sie müssen die Hülle eines beliebigen Containers eingeben, um in irgendeiner Weise damit zu interagieren. In diesem Artikel lernen Sie, wie Sie über SSH auf einen laufenden Docker -Container oder Kubernetes -Pod zugreifen können.

Was ist SSH?

Das sichere Shell -Protokoll (allgemein als SSH bezeichnet) bietet eine Möglichkeit, sich sicher von einem Computer auf einen anderen anmelden zu können. Eine starke Verschlüsselung wird verwendet, um die Sicherheit und Integrität der Kommunikation zu schützen, und bietet mehrere zusätzliche Alternativen für eine starke Authentifizierung. Es ist ein sicherer Ersatz für unsichere Dateiübertragungsprotokolle und ungesicherte Anmeldeprotokolle (wie Telnet und Rlogin) (wie FTP). Zusätzlich funktioniert es gut mit Kubernetes.

Nützliche Shell -Befehle und -Albilder für kubectl exec

Mit Kubectl Exec können Sie eine Shell -Sitzung mit Containern starten, die in Ihrem Kubernetes -Cluster arbeiten. Es ist SSH-ähnliche Funktionalität für Kubernetes. Die Informationen, die Sie benötigen, sind zusammen mit den Szenarien, in denen sie am sinnvollsten sind.

Ein Container -Orchestrator namens Kubernetes ermöglicht automatisierte Bereitstellungen auf zahlreichen physischen Computern. Secure Shell auf einem physischen Server unterscheidet sich von der Start einer Shell -Sitzung in einem Container in einem Kubernetes -Cluster. Auch wenn Container als Staatellos und in der Lage sein sollten, ohne Aufsicht zu arbeiten, können Sie gelegentlich eine Shell benötigen, um Probleme zu beheben oder Daten abzurufen.

Mit Kubectl Exec können Sie eine Verbindung zu Containern in Ihrem Cluster herstellen. Es ist eine Komponente des Kubectl CLI -Tools zur Kommunikation mit Kubernetes -Installationen. Ähnlich wie bei SSH oder Docker Exec führt der Exec -Befehl eine Shell -Sitzung in Ihr Terminal ein.

Der einfachste Aufruf für den Zugriff auf die Pod „Demo-Pod“ ist wie folgt:

Kubectl stellt eine Verbindung zu Ihrem Cluster, Start /bin /sh im ersten Container des Demo-Pod-Pod. In diesem Beitrag werden die Situationen untersucht, in denen Kubectl Exec hilfreich ist, was jeder Teil des Befehls erreicht und wie die Shell -Verbindung angepasst werden kann.

Wann man Kubectl Exec verwendet?

Für die Verwaltung von Workloads in einem Kubernetes-Cluster werden verschiedene Techniken benötigt, als für die Verwaltung von Anwendungen auf einem herkömmlichen bloßmetalischen Server. Sie müssen vom Cluster -Host zu den Containerinstanzen ausgraben, die Ihr System bereitstellen, und fügen Sie eine weitere Ebene zwischen Ihnen und Ihrem Programm hinzu.

Die Fähigkeit von Kubernetes, Replikate auf physischen Computern bereitzustellen, ist einer seiner starken Punkte (Knoten). Selbst wenn Sie über SSH verwalten könnten, müssten Sie den Überblick über welchen Knoten jeden Container beaufsichtigt haben. Ohne sich um den Kubernetes -Knoten zu kümmern, ist der Container eingeschaltet. Sie können den Container angeben, um eine Verbindung zur Verwendung von Kubectl Exec herzustellen.

Die häufigste Verwendung des Startens einer Schale in einem Behälter ist bei der Fehlerbehebung bei einem Problem. Sie können keine andere Wahl haben, als den Container von innen von innen zu untersuchen, nachdem alle anderen Optionen erschöpft sind, z. B. die Betrachtung der Protokolle des Behälters.

Sie können das vollständige Dateisystem des Containers anzeigen und bestätigen, dass die Umgebung wie Sie erwartet sind, indem Sie die Shell -Befehle ausführen. Darüber hinaus kann es Ihnen dabei helfen.

Kubectl Exec -Substitute

Die effektivste Methode zur Verbindung zu einer Kubernetes -Containerschale ist Kubectl Exec. Es wird für diese Verwendung gemacht und löst alle Probleme der Auswahl des richtigen physischen Knotens, um eine Verbindung herzustellen.

Erwägen Sie, einen SSH -Daemon in Ihrem Container auszuführen, wenn Sie wirklich eine andere Option benötigen, da Sie ohne Kubectl aus einem System eine Verbindung herstellen müssen. Beachten Sie, dass dies Ihre Anfälligkeit für Sicherheitsbedrohungen erhöht und der Prämisse widerspricht, dass jeder Container einem einzigen Zweck erfüllen sollte.

So greifen Sie über SSH auf meinen Arbeiterknoten zu?

Verwenden Sie ein Kubernetes-Daemon-Set oder eine Kubernetes-Aufgabe, um einmalige Aktionen auf jedem Arbeiterknoten auszuführen.

Überprüfen Sie die folgenden Optionen, um den Zugriff auf Arbeiterknoten zum Zwecke des Debuggens und der Fehlerbehebung zu erhalten.

Verwendung von Kubectl -Debugg zum Debuggen

Verwenden Sie den Befehl kubectl debug node, um einen pod mit einem privilegierten Sicherheitskontext für einen Arbeiterknoten bereitzustellen, den Sie debuggen möchten. Um den Zugang zum Arbeiterknoten zu gewähren, sobald der Debug -Pod gebildet wird, wird eine interaktive Hülle eingesetzt.

Debugging mit Kubectl Exec

Sie können einen Alpine Pod mit einem privilegierten Sicherheitskontext erstellen und den Befehl kubectl exec verwenden.

Erstellen eines Pods mit Root SSH -Zugang zum Debuggen

Wenn Sie den Kubectl -Debug -Knoten oder die Kubectl Exec -Befehle nicht verwenden können, z. Sie können einen Pod erstellen, der Root SSH -Zugriff ermöglicht und einen öffentlichen SSH -Schlüssel zum Arbeiterknoten für SSH -Zugriff kopiert.

Reinigen nach dem Debuggen

Entfernen Sie nach dem Abschluss des Debuggens Ressourcen, um den SSH -Zugang zu deaktivieren.

Was sind die Vorteile des SSH -Zugangs??

Die Vorteile sind unten aufgeführt:

  • Weniger Schlüssel, um den Überblick zu behalten
  • Reduzierte Angriffsfläche, indem alle gemeinsamen, interaktiven Linux -Dienstprogramme neben SSH entfernt werden
  • Reduzierte Patching -Anforderungen als Ergebnis dieser Reduzierung
  • Effektivere Einrichtungssteuerung (Änderungen sind nur durch automatisierte Bereitstellungen möglich)

Abschluss

Mit dem Befehl kubectl exec können Sie eine Shell -Sitzung in jedem aktuell aktiven Container in Ihrem Kubernetes -Cluster starten. Wenn die Protokolle allein nicht ausreicht, können Sie diesen Befehl verwenden, um das Dateisystem des Containers zu untersuchen, die Umgebung zu bewerten und ausgefeilte Debugging -Tools auszuführen. Als letzte Option sollten Sie Ihre Container manuell über Shell -Befehle verwalten.