Kubernetes (K8s) ist eine Open-Source-Plattform für die automatische Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen. Dieser Service vereinfacht die Orchestrierung von Docker-Containern erheblich, erweitert deren Funktionalität und trägt dazu bei, die gesamte Infrastruktur stabiler und skalierbarer zu machen.
Wir haben vor kurzem einen neuen Service gestartet G-Core Labs-Cloud — Verwaltetes Kubernetes. Damit können Sie K8s in unserer Cloud verwenden und Container mühelos verwalten.
In diesem Artikel klären wir, was Kubernetes ist und welche Vorteile es für Ihr Projekt bringen kann, und erzählen über die Möglichkeiten unseres Dienstes.
Die Containerisierung ist eine Möglichkeit, Anwendungen voneinander zu isolieren.
Die Anwendung wird mit all ihren Abhängigkeiten in einem einzigen Container verpackt. Es wird eine separate Umgebung erstellt, welche die ihr streng zugewiesene Menge an Ressourcen verbraucht.
Das ist den virtuellen Maschinen in einer Cloud ähnlich. Aber es gibt mehrere signifikante Unterschiede.
Unterschied zwischen Containern und virtuellen Maschinen:
Die wichtigsten Vorteile von Containern:
Container haben eine Masse von Vorteilen. Aber wenn es viele davon gibt, erscheint ein Problem: sie sind ziemlich schwierig zu verwalten.
Es ist notwendig, neue Container zu erstellen und unnötige zu löschen, Ressourcen zu verteilen, Container auf andere Hosts zu übertragen, wenn nicht genügend Ressourcen vorhanden sind oder eine der Maschinen abgestürzt ist, den Zustand überwachen, aktualisieren und viele andere Aufgaben ausführen. Wenn man dies alles manuell tut, werden alle Ressourcen des Teams beansprucht.
Um das Problem zu lösen und die Orchestrierung der Container zu automatisieren, wurde Kubernetes erstellt.
Kubernetes automatisiert den Containerverwaltungsprozess. Mit seiner Hilfe kann man:
Dabei implementiert Kubernetes einen deklarativen Ansatz. Das bedeutet, dass Sie dem System keine spezifischen Befehle geben müssen. Es reicht aus, nur anzugeben, zu welcher Form alles zugeführt werden soll, und Kubernetes wählt selbst die besten Wege, um einen bestimmten Zustand zu erreichen, und bringt die Infrastruktur über die API in die gewünschte Form.
1. Automatisierung der Prozesse. Wir haben bereits gesagt, dass die Hauptaufgabe von K8s darin besteht, das Containermanagement zu automatisieren. Der Service vereinfacht die Arbeit und entlastet das IT-Team.
2. Verwendung der Multicloud. Kubernetes ermöglicht, Container von einem Host auf einen anderen einfach zu übertragen und sogar mehrere Clouds in einer Infrastruktur zu verwenden.
Sie können Belastungen in der Cloud effizient verteilen, ohne an einen einzigen Anbieter gebunden zu sein und so Ihre Rentabilität der IT-Investitionen steigern.
3. Reduzierung der Ausgaben. K8s verteilt Ihre Infrastrukturressourcen automatisch und weist jedem Container so viel zu, wie erforderlich. Dies hilft, eine übermäßige Nutzung von Rechenleistung und Verschwendung zu vermeiden.
Da Kubernetes außerdem die Arbeitsbelastung des IT-Teams reduziert, können sich die Mitarbeiter anstatt der Verwaltung auf wichtigere Aufgaben konzentrieren und sie schneller zu erledigen. Sie vereinfachen Testprozesse, werden neue Produkte entwickeln und schneller auf den Markt bringen und mehr Gewinn bekommen.
4. Sofortige Skalierung. Kubernetes kann die Ihnen benötigte Rechenleistung automatisch reduzieren oder forcieren.
5. Große Ausfallsicherheit. Wenn ein Container abstürzt und nicht mehr reagiert, kann K8s ihn schnell neu starten. Das Überprüfen des Zustandes von Containern und deren Neustarten erfolgt ebenfalls automatisch, sodass das Team keine Zeit dafür aufwenden muss.
6. Problemloser Kanarienvogel-Test. Vor einem Update muss man es oft zuerst auf Kunden testen. Dazu kann man den aktualisierten Dienst im Testmodus starten und einen kleinen Teil des Traffics dorthin senden. Wenn alles funktioniert, kann man nach und nach den Haupttraffic darauf übertragen.
Kubernetes ermöglicht dies sehr einfach zu machen. Sie können eine Kopie des Containers erstellen, auf dem Ihre Anwendung ausgeführt wird, ein Update auf der Kopie ausführen und den Traffic nach und nach vom Hauptcontainer dorthin übertragen.
Wenn während der Tests festgestellt wird, dass etwas schief gelaufen ist, müssen Sie nichts rückgängig machen. Sie trennen einfach den duplizierten Container und bringen den gesamten Traffic zurück zum Hauptcontainer.
7. Sichere Speicherung von Daten. Kubernetes kann vertrauliche Informationen wie Passwörter, OAuth-Token und SSH-Schlüssel speichern und verwalten.
Sie können vertrauliche Informationen und Anwendungskonfigurationen bereitstellen und aktualisieren, ohne Container-Images zu ändern oder Daten verfügbar zu machen.
Um zu verstehen, wie alles funktioniert, werfen wir einen Blick auf die grundlegenden Konzepte von Kubernetes.
Pod — die Haupteinheit des K8s. Es handelt sich um einen Satz aus einem oder mehreren Containern für die gemeinsame Bereitstellung und mit diesen Containern verbundenen zusätzlichen Ressourcen.
Zusätzliche Ressourcen helfen den Containern, innerhalb des Systems richtig zu funktionieren. Dies können Neustartrichtlinien, Informationen zur Containerausführung (z.B. Portnummern oder Containerversion), gemeinsam genutzter Speicher und ähnliche Elemente sein.
Meistens enthält der Pod einen Container. Aber es können mehrere sein. Container in einen Pod zu vereinigen ist es notwendig, wenn sie eng miteinander verbunden sind: sie führen beispielsweise Microservices einer Anwendung aus, die verwandte Aufgaben ausführen.
Node (oder Knoten) — eine virtuelle Maschine oder ein physischer Server, auf dem Container ausgeführt werden.
Mehrere miteinander verbundene Knoten bilden Cluster.
Pool — eine Gruppe von Cluster-Knoten mit den gleichen technischen Eigenschaften. Eine Gesamtheit identischer Maschinen, auf denen Ihre Infrastruktur ausgeführt wird.
Kubernetes setzt das Konzept Meister — Sklaveum.
Alle Knoten sind in zwei Typen unterteilt:
Masterknoten — dies ist das Hauptelement, das die Arbeitsknoten steuert.
Seine Hauptaufgaben sind:
Ein Masterknoten kann mit einem Vorgesetzten verglichen werden, der den Untergebenen Befehle erteilt und deren Arbeit überwacht.
Und die Arbeiterknoten sind die Untergebenen. Pods werden darauf platziert und gestartet.
Auf den Arbeitsknoten gibt es auch Mechanismen, die den Zustand der Pods überprüfen, den Traffic zwischen ihnen verteilen und verschiedene Befehle vom Master-Knoten ausführen.
Wir haben die Hauptkomponenten von Kubernetes aufgelistet. Natürlich ist dies nicht alles. Für ein allgemeines Verständnis der Funktionsweise des K8s reicht dies jedoch aus.
Managed Kubernetes ist ein neuer Cloud-Dienst von G-Core Labs, mit dem Sie K8s in unserer Cloud-Infrastruktur verwenden und die Arbeit mit den Clustern vereinfachen können.
Der Dienst ermöglicht es, Cluster zu erstellen, Knoten über ein einheitliches G-Core Labs-Panel zu verwalten und Prozesse noch mehr zu automatisieren.
Sie erhalten alle Funktionen von Kubernetes, eine flexible Infrastruktur und wir übernehmen die Routineaufgaben der Bereitstellung von Clustern und der Verwaltung von Masterknoten.
Besonderheiten des Dienstes:
Derzeit kann ein Cluster innerhalb eines Rechenzentrums bereitgestellt werden, aber in Zukunft werden wir die Möglichkeit hinzufügen, Knoten aus verschiedenen Rechenzentren anzuschließen.
Managed Kubernetes hat die Möglichkeit der Autoskalierung: das System wird automatisch die Anzahl der Knoten im Pool erhöhen und verringern. Wenn nicht genügend Ressourcen vorhanden sind, fügt der Dienst zusätzliche virtuelle Maschinen hinzu. Und wenn einige Knoten länger als 20 Minuten nicht verwendet werden, werden sie entfernt.
Sie können die minimale und maximale Anzahl von Knoten im Pool selbst anpassen. Und wenn gewünscht, kann die automatische Skalierung deaktiviert werden.
Wir unterstützen auch die automatische Wiederherstellung: das System überwacht ständig den Zustand der Knoten und, wenn es einen nicht funktionierenden erkennt, leitet deren Ersetzung ein. Diese Funktion ermöglicht die Ausfallsicherheit Ihrer Infrastruktur zu erhöhen. Aber wenn Sie möchten, können Sie es auch deaktivieren.
Die Verwaltung des Dienstes ist über ein Panel oder eine API möglich. Sie können:
Wenn Sie bereits mit der G-Core Labs Cloud verbunden sind, ist Managed Kubernetes bereits in Ihrem Dashboard verfügbar. Sie müssen nichts zusatzlich anschließen.
Vorläufig ist der Dienst im Betatest. Daher ist er kostenlos.
Gehen Sie im Cloud-Dashboard zum Abschnitt Kubernetes und klicken Sie auf „Create Cluster“.
Wählen Sie die Region aus, in der sich das Rechenzentrum befindet, auf deren Ressourcen der Cluster bereitgestellt wird.
Erstellen Sie Pools innerhalb des Clusters.
Geben Sie den Namen des Pools ein (er kann beliebig sein) und geben Sie die Startanzahl der Knoten an — so viele Knoten werden innerhalb dieses Pools nach dem Start des Clusters gestartet.
Geben Sie als Nächstes die minimale und maximale Anzahl von Knoten an. Dies ist für die korrekte Einstellung der Autoskalierung erforderlich. Das System wird die Anzahl der Knoten nicht unter das Minimum senken und nicht mehr als das Maximum erhöhen.
Wenn Sie die Autoskalierung nicht verwenden möchten, geben Sie einfach dieselbe maximale und minimale Anzahl von Knoten an. Dieser Wert muss mit der Startanzahl der Knoten im Pool übereinstimmen.
Als Nächstes wählen wir den Typ der virtuellen Maschinen aus, die im Pool gestartet werden sollen. Da ein Pool eine Gruppe von Knoten mit den gleichen technischen Eigenschaften ist, können wir nur einen Typ der virtuellen Maschinen auswählen.
Sie können einen von fünf Typen von virtuellen Maschinen auswählen:
Als Nächstes wählen wir die Größe und den Typ der Festplatte zum Speichern der Pooldaten aus.
Als Typ kann man vier Varianten der Festplatte auswählen. Sie unterscheiden sich in der Art des Laufwerks (SSD oder HDD), der zulässigen Anzahl von IOPS und der maximalen Übertragungskapazität.
Sobald Sie alle aufgeführten Einstellungen vorgenommen haben, wird der Pool erstellt.
Sie können beliebig viele Pools erstellen. Um dem Cluster einen weiteren Pool hinzuzufügen, klicken Sie einfach auf „Add pool“ und konfigurieren Sie alle Einstellungen wie oben beschrieben.
Weiter können Sie automatische Wiederherstellung aktivieren oder deaktivieren.
Fügen Sie dann die Clusterknoten zum Private network und Subnetwork hinzu. Sie können ein Netzwerk aus den bestehenden auswählen oder ein neues erstellen, indem Sie auf „Add a new network“ klicken.
Als Nächstes müssen Sie einen SSH-Schlüssel hinzufügen, um eine Verbindung zu den Clusterknoten herzustellen. Sie können einen der bereits zu Ihrem Konto hinzugefügten Schlüssel auswählen oder einen neuen erstellen.
Schließlich müssen Sie den Namen des Clusters angeben (kann beliebig sein)…
…und noch einmal alle Cluster-Einstellungen auf der rechten Seite des Bildschirms überprüfen.
Klicken Sie auf „Create Cluster“. Alles ist fertig! Der Cluster wird in wenigen Minuten betriebsbereit sein.
Also haben wir einen Cluster erstellt. Er wird jetzt im Kubernetes-Bereich des Dashboards angezeigt.
Sie können Änderungen daran vornehmen. Klicken Sie dazu auf den Namen.
Sie gelangen in den Abschnitt mit Informationen zum Cluster, in dem sein Zustand, Status, die Anzahl der Pools und Knoten angezeigt werden. Die Registerkarte „Pools“ zeigt eine Liste aller Pools mit grundlegenden Informationen an. Sie können jeden davon bearbeiten:
Sie können auch einen weiteren Pool in den Cluster hinzufügen. Auf der Registerkarte „Pools“ befindet sich am Ende der Liste die Schaltfläche „Add pool“. Drücken Sie darauf. Ein neuer Pool wird auf die gleiche Weise wie beim Erstellen eines Clusters erstellt.
Sie können selbstständig prüfen, welche Belastung auf jeden Knoten anfällt.
Wählen Sie dafür auf der Registerkarte „Pools“ den gewünschten aus und klicken Sie auf den gegenüberliegenden Pfeil. Die Liste der Knoten wird geöffnet. Klicken Sie auf den gewünschten.
Wechseln Sie in den Tab „Monitoring“.
Sie sehen Grafiken und zwei Schaltflächen darüber. Die linke konfiguriert, für welchen Zeitraum die Daten angezeigt werden, und die rechte, wie oft die Informationen auf Ihrem Bildschirm aktualisiert werden.
Statistiken werden für 10 Metriken angezeigt:
Ein Beispiel für eines dieser Grafiken:
Lesen Sie mehr über die Arbeit mit Managed Kubernetes in unserem Wissensbasis, im Abschnitt Kubernetes.
Wir vervollkommnen unsere Cloud-Services, damit unsere Kunden ihr Geschäft noch schneller und kostengünstiger ausbauen können. Eine komfortable und technologische Cloud ermöglicht es Ihnen, Ihre Geschäftsprobleme ohne unnötige Kosten und Mühen zu lösen.