Die Kubectl -Debug -Funktion

Die Kubectl -Debug -Funktion
Ein häufiges Problem bei neuen Kubernetes -Installationen ist, wenn ein Dienst nicht ordnungsgemäß funktioniert. Sie haben einen Dienst erstellt und Ihre Pods über eine Bereitstellung oder einen anderen Task -Controller ausgeführt. Es passiert jedoch nichts, wenn Sie versuchen, darauf zuzugreifen. In diesem Beitrag werden wir den Hintergrund des Debugging erläutern, ein neues Feature in Kubectl. Jede Pod in Kubernetes wird als Docker -Container ausgeführt, der unter Verwendung der Linux -Namespace -Isolierungsfunktion getrennt wird. Für Prozesse hat jeder Container sein Dateisystem. Die Debug -Fähigkeit automatisiert die Anhang und den Namespace Sharing mit einem einzigen Befehl und ohne Manifestdateien.

Jeder Entwickler und DevOps -Ingenieur, der mit Kubernetes zusammenarbeitet. Einfache Kubectl -Protokolle oder Kubectl beschreiben Pods können häufig die Quelle eines Problems bestimmen. Bestimmte Probleme sind jedoch schwieriger aufzuspüren. Sie könnten in bestimmten Fällen Kubectl Exec versuchen. Aber auch das ist möglicherweise nicht ausreichend, da einige Behälter wie Disroless nicht einmal eine Hülle haben, in die Sie ssh können. Wenn also alle Vorstehenden fehlschlagen, welche Möglichkeiten haben unsere Optionen? Das Kubectl -Debug, wie eine neue Anweisung vor nicht allzu langer Zeit hinzugefügt (v1.18) wäre das richtige Werkzeug für die Fehlerbehebung bei den Workloads bei Kubernetes.

Voraussetzungen

Vor der Verwendung von Kubectl müssen wir zunächst das Betriebssystem validieren. In unserer Situation laufen wir Ubuntu 20.04 auf einem Computer. Andere Linux -Verteilungen können erforscht werden, um zu verstehen, ob sie für Ihre Bedürfnisse geeignet sind oder nicht. Ein Minikube -Cluster ist erforderlich, um die Kubernetes -Dienste unter Linux zu implementieren. Um diesen Leitfaden zum Laufen zu bringen, müssen Sie einen Minikube -Cluster auf Ihrem System einrichten. Minikube macht die Bewertung kritischer Merkmale eines Kubernetes -Clusters zum Kinderspiel, wobei alles leicht aktiviert oder entfernt wird. Verwenden Sie den Befehlszeilenterminal, um einen Minikube -Cluster einzurichten. Einer von zwei Ansätzen steht zur Öffnung zur Verfügung. Suchen Sie im Abschnitt Anwendungssuche Ihres Systems nach „Terminal“. Eine Tastaturverknüpfung, die dafür verwendet werden kann, ist Strg+Alt+T:

$ minikube Start

So führen Sie Befehle in einem Pod aus

Sie werden beobachten möchten, was ein im Cluster arbeitender SchOT während mehrerer der folgenden Phasen sieht. Das Ausführen einer interaktiven Busybox -Pod ist die einfachste Methode dazu:

$ kubectl run -it -rm -restart = Never Busybox -image = GCR.IO/Google-Container/Busybox SH

Wie stellt man das ein

Lassen Sie uns ein paar Schoten für diese Lektion ausführen. Sie können entweder Ihre eigenen Informationen verwenden, da Sie höchstwahrscheinlich Ihren eigenen Service debuggen, oder Sie können problemlos miteinander folgen und einen zweiten Datenpunkt erhalten:

$ kubectl erstellen Bereitstellungshostnamen -image = GCR.io/serve_hostname

Der Typ und der Name der erzeugten oder geänderten Ressource werden von Kubectl -Anweisungen gedruckt, die anschließend in späteren Befehlen verwendet werden können. Lassen Sie uns die Anzahl der Repliken im Einsatz auf drei erhöhen:

$ kubectl scale Deployment Hostnames -replicas = 3

Sie können prüfen, ob Ihre Schoten funktionieren, indem Sie Folgendes ausführen:

$ kubectl Get Pods -l App = Hostnamen

Sie können auch überprüfen, ob Ihre Schoten funktionieren. Auf diese Weise können Sie eine Liste von Pod -IP -Adressen erhalten und sie sofort testen:

$ kubectl Get Pods -l App = Hostnames \

Der Beispielbehälter in diesem Beitrag verwendet HTTP am Port, um seinen Hostnamen anzugeben. Wenn Sie dies jedoch selbst debuggen, verwenden Sie die Portnummer, auf der sich Ihre Pods befinden. Von innen eines Pods:

Wenn Sie nicht die gewünschten Ergebnisse in diesem Stadium erhalten, ist es möglich, dass Ihre Schoten nicht gesund sind oder nicht den Hafen hören, von dem Sie glauben, dass. Sie könnten die Kubectl -Protokolle untersuchen, oder Sie müssen möglicherweise sofort in Ihre Pods in Ihre Pods führen und von dort aus debuggen. Wenn bisher alle Schritte genau ausgeführt werden, können Sie Ihre Untersuchung darüber beginnen, warum Ihr Service nicht ordnungsgemäß durchgeführt wird.

Wird der Dienst erstellt?

Der kluge Leser kann eine Idee bekommen, die Sie noch nicht aufbauen müssen, was tatsächlich absichtlich ist. Dieser Schritt wird oft übersehen, aber er ist der erste Artikel, der überprüft wird. Wenn der Dienst noch nicht da ist, erstellen Sie ihn zuerst und überprüfen Sie, ob er noch da ist.

Fallen die Zielschoten unter alle Regeln für Netzwerkrichtlinien einzudringen??

Wenn Sie Regeln für Netzwerkrichtlinien haben, die den ankommenden Verkehr zu Hostnames-* Pods beeinflussen können, sollten Sie sie überprüfen.

Ist der Service angemessen definiert?

Auch wenn es klein erscheint, überprüft der von Ihnen erstellte Dienst genau und entspricht dem Hafen Ihres Pods. Lesen Sie Ihren Service erneut und bestätigen Sie ihn. Wenn Sie es so weit geschafft haben, haben Sie überprüft, ob Ihr Dienst von DNS ordnungsgemäß definiert und gelöst wird. Jetzt ist es an der Zeit, zu überprüfen, ob der Service die von Ihnen erstellten Schoten abholt.

Abschluss

Dieser Artikel behandelte alles, was Sie über die Debug -Funktion von Kubectl wissen müssen. Wir haben auch umfangreiche Beispiele geliefert, die Sie unterstützen. Sie können alle Schritte dieses Leitfadens befolgen, um Ihre Arbeit effektiv zu erledigen. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Führer finden Sie unter Linux -Hinweis.