Jump to section

Die Grundlagen von Kubernetes

URL kopieren

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 dem Deployment, dem Management und der 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 Service-Anbieter wie Amazon Web Services (AWS), Google Cloud, IBM Cloud und Microsoft Azure.

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 die API 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. 

Nodes:
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 Node 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.

 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-Deployments 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 zu verwalten. 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.

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

Mit einem Deployment 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. Ein Kubernetes-Deployment automatisiert diesen Prozess und macht ihn wiederholbar. 

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

Mit dem Kubernetes-Deployment-Objekt können Sie:

  • ReplicaSet oder Pods bereitstellen
  • Pods und ReplicaSets aktualisieren
  • Rollbacks auf frühere Deployment-Versionen durchführen
  • Deployments skalieren
  • Deployments anhalten oder fortsetzen

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.

 Ein Kubernetes Operator ist eine Methode für die Paketierung, das Deployment und das Management 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 Operators 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.

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-Orchestrierungstechnologi mit Docker, Kubernetes und der 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.

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.

Red Hat OpenShift ist Kubernetes für das 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.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures