Kubernetes Grundlagen

Kubernetes Grundlagen (Titelbild)

Was ist Kubernetes?

Willkommen zu unserem Kubernetes-Grundlagen-Leitfaden! Kubernetes, oft abgekürzt als K8s, ist eine Open-Source-Plattform, die für die automatische Bereitstellung, Skalierung und den Betrieb von Anwendungscontainern entwickelt wurde. Im Kern bietet Kubernetes ein Framework für den robusten Betrieb verteilter Systeme, mit dem sich Aufgaben wie Failover, Skalierung und Bereitstellung effizient bewältigen lassen. Damit werden die Container, aus denen eine Anwendung besteht, zur Erleichterung der Verwaltung und Erkennung in logische Einheiten gruppiert.

Warum brauchen wir Kubernetes?

In der schnelllebigen digitalen Welt von heute streben Organisationen ständig nach Effizienz und Agilität in der Anwendungsentwicklung und -verwaltung. Kubernetes erfüllt diese Anforderung, indem es den Prozess der Bereitstellung und Verwaltung komplexer Anwendungen vereinfacht. Es übernimmt die Skalierung und Ausfallsicherung von Anwendungen, stellt Bereitstellungsmuster bereit und vieles mehr. Das bedeutet, dass sich die Entwickler auf ihre Anwendungen konzentrieren können, während Kubernetes sich um die operationellen Herausforderungen kümmert. Dadurch wird nicht nur die Produktivität verbessert, sondern auch die Zuverlässigkeit und Skalierbarkeit der Anwendungen erhöht.

Kubernetes Grundkonzepte

Container und Kubernetes

Ein Container ist ein leichtgewichtiges, eigenständiges Paket, das alles enthält, was zur Ausführung einer Software benötigt wird, einschließlich Code, Laufzeit, Systemtools, Bibliotheken und Einstellungen. Container isolieren sich voneinander und vom Hostsystem, wodurch sie in hohem Maße portabel und konsistent über verschiedene Umgebungen hinweg sind.

Kubernetes geht bei der Containerisierung noch einen Schritt weiter. Es orchestriert diese Container und stellt sicher, dass sie dort laufen, wo und wann du es wünscht, und unterstützt sie dabei hoch zu skalieren, wenn es erforderlich wird. Kubernetes bietet ein Framework für den stabilen Betrieb verteilter Systeme und verwaltet containerisierte Anwendungen auf mehreren Hosts. Es automatisiert die Bereitstellung, Skalierung und den Betrieb von Anwendungscontainern und erleichtert so die Verwaltung komplexer containerisierter Anwendungen.

Knoten und Cluster verstehen

Im Zentrum von Kubernetes stehen zwei Schlüsselkonzepte: Knoten und Cluster.

Knoten: Ein Knoten ist die kleinste Einheit im Kubernetes Ökosystem. Dies kann eine physische oder virtuelle Maschine sein, auf der die Container (die Arbeitslasten) ausgeführt werden. Jeder Knoten verfügt über die erforderlichen Dienste für die Ausführung von Containern, die von Kubernetes verwaltet werden, einschließlich der Laufzeitumgebung für den Container und der Kubernetes-eigenen Tools für die Kommunikation und Verwaltung.

Clusters: Ein Cluster ist eine Menge an Knoten, die in einer Gruppe zusammengefasst sind. Hier laufen alle von Kubernetes verwalteten Containeranwendungen. Cluster bieten die hohe Verfügbarkeit, Skalierbarkeit und Redundanz, für die Kubernetes bekannt ist. Wenn du Anwendungen in Kubernetes bereitstellst, werden diese genau genommen in einem Cluster bereitgestellt. Zu den Hauptkomponenten des Clusters gehören eine Kontrollebene (die globale Entscheidungen über den Cluster trifft) und Knoten (auf denen die Anwendungen tatsächlich laufen).

Dies sind die grundlegenden Konzepte, wie Kubernetes Containeranwendungen verwaltet und eine robuste Infrastruktur für den Einsatz und die Skalierung von Anwendungen bereitstellt.

Kubernetes einrichten

Kubernetes installieren

Zu den ersten Schritten mit Kubernetes gehört das Einrichten der Umgebung, in der du deine Containeranwendungen ausführen kannst. Dieses Setup umfasst ebenfalls die Installation von Kubernetes. Du kannst Kubernetes auf verschiedenen Plattformen installieren, einschließlich lokaler Maschinen, Cloud-Dienste wie unsere VPS, VDS oder unsere Dedicated Serverund Hybrid-Systeme.

Für ein lokales Setup sind Tools wie Minikube oder Kind beliebt. Diese Tools bieten eine einfache Möglichkeit, einen Kubernetes Cluster auf deinem lokalen Rechner zu erstellen. Für Cloud-basierte Lösungen bieten die meisten großen Cloud-Anbieter einen Kubernetes-basierten Dienst (wie GKE von Google, EKS von Amazon oder AKS von Microsoft), der die Erstellung und Verwaltung von Clustern vereinfacht.

Der Installationsprozess umfasst im Allgemeinen folgende Schritte:

  1. Einrichtung einer Maschine (physisch oder virtuell), die die Systemanforderungen von Kubernetes erfüllt.
  2. Installation einer Container-Laufzeitumgebung, wie zum Beispiel Docker. (Lese unseren Leitfaden Wie installiert man Docker mit Cloud-Init)
  3. Die Installation von Kubernetes selbst, die die Einrichtung der Kontrollebene und der Arbeitsknoten umfassen kann.
  4. Konfigurieren von Netzwerkeinstellungen um die Kommunikation zwischen der Steuerungsebene und den Arbeiterknoten zu ermöglichen.

Für eine erfolgreiche Installation ist es wichtig, die spezifische Installationsanleitung für die von dir gewählte Plattform und Umgebung zu befolgen.

Überblick über die wichtigsten Komponenten

Sobald Kubernetes installiert ist, ist es wichtig, seine Schlüsselkomponenten zu verstehen. Diese Komponenten arbeiten zusammen, um den Status deines Clusters zu verwalten und deine Anwendungen auszuführen. Zu den Hauptkomponenten gehören:

  • Kontrollebene: Die Kontrollebene ist dafür verantwortlich, globale Entscheidungen über den Cluster zu treffen, wie zum Beispiel der Planung, Erkennung und Reaktion auf Cluster-Ereignisse. Zu den Schlüsselelementen der Kontrollebene gehören der Kube-API-Server, etcd (ein Key-Value-Speicher für Clusterdaten), der Scheduler und der Controller-Manager.
  • Knoten: Worker-Knoten sind die Maschinen, die deine Anwendungen und Arbeitslasten ausführen. Jeder Knoten hat einen Kubelet, einen Agenten zur Verwaltung des Knotens und zur Kommunikation mit der Kubernetes-Kontrollebene sowie eine Container-Runtime zur Ausführung der Container.
  • Pods: Die Grundeinheit der Bereitstellung in Kubernetes. Ein Pod repräsentiert eine einzelne Instanz einer Anwendung oder eines Prozesses, der in deinem Cluster läuft. Pods enthalten einen oder mehrere Container.
  • Services und Ingress: Diese Komponenten bieten Mechanismen für die Darstellung, den Zugriff und die Kommunikation mit deinen Anwendungen.
  • Speicher: Zum Verständnis von Speicher in Kubernetes gehören Konzepte wie Volumes und PersistentVolumes, die eine Möglichkeit zum Speichern von Daten und zustandsbezogenen Informationen für deine Anwendungen bereitstellen.
  • ConfigMaps and Secrets: Du verwendest diese um Konfigurationsdaten und sensible Informationen für deine Anwendungen und den Kubernetes Cluster zu verwalten.

Bereitstellen von Anwendungen

In diesem Kapitel befassen wir uns mit den praktischen Aspekten der Bereitstellung und Verwaltung von Anwendungen in Kubernetes und konzentrieren uns dabei auf die Erstellung und Verwaltung von Pods und die Nutzung von Diensten zur Verbindung und Skalierung von Anwendungen.

Pods erstellen und verwalten

Die Bereitstellung von Anwendungen in Kubernetes beginnt mit Pods. Kubernetes erstellt und verwaltet einen Pod, die kleinste einsatzfähige Einheit, die typischerweise einen oder mehrere Container enthält.

Pods erstellen:

1. Definiere einen Pod: Dies geschieht mittels YAML oder JSON in einer Pod-Manifest-Datei. Das Manifest beschreibt den Inhalt des Pods, wie zum Beispiel das Container-Image, Ports und Volume-Mounts.

Hier ist ein Beispiel für eine Pod-Konfiguration, welche den Apache-Webserver ausführt:

apiVersion: v1 

kind: Pod 

metadata: 

  name: apache-pod 

  labels: 

    purpose: serve-web 

spec: 

  containers: 

  - name: apache-container 

    image: httpd 

    ports: 

    - containerPort: 80

2. Pod bereitstellen: Verwende den Befehl „kubectl apply“ mit der Pod-Manifestdatei, um den Pod in deinem Cluster zu erstellen.

Für unseren Beispiel-Pod würde der Befehl zur Bereitstellung lauten:

kubectl apply -f apache-pod.yaml

Pods verwalten:

  • Überwachung: Prüfe den Status der Pods mit „kubectl get pods“. Dieser Befehl enthält Informationen über den Status jedes Pods im Cluster.
  • Debugging und Logs: Benutze „kubectl logs [POD_NAME]“, um die Protokolle eines Pods einzusehen, was für die Diagnose von Problemen entscheidend ist.
  • Pods löschen: Pods können mit „kubectl delete pod [POD_NAME]“ entfernt werden. Kubernetes wird versuchen, den Pod herunterzufahren und sauber aus dem Cluster zu entfernen.

Services: Verbinden und Skalieren

Services in Kubernetes sind eine abstrakte Methode, um Anwendungen, die auf einer Gruppe von Pods laufen, darzustellen. Sie bieten eine konsistente Möglichkeit, auf die funktionalen Aspekte einer Gruppe von Pods zuzugreifen, unabhängig von den Änderungen im Cluster.

Services erstellen:

  1. Service definieren: Wie Pods werden auch Dienste in YAML oder JSON definiert. Die Service-Definition enthält Selektoren, um die Pods und Ports zu bestimmen, die aufgedeckt werden sollen.
  2. Dienst bereitstellen: Verwende „kubectl apply“ mit der Dienstdefinitionsdatei, um den Dienst zu erstellen.

Arten von Services:

  • ClusterIP (Standard): Zeigt den Dienst auf einer internen IP im Cluster an. Dieser Typ macht den Dienst nur innerhalb des Clusters erreichbar.
  • NodePort: Zeigt den Dienst auf der IP jedes Knotens an einem statischen Port an. Dies ermöglicht externen Zugriff auf den Dienst über einen festgelegten Port.
  • LoadBalancer: Integriert mit Cloud-basierten Load Balancern, um den Dienst extern bereitzustellen. Dies wird häufig in Cloud-Umgebungen verwendet.

Anwendungen skalieren:

  • Horizontale Pod-Autoskalierung: Erhöht oder verringert automatisch die Anzahl der Pod-Replikate auf Grundlage der CPU-Auslastung oder anderer ausgewählter Metriken.
  • ReplicaSets und Deployments: Verwalte die Bereitstellung und Skalierung von Pods und stelle deklarative Updates für Anwendungen bereit.

Services und Skalierungsmechanismen in Kubernetes ermöglichen eine stabile, zugängliche und effiziente Bereitstellung von Anwendungen. Sie stellen die notwendigen Werkzeuge zur Verfügung, um sicherzustellen, dass Anwendungen unterschiedliche Belastungen bewältigen können und für die Benutzer zugänglich bleiben.

Da du nun die Grundlagen von Kubernetes kennst, zögere nicht ein Kubernetes Profi mit unserem nächsten Leitfaden in der Reihe „Mastering Kubernetes“ zu werden.

Nach oben scrollen