Kubernetes

Was ist Kubernetes?

Kubernetes ist eine sehr beliebte Open-Source-Plattform für die Container-Orchestrierung. Das bedeutet, dass die Kubernetes-Plattform die Verwaltung von Anwendungen ermöglicht, die aus mehreren, meist unabhängigenRuntimes, den sogenannten Containern, bestehen. Seit dem Start des Docker Container Projekts im Jahr 2013 sind Container immer beliebter geworden. Mit steigendem Containereinsatz sind große und weit verbreitete Containeranwendungen jedoch immer schwieriger zu koordinieren. Aus diesem Grund erschien Kubernetes und startete eine Revolution. Kubernetes ist zu einem Schlüsselbestandteil der Containerrevolution geworden, weil es die Verwaltung von Containeranwendungen in großem Umfang vereinfacht. Kubernetes wird am häufigsten mit Docker verwendet (Docker ist die beliebteste Containerisierungsplattform). Kubernetes kann auch mit jedem Containersystem arbeiten, das der Open Container Initiative (OCI) entspricht (OCI ist ein Standard für Container-Image-Formate und Runtimes). Wie bereits erwähnt, ist Kubernetes Open Source und hat daher relativ wenig Einschränkungen bei der Nutzung. Kubernetes kann von jedem, der Container betreiben will, frei genutzt werden, auch in der Public Cloud, lokal, oder kombiniert.

Was sind Container?

Die Containertechnologie verdankt ihren Namen der Schifffahrt. Anstatt eine individuelle Versandart für jedes Produkt zu wählen, werden die Waren in Transportcontainern aus Stahl deponiert. Die sind so konzipiert, dass sie dank ihrer Standardgröße vom Kran am Dock angehoben und an Bord gebracht werden können. Durch die Standardisierung des Prozesses und das Aufbewahren der Artikel kann der Behälter als Einheit bewegt werden. Auf diese Weise fallen weniger Kosten an.

Container ist eine Technologiemethode, die es ermöglicht, eine Anwendung so zu verpacken, dass sie mit ihren Abhängigkeiten isoliert von anderen Prozessen ausgeführt werden kann.

Bei der Container-Computertechnology ist die Situation vergleichbar. Ist es jemals passiert, dass ein Programm auf einer Maschine perfekt funktioniert hat, sich aber in ein großes Durcheinander verwandelt hat, wenn es auf die nächste verschoben wurde? Das kann passieren, wenn die Software vom Computer des Entwicklers auf einen Testserver oder von einem physischen Server aus dem Rechenzentrum des Unternehmens auf einen Cloud-Server migriert wird. Es gibt ein Problem bei der Verschiebung der Software aufgrund von Unterschieden in der Maschinenumgebung, wie beispielsweise installiertem Betriebssystem, SSL-Bibliotheken, Netzwerktopologie, Sicherheit und Speicher.

Mit einem Kran, der einen ganzen Container als Einheit für den Transport auf ein Boot oder einen LKW stellt, wird die Beweglichkeit erleichtert. Die Computer-Containertechnologie tut dasselbe. Die Containertechnologie enthält nicht nur Software, sondern auch Abhängigkeiten, einschließlich Bibliotheken, Binärdateien und Konfigurationsdateien. Sie migrieren als Einheit und überwinden so Rechnerunterschiede (einschließlich Betriebssystemund Basis-Hardware), die zu Inkompatibilitäten und Abstürzen führen. Container erleichtern auch die Bereitstellung von Software auf dem Server.

Containerisierte Microservice-Architekturen haben die Art und Weise, wie Entwicklungs- und Betriebsteams moderne Software testen und einsetzen, grundlegend verändert. Container helfen Unternehmen bei der Modernisierung, indem sie die Skalierung und Bereitstellung von Anwendungen erleichtern. Indem sie ein völlig neues Infrastruktur-Ökosystem geschaffen haben, haben Container aber auch neue Herausforderungen und Komplexitäten mitgebracht.

Große und kleine Softwareunternehmen geben tagtäglich Tausendevon Containern auf, so dass die zu bewältigenden Mengen Schwierigkeiten bereiten.Das ist der Grund, warum sie Kubernetes verwenden.

Warum Kubernetes?

Kubernetes wurde ursprünglich von Google entwickelt und ist, wie bereits erwähnt, eine Open-Source-Container-Orchestrierungsplattform, die die Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen automatisieren soll. Definitiv kann man sagen, dass sich Kubernetes als Standard für die Containerorchestrierung etabliert hat und das Großprojekt der Cloud Native Computing Foundation (CNCF) ist. Kubernetes wird von den bekanntesten Unternehmen der IT-Branche wie Google, Microsoft, IBM, AWS, Cisco, Intel und Red Hat unterstützt.

Hier sind die 4 wichtigsten Gründe, warum immer mehr Unternehmen Kubernetes einsetzen:

  1. Kubernetes ist besonders effizient und reduziert Kosten.

Kubernetes und Container ermöglichen eine viel bessere Nutzung von Ressourcen im Vergleich zu Hypervisoren und VMs, da die Container ein geringeres Gewicht als VMs haben und weniger Speicher, CPU und andere Ressourcen für den Betrieb benötigen.

  1. Kubernetes ist gut mit der Cloud kompatibel.

Kubernetes läuft auf der Google Cloud Plattform (GCP), Amazon Web Services (AVS), Microsoft Azure und kann auch lokal ausgeführt werden. Lasten können bewegt werden, ohne dass Anwendungen neugestaltet oder die Infrastruktur komplett überarbeitet werden muss. Es ermöglicht die Standardisierung auf der Plattform und vermeidet die Sperrung durch Anbieter.

  1. Ihr Cloud-Anbieter verwaltet Kubernetes für Sie.

Große Cloud-Service-Anbieter bieten zahlreiche Kubernetes-as-a-Service Angebote an. Google Cloud Kubernetes Engine, Azure Kubernetes Service (AKS), Amazon EKS, Red Hat OpenShift und IBM Cloud Kubernetes Service verwalten die Kubernetes-Plattform vollständig, so dass Sie sich auf das konzentrieren können, was für Sie am wichtigsten ist – das Hochladen von Anwendungen, die Ihre Nutzer begeistern.

  1. Kubernetes hilft dabei, schneller zu werden und das Unternehmen wachsen zu lassen.

Kubernetes ermöglicht die Bereitstellung einer Self-Service-Plattform als Service (PaaS), die eine Abstraktion der Hardware-Schicht für Entwickler-Teams schafft. Die Teams können schnell und effizient die benötigten Ressourcen anfordern. Brauchen sie mehr Ressourcen, um mit dem zusätzlichen Arbeitsaufwand fertig zu werden, können sie diese kurzfristig erhalten, da sie aus der Infrastruktur stammen, die von allen Teams gemeinsam genutzt wird.

 

Wie funktioniert Kubernetes?

Kubernetes vereinfacht die Nutzung und Handhabung von Anwendungen in einer Microservices-Architektur erheblich. Dies geschieht durch die Schaffung einer Abstraktionsschicht über der Hostgruppe, so dass Entwicklungsteams ihre Anwendungen einsetzen und Kubernetes alle wichtigen Prozesse verwalten lassen.

Die von Kubernetes verwalteten Prozesse sind:

  • Übertragung einer Anwendungsinstanz von einem Host auf einen anderen, wenn es an Ressourcen mangelt oder wenn der Host stirbt.
  • Überwachung des Ressourcenverbrauchs und Ressourcenbegrenzung, um automatisch zu verhindern, dass Anwendungen zu viele Ressourcen verbrauchen und die Anwendungen erneut starten.
  • Automatische Nutzung zusätzlicher Ressourcen, die zur Verfügung gestellt werden, wenn ein neuer Host zum Cluster hinzugefügt wird.
  • Gleichmäßige Verteilung der Anwendungslast auf die gesamte Host-Infrastruktur.
  • Kontrolle des Ressourcenverbrauchs durch das Team oder die Anwendung.
  • Einfache Durchführung von Rollbacks und Canary-Deployments

Kubernetes arbeitet mit einer zentralen Komponente, die im Grunde genommen ein Cluster ist. Ein Cluster besteht aus vielen virtuellen oder physischen Maschinen, die jeweils als spezialisierte Funktion, als Master (Steuereinheit) oder Node (Knoten) dienen. Jeder Node beinhaltet eine Gruppe von einem oder mehreren Containern (ausgestattet mit individuellen Anwendungen). Der Master kommuniziert mit den Nodes in Bezug darauf, wann Container erstellt oder zerstört werden sollen. Gleichzeitig wird den Nodes mitgeteilt, wie sie den Verkehr auf der Grundlage neuer Containeranordnungen umleiten können.

Das folgende Bild zeigt die Kubernetes Cluster-Architektur:

Kubernetes Master

Der Kubernetes-Master ist der wichtigste Punkt, von dem aus Administratoren und andere Benutzer mit dem Cluster interagieren, um die Bereitstellung von Containern und die Planung zu verwalten. Der Cluster hat immer mindestens einen Major, aber es kann mehr als einen Major geben, abhängig vom Muster der Cluster-Replikation. Der Master speichert alle Status- und Konfigurationsinformationen für den gesamten Cluster in ectd, einer persistenten, verteilten Key-Value-Datenbank.Jeder Knoten hat Zugriff auf ectd und durch ihn lernen die Nodes, die von ihnen verwendeten Containerkonfigurationen zu erhalten. etcd kann auf dem Kubernetes-Master oder in eigenständigen Konfigurationen ausgeführt werden.

Der kube-apiserver wird für die Kommunikation mit dem Master und dem Rest des Clusters verwendet. Der kube-apiserver stellt sicher, dass die Konfigurationen in etcd mit den Konfigurationen der im Cluster bereitgestellten Container übereinstimmen.

Der kube-controller-manager verwaltet Regelkreise, die den Zustand des Clusters über den Kubernetes API-Server steuern. Implementierungen, Replikate und Nodes werden von diesem Dienst gesteuert. Für die Node-Erfassung und Zustandsüberwachung, während des gesamten Lebenszyklus, ist der Node-Controller verantwortlich.

Derkube-schedulerdient dazu, Node Workloads im Cluster zu verfolgen und zu verwalten. Dieser Service überwacht die Kapazität und Ressourcen der Knoten und ordnet den Knoten die Arbeitentsprechend ihrer Verfügbarkeit zu.

Der cloud controller-managerist ein Dienst, der in Kubernetes betrieben wird und hilft, „cloud-agnostisch“ zu bleiben. Der cloud controller-manager dient als Abstraktionsschicht zwischen der API und den Tools der Cloud-Anbieter (z.B. Ladebilanz oder Speichervolumen) und ihren repräsentativen Gegenstücken in Kubernetes.

Kubernetes Nodes und Pods

Alle Nodes im Kubernetes-Cluster müssen mit der Runtime des Containers konfiguriert werden, die üblicherweise Docker ist. Die Container-Runtime startet und verwaltet Container, die Kubernetes im Node, im Cluster bereitgestellt hat. Anwendungen wie Webserver, Datenbanken, API-Server usw. laufen im Container.

Ein Kubelet ist ein Vermittlungsprozess, bei dem alle Kubernetes-Nodes ausgeführt werden. Er ist für die Verwaltung des Zustands des Knotens verantwortlich: Starten, Stoppen und Warten von Applikationscontainern, basierend auf Anweisungen der Steuerungsebene. Das Kubelet sammelt Leistungs- und Zustandsinformationen der Nodes, Pods und Container, die es betreibt und teilt diese Informationen mit der Steuerungsebene, um ihm bei der Planung zu helfen.

Derkube-proxyist ein Netzwerk-Proxy, der auf Nodes im Cluster läuft. Es funktioniert auch als Lastverteiler für Dienste, die auf einem Node laufen.

Pod ist eine grundlegende Dispositionseinheit. Ein Pod besteht aus einem oder mehreren Containern, gewährleistet die gemeinsame Platzierung auf dem Hostcomputer sowie die gemeinsame Nutzung der Ressourcen. Jeder Pod hat eine eigene IP-Adresse innerhalb des Clusters und ermöglicht es der Anwendung, Ports ohne Konflikte zu nutzen. Ein Pod kann ein oder mehrere Datenträger, wie beispielsweise ein lokales Festplatten- oder Netzwerklaufwerk, bestimmenund diese für Container im Pod freigeben, so dass verschiedene Container Speicherplatz teilen können.Datenträger können verwendet werden, wenn ein Container Inhalt aufnimmt und ein anderer Container diesen Inhalt an einen anderen Ort überträgt.

Pod Spec wird verwendet, um den geforderten Zustand der Container in einem Pod durch YAML oder JSON zu beschreiben.

Die Vorteile von Kubernetes

  • Kubernetes vereinfacht die Verwaltung von Speicher, vertraulichen Informationen und anderen anwendungsbezogenen Ressourcen.
  • Kubernetes verwaltet Status, Replikation, Lastausgleich und Hardware-Ressourcenzuweisung.
  • Kubernetes macht es einfach, vorkonfigurierte Anwendungen mit Helm-Charts einzurichten.
  • Kubernetes-Anwendungen können in hybriden und multiplen Clouds ausgeführt werden.
Image

Frühere Beiträge

Image
Image

Kontaktieren Sie uns

Image
Sichern Sie sich jetzt Ihr spezielles Angebot!

    Wir verarbeiten Ihre personenbezogenen Daten zur Beantwortung Ihrer Anfrage bzw. Bearbeitung Ihrer Kontaktaufnahme und löschen sie, wenn Ihre Anfrage erledigt ist oder Sie der weiteren Verarbeitung widersprechen. Weitere Infos dazu finden Sie in unsere Datenschutzerklärung.