Anmelden / Registrieren Konto

Container

Die Grundlagen von Kubernetes

Mithilfe von Containern können Entwickler sich ganz auf Ihre Apps konzentrieren, während sich das Operations-Team um die Infrastruktur kümmert. Container-Orchestrierung ist die Methode, mit der Sie diese Deployments in Ihrem Unternehmen verwalten.

Kubernetes ist eine Container-Orchestrierungsplattform auf Open Source-Basis, mit der viele manuelle Prozesse automatisiert werden können, die mit der Bereitstellung, Verwaltung und Skalierung von containerisierten Anwendungen einhergehen.

Mit Kubernetes können Sie containerisierte, ältere und cloudnative Apps in großem Umfang bereitstellen und verwalten - außerdem auch Anwendungen, die als Microservices auf verschiedene Umgebungen aufgeteilt wurden, darunter Private Clouds und Public Clouds wichtiger Anbieter wie Amazon Web Services (AWS), Google Cloud, IBM Cloud und Microsoft Azure.

 

Kubernetes-Architektur

Mit Kubernetes erhalten Sie eine Plattform, auf der Sie Container in Clustern auf physischen oder virtuellen Maschinen planen und ausführen können. Mit der Kubernetes-Architektur werden Cluster in Komponenten aufgeteilt, die zusammen den definierten Zustand des jeweiligen Clusters aufrechterhalten.

Ein Kubernetes-Cluster besteht aus einer Reihe von Knotenmaschinen, auf denen containerisierte Anwendungen ausgeführt werden. Ein Kubernetes-Cluster besteht aus zwei Teilen: der Control Plane und den Rechenmaschinen oder Knoten. Jeder Knoten ist eine eigene Linux®-Umgebung und kann entweder eine physische oder eine virtuelle Maschine sein. Auf den Knoten werden Pods ausgeführt, die aus Containern bestehen.

Die Kubernetes-API ist das Frontend der Kubernetes-Control-Plane und steuert die Interaktion der Nutzer mit dem Kubernetes-Cluster. Der API-Server ermittelt, ob eine Anforderung gültig ist, und verarbeitet sie dann.

Die API ist die Schnittstelle, mit der Kubernetes-Cluster verwaltet, erstellt und konfiguriert werden. Über sie können Nutzer, externe Komponenten und Teile Ihres Clusters miteinander kommunizieren.

In diesem kurzen Kubernetes-Lernprogramm erfahren Sie, wie Sie Cluster erstellen und Anwendungen bereitstellen können. 

 

Weitere Komponenten von Kubernetes-Clustern

Knoten:
Diese Maschinen führen die angeforderten, von der Control Plane zugewiesenen Aufgaben aus.

Pod:
Eine Gruppe aus einem oder mehreren Containern, die in einem einzelnen Knoten implementiert wurde. Ein Pod ist das kleinste und einfachste Kubernetes-Objekt.

Service:
Eine Möglichkeit, eine Anwendung, die auf einer Reihe von Pods ausgeführt wird, als Netzwerkdienst verfügbar zu machen. Damit werden Arbeitsdefinitionen von den Pods entkoppelt.

Kubectl:
Die Befehlszeile, über die Sie Ihren Kubernetes-Cluster verwalten können. Erlernen Sie grundlegende kubectl- und Helm-Befehle.

kubelet:
Eine Minianwendung in jedem Knoten, der mit der Control Plane kommuniziert. Das Kubelet stellt sicher, dass die Container in einem Pod ausgeführt werden.

Wenn Sie bereit für den Einstieg in Kubernetes sind, dann können Sie mit dem Open Source-Tool Minikube einen lokalen Kubernetes-Cluster einrichten und Kubernetes über ein Laptop ausprobieren.

 

So funktioniert Kubernetes

Kubernetes basiert auf dem Prinzip eines gewünschten und eines tatsächlichen Zustands. Kubernetes-Objekte repräsentieren den Zustand eines Clusters und kommunizieren an Kubernetes, wie die Workload aussehen soll.

Sobald ein Objekt erstellt und definiert worden ist, stellt Kubernetes sicher, dass es kontinuierlich existiert. 

Controller übernehmen die aktive Verwaltung des Zustands von Kubernetes-Objekten und nehmen Änderungen vor, durch die der Cluster vom tatsächlichen zum gewünschten Zustand übergeht. 

Entwickler oder Systemadministratoren geben den gewünschten Zustand mit den YAML- oder JSON-Dateien an, die sie an die Kubernetes-API übermitteln. Mithilfe eines Controllers vergleicht Kubernetes den neuen definierten mit dem tatsächlichen Zustand des Clusters.

Der gewünschte Zustand des Kubernetes-Clusters definiert, welche Anwendungen oder anderen Workloads ausgeführt werden sollen, welche Container-Images sie verwenden, welche Ressourcen für sie verfügbar gemacht werden sollen sowie weitere Konfigurationsdetails.

Konfigurationsdaten und Informationen zum Zustand des Clusters befinden sich in Etcd, einer Speicherdatenbank für Schlüsselwerte. Etcd ist fehlertolerant, dezentralisiert und bildet die „Ultimate Source of Truth" für Ihren Cluster.

Kubernetes verwaltet Ihren Cluster automatisch so, dass er dem gewünschten Zustand entspricht. Dies geschieht üblicherweise dadurch, dass Controller Nachrichten an den API-Server senden und so Änderungen auslösen. Manche Kubernetes-Ressourcen verfügen über integrierte Controller.

Beispiel für die Verwaltung des gewünschten Zustands durch Kubernetes: Sie stellen eine Anwendung mit dem gewünschten Zustand „3" bereit, wobei die 3 bedeutet, dass drei Replikate der Anwendung ausgeführt werden sollen.

Wenn einer dieser Container abstürzt, erkennt der Kubernetes ReplicaSet, dass nur zwei Replikate ausgeführt werden, sodass ein weiteres hinzugefügt wird, um den gewünschten Zustand zu erfüllen.

ReplicaSets muss man sich als eine Art Controller vorstellen, die sicherstellen, dass zu einem spezifischen Zeitpunkt eine bestimmte Anzahl an Pods ausgeführt wird.

Kubernetes-Bereitstellungen sind die bevorzugte Methode der Verwaltung von ReplicaSets und stellen deklarative Updates für Pods zur Verfügung, damit Sie diese nicht selbst managen müssen. 

Sie können auch die Autoskalierung von Kubernetes verwenden, um den Umfang Ihrer Services entsprechend dem Nutzerbedarf durchzuführen. Wenn Sie den gewünschten Zustand einer Anwendung/eines Service angeben, können Sie den Controller anweisen, bei einer erhöhten Nachfrage zusätzliche Pods bereitzustellen.

So könnte der gewünschte Zustand Ihrer Anwendung zu Spitzenzeiten von üblicherweise drei Replikaten auf zehn anwachsen.

 

Kubernetes-Bereitstellungen

Eine Kubernetes-Bereitstellung ist ein Ressourcenobjekt in Kubernetes, das deklarative Updates für Apps bereitstellt.

Mit einer Bereitstellung können Sie den Lifecycle einer Anwendung beschreiben, zum Beispiel welche Images für die App verwendet werden, wie viele Pods erforderlich sind und wie sie aktualisiert werden sollen. 

Die manuelle Aktualisierung containerisierter Anwendungen kann einen hohen Zeit- und Arbeitsaufwand mit sich bringen. Eine Kubernetes-Bereitstellung automatisiert diesen Prozess und macht ihn wiederholbar. 

Bereitstellungen werden komplett vom Kubernetes-Backend verwaltet, und der gesamte Aktualisierungsprozess wird auf der Serverseite ausgeführt – ohne Interaktion durch den Client.

Mit dem Kubernetes-Bereitstellungsobjekt können Sie:

  • ReplicaSet oder Pods bereitstellen
  • Pods und ReplicaSets aktualisieren
  • Rollbacks auf frühere Bereitstellungsversionen durchführen
  • Bereitstellungen skalieren
  • Bereitstellungen anhalten oder fortsetzen

 

Kubernetes-Patterns

Kubernetes-Patterns sind Designmuster für containerbasierte Anwendungen und Services.  

Kubernetes kann Entwickler beim Programmieren cloudnativer Apps unterstützen und stellt dazu eine Library mit APIs und Tools zur Verfügung. 

Kubernetes liefert den Entwicklern und Architekten jedoch keine Richtlinien dazu, wie sie damit ein komplettes System erstellen, das bestimmte geschäftliche Anforderungen und Ziele erfüllt. 

Mithilfe von Patterns können Architekturen wiederverwendet werden. Anstatt die gesamte Architektur in Eigenregie zu entwickeln, können Sie bestehende Kubernetes-Patterns verwenden, die außerdem sicherstellen, dass alle Komponenten wie erwartet funktionieren.

Patterns sind die Tools, die ein Kubernetes-Entwickler braucht und die Ihnen demonstrieren, wie Sie Ihr System erstellen können.

 

O’Reilly: Kubernetes Operators

Ein Kubernetes-Operator ist eine Methode zur Paketierung, Bereitstellung und Verwaltung einer Kubernetes-Anwendung. Kubernetes-Anwendungen werden mithilfe der Kubernetes API und dem kubectl-Tooling auf Kubernetes bereitgestellt und verwaltet.

Ein Kubernetes-Operator ist ein anwendungsspezifischer Controller, der die Funktionalität der Kubernetes-API erweitert, um Instanzen komplexer Anwendungen für einen Kubernetes-Nutzer zu erstellen, zu konfigurieren und zu verwalten.

Erfahren Sie, wie Sie mit dem Operator-SDK binnen zehn Minuten einen Kubernetes-Operator bauen können.

Hierzu werden allgemeine Kubernetes-Konzepte für Ressourcen und Controller herangezogen. Allerdings sind auch domain- oder anwendungsspezifische Kenntnisse zur Automatisierung des gesamten Lifecycles der verwalteten Software erforderlich.

Weitere Details zu Kubernetes-Operatoren oder Gründe dafür, warum sie so wichtig sind, erhalten Sie in: How to explain Kubernetes Operators in plain English

Mithilfe von Operatoren können Sie Code zur Aufgabenautomatisierung schreiben, und zwar weit über die grundlegenden Automatisierungs-Features von Kubernetes hinaus. Teams, die einen DevOps- oder SRE-Ansatz (Site Reliability Engineering) verwenden, können Operatoren zur Integration von SRE-Praktiken in Kubernetes verwenden. 

Erfahren Sie mehr über die Funktionsweise von Kubernetes Operators, darunter praktische Beispiele, und wie man sie mithilfe des Operator Frameworks und Software Development Kits erstellt.

 

Unterstützung von DevOps mit Kubernetes

DevOps basiert auf der Automatisierung routinemäßiger Aufgaben sowie der Standardisierung von Umgebungen über den gesamten Lifecycle einer App.

Container ermöglichen eine einheitliche Umgebung für die Entwicklung, Bereitstellung und Automatisierung und gewährleisten die einfache Migration von Apps zwischen Entwicklungs-, Test- und Produktionsumgebungen.

Ein großer Vorteil der Implementierung von DevOps ist die CI/CD-Pipeline (Continuous Integration/Continuous Deployment). Mit CI/CD können Sie Ihren Kunden häufig Apps liefern und die Softwarequalität ohne größeres manuelles Eingreifen validieren.

Wenn ein Container-Lifecycle mit Kubernetes verwaltet wird und dabei Kubernetes-Bereitstellungen und -Operatoren zusammen mit einem DevOps-Ansatz verwendet werden, können Softwareentwicklung und IT-Operations besser aufeinander abgestimmt werden, um eine CI/CD Pipeline zu ermöglichen.

 

Training für Kubernetes

Deploying Containerized Applications Tech Overview 

Diese On-Demand-Reihe aus Kurzvorlesungen und detaillierten Präsentationen enthält eine Einführung in Linux-Container und die Container-Orchestration-Technologie mit Docker, Kubernetes und Red Hat® OpenShift® Container Platform.

 

Red Hat OpenShift Administration 

In diesem Kurs lernen Sie, wie man die Red Hat OpenShift Container Platform installiert und verwaltet. In diesem interaktiven praxisorientierten Kurs erfahren Sie, wie Sie OpenShift-Cluster installieren, konfigurieren und verwalten. Außerdem implementieren Sie Beispielanwendungen, um zu verstehen, wie Entwickler die Plattform nutzen.

 

Introduction to OpenShift Applications

In diesem Einführungskurs erfahren Entwickler, wie sie mit OpenShift Anwendungen erstellen, bereitstellen, skalieren und Probleme beheben. Da sich OpenShift und Kubernetes immer mehr durchsetzen, müssen die Entwickler von heute wissen, wie sie Anwendungen mithilfe einer containerisierten Anwendungsplattform entwickeln, erstellen und bereitstellen.

 

Kubernetes für das Unternehmen

Red Hat OpenShift ist eine Kubernetes-Plattform für Unternehmen. Es integriert alle zusätzlichen Technologiekomponenten, die Kubernetes leistungsstark und unternehmenstauglich machen, darunter Registry, Networking, Telemetrie, Sicherheit, Automatisierung und Services.

Mit OpenShift können Entwickler neue containerisierte Apps erstellen, sie hosten und in der Cloud mit der Skalierbarkeit, Kontrolle und Orchestrierung bereitstellen, die man braucht, um aus einer guten Idee schnell und einfach ein neues Geschäft zu machen.

Sie können Red Hat OpenShift für die Automatisierung Ihrer Container-Operationen 60 Tage lang kostenlos ausprobieren.

Die Tools, die Sie für den Einstieg in Kubernetes benötigen

Red Hat OpenShift product logo

Container entwickeln, einsetzen und verwalten — überall und in jeder Größenordnung.

Steuern Sie Kubernetes-Cluster und -Anwendungen über eine zentrale Konsole mit integrierten Sicherheitsrichtlinien. 

Kubernetes hat noch viel mehr zu bieten