• Zuhause
  • Artikel
  • Murder On The Kubernetes Express: Leben und Tod eines Docker-Containers
Veröffentlicht am 05-03-2019

Murder On The Kubernetes Express: Leben und Tod eines Docker-Containers

Jeden Tag werden Millionen Docker-Container hochgefahren, für ihre Ressourcen verwendet und dann getötet, wenn sie ihren Zweck erfüllt haben und nicht mehr nützlich sind.

Es ist eine brutale Existenz, die jedoch für Sie und mich als Entwickler äußerst vorteilhaft ist

In den letzten Jahren haben Container die Art und Weise, wie Softwareunternehmen ihre Anwendungen erstellen, ausliefern und warten, dramatisch verändert.

Das liegt daran, dass Container es uns ermöglichen, den Code einer Anwendung und all ihre Abhängigkeiten zu packen, damit sie reibungslos und schnell ausgeführt werden kann, unabhängig von der Computerumgebung, in der sie sich befindet.

Nicht nur das, sondern auch Container eignen sich hervorragend für eine Continuous Integration / Continuous Deployment (CI / CD) -Methode, mit der Sie neue Funktionen, Verbesserungen oder Fehlerbehebungen so schnell wie möglich an Ihre Kunden weitergeben können Wachstum und Verbesserung der Software, die Sie liefern.

Und das sind nur die Workflow-Vorteile.

Erinnern Sie sich an die "Geburt und Ermordung" von Containern, von denen ich Ihnen zuvor erzählt habe? Nun, dieser Zyklus wird als horizontale Skalierung bezeichnet - und das ist das Ergebnis, wenn zusätzliche Container hochgefahren werden, wenn Ihre Anwendung mehr Datenverkehr hat, als Ihre aktuellen Ressourcen verarbeiten können.

Wenn Sie im großen Maßstab arbeiten, wird der gesamte Prozess der Automatisierung der Bereitstellung, Verwaltung, Skalierung, Vernetzung und Verfügbarkeit Ihrer Container entscheidend.

Nun denkst du vielleicht: „Whoa! Das hört sich nach einer Menge Arbeit an! “…

Und du hast recht Aber hier sind die guten Nachrichten. Container-Orchestrierungssysteme erledigen alles für Sie.

Und während Sie die Wahl haben, ein Container-Orchestrierungssystem auszuwählen - Docker Swarm, Apache Mesos -, kommt nichts auf dem Markt der Beliebtheit von Kubernetes nahe.

Aus gutem Grund.

Kubernetes ist ein Open-Source-Tool, mit dem Sie die Vorteile einer lokalen, hybriden oder öffentlichen Cloud-Infrastruktur nutzen können. So können Sie Workloads beliebig verschieben. Es bietet Sicherheits-, Netzwerk- und Speicherdienste und kann mehrere Cluster gleichzeitig verwalten.

Darüber hinaus werden viele Prozesse automatisiert, die Sie früher manuell ausführen mussten. Zum Beispiel:

  • Steuert, auf welchem ​​Server Ihr Container gehostet wird
    • Ermöglicht die einfache und schnelle Skalierung Ihrer Ressourcen
    • Automatisiert Rollbacks für den Fall, dass bei Ihrer Anwendung Probleme auftreten
    • Berechnet den "besten Standort" für Ihre Container, um den Containerausgleich zu optimieren
    • Skaliert Ressourcen und Anwendungen in Echtzeit
    • Ziemlich cool, richtig?

      Letztendlich nutzt Kubernetes Hardware effizienter, sodass Sie Ihre Ressourcen maximieren und Geld sparen können.

      Aber hier wird es knifflig.

      Wenn Sie ein Container-Orchestrierungs-Tool wie Kubernetes verwenden, beschreiben Sie die Konfiguration Ihrer Anwendung in einer YAML-Datei.

      In dieser Konfigurationsdatei teilen Sie Kubernetes mit, wie zum Beispiel das Sammeln von Container-Images, das Herstellen von Netzwerken zwischen Containern, das Einhängen von Speicher-Volumes und der Speicherort der Protokolle für diesen Container erfolgen.

      Container werden auf Hosts bereitgestellt, normalerweise in replizierten Gruppen. Wenn es Zeit ist, einen neuen Container in einem Cluster bereitzustellen, plant Kubernetes die Bereitstellung und sucht nach dem am besten geeigneten Host, um den Container basierend auf vordefinierten Einschränkungen Ihrer Wahl zu platzieren, wie etwa der Verfügbarkeit von CPU oder Arbeitsspeicher.

      Wenn der Container einmal auf dem Host ausgeführt wird, verwaltet Kubernetes seinen Lebenszyklus gemäß den Spezifikationen, die Sie in der Dockerfile des Containers festgelegt haben.

      Das bedeutet, dass Kubernetes all diese Aufgaben für Sie automatisiert. Dies hängt jedoch von der Konfiguration ab, die Sie als Entwickler eingerichtet haben.

      Auch wenn Sie ein Crack-Engineer sind, wissen Sie wahrscheinlich nicht genau, wie viel Verkehr Sie innerhalb des ersten Monats nach der Bereitstellung erhalten werden - oder wie sich Ihre Anwendung verhält.

      Deshalb ist die Überwachung Ihrer Kubernetes-Cluster gerade in den ersten Monaten von großer Bedeutung.

      Jetzt gibt es einige wirklich gute Open Source-Überwachungstools für Ihren Desktop.

      Prometheus enthält beispielsweise eine leistungsstarke und flexible Abfragesprache - PromQL -, mit der Sie Ihre Kubernetes-Cluster abkratzen und aufschlussreiche Echtzeitmesswerte in einer Zeitreihendatenbank aufzeichnen können.

      Wenn Sie Prometheus mit Grafana - einem Datenvisualisierungstool - koppeln, werden die Messwerte in übersichtlichen Diagrammen angezeigt.

      Prometheus & Grafana bieten zusammen robuste Datenvisualisierungs- und Überwachungsfunktionen für Ihre Kubernetes-Cluster.

      Diese Tools sind jedoch nur auf dem Desktop verfügbar.

      Das bedeutet für den ersten Monat oder so - wenn Sie immer noch die Feinabstimmung vornehmen und erfahren, wie sich Ihr Cluster verhält oder wie viel Datenverkehr Ihre Anwendung sieht, sind Sie an Ihren Schreibtisch gebunden.

      Tatsächlich gab es bis vor kurzem keine großartigen mobilen Lösungen, um die Metriken Ihres Clusters einzugeben, wenn Sie unterwegs sind

      Wenn Sie den Prometheus / Grafana-Überwachungsstack auf Ihrem Kubernetes-Cluster ausführen, gibt es jetzt eine mobile Anwendung namens Aetos, mit der Sie die Gesundheit und Leistung Ihres Kubernetes-Clusters direkt vom Telefon aus überwachen können.

      Dies ist sehr hilfreich, wenn Sie sich etwa in diesem ersten Monat Ihres Starts befinden, insbesondere wenn Sie nicht die ganze Zeit an Ihren Schreibtisch gebunden sein möchten.

      Und die Anwendung ist sehr einfach zu bedienen. Fügen Sie einfach Ihre Grafana-URL in die App sowie Ihren Grafana-API-Schlüssel ein. Mit Aetos erhalten Sie Echtzeitdaten in übersichtlichen Grafiken.

      Derzeit bietet die App Messdaten für die CPU-Nutzung, die Speicherbelegung, die Netzwerksättigung und die Systemsättigung in einer durchblätternbaren All-in-One-Ansicht.

      Die Ergebnisse werden in verschiedenen Diagrammen dargestellt. So können Sie sofort einen Blick auf die Leistung werfen und mit einem einfachen Daumenschlag zwischen ihnen hin und her wechseln.

      Außerdem basiert es auf einem Open-Source-Stack, sodass Sie sich keine Sorgen um die Preisgestaltung machen müssen

      Natürlich hat es seine Vorteile.

      Unabhängig davon, wie Sie Ihre Cluster überwachen, wenn Sie über eine ältere Codebasis verfügen, die Sie noch nicht in Containern gespeichert haben, möchten Sie möglicherweise darüber nachdenken, ob dies möglich ist.

      Containerisierung ist schließlich der Weg der Zukunft.

      Wenn es um das Töten von Containern geht, die am Ende ihres Lebenszyklus angelangt sind, wird es meiner Meinung nach leichter sein, Kubernetes die Dreckarbeit für Sie erledigen zu lassen, anstatt ihnen ins Gesicht zu starren und den Abzug selbst zu drücken.

      … Es sei denn, Sie sind auf etwas gefasst (Sie sind ein herzloses Monster).

Siehe auch

Google House Demos Next Billion User (NBU) -Produkte für AfrikaCoderVlogger Digest # 1: Tägliche Programmierungsnachrichten & ArtikelDie ungewöhnliche Tech-Community, von der Sie noch nie gehört haben - 2018 WondersWie man ein Teamplayer in der Techwelt ist