Docker - Funktionieren von Kubernetes

Hallo da draußen, zukünftige Tech-Zauberer! Ich freue mich sehr, Ihr Guide auf dieser aufregenden Reise in die Welt von Kubernetes zu sein. Als jemand, der seit Jahren Informatik unterrichtet, kann ich Ihnen versichern, dass Kubernetes zwar wie ein mysteriöses Wesen aus einem Sci-Fi-Film klingen mag, es ist aber actually ein leistungsstarkes Werkzeug, das die Art und Weise, wie wir containerisierte Anwendungen verwalten, revolutioniert. Also, tauchen wir ein!

Docker - Working of Kubernetes

Was ist Kubernetes?

Kubernetes, oft abgekürzt als K8s (weil zwischen 'K' und 's' 8 Buchstaben sind), ist eine quelloffene Container-Orchestrierungsplattform. Ich weiß, das ist viel auf einmal, also lassen Sie uns das ein wenig auseinandernehmen.

Stellen Sie sich vor, Sie betreiben einen riesigen Pizza-Lieferdienst. Sie haben viele Bestellungen (Anwendungen) hereingekommen und müssen Ihre Lieferfahrer (Container) effizient verwalten. Kubernetes ist wie Ihr superkluger Manager, der entscheidet, welcher Fahrer welche Bestellung übernimmt, sicherstellt, dass immer genügend Fahrer auf der Straße sind, und sogar Nachhilfe holt, wenn ein Fahrzeugschaden auftritt.

Schlüsselbegriffe

Bevor wir uns den Details zuwenden, lassen Sie uns einige wichtige Kubernetes-Begriffe kennenlernen:

  1. Pods: Die kleinsten部署单位 in Kubernetes.
  2. Nodes: Die Arbeitsmaschinen in einem Kubernetes-Cluster.
  3. Cluster: Eine Gruppe von Nodes, die containerisierte Anwendungen ausführen.
  4. Control Plane: Das Gehirn von Kubernetes, das den Cluster verwaltet.

Wie Kubernetes funktioniert

Nun, da wir unsere Grundzutaten haben, sehen wir, wie Kubernetes daraus ein leckeres Tech-Souffle zaubert!

1. Die Control Plane

Die Control Plane ist wie der Hauptkoch in unserer Küche. Sie ist verantwortlich für globale Entscheidungen über den Cluster und die Erkennung und Reaktion auf Clusterereignisse.

apiVersion: v1
kind: Pod
metadata:
name: control-plane-pod
spec:
containers:
- name: kube-apiserver
image: k8s.gcr.io/kube-apiserver:v1.21.0
- name: kube-controller-manager
image: k8s.gcr.io/kube-controller-manager:v1.21.0
- name: kube-scheduler
image: k8s.gcr.io/kube-scheduler:v1.21.0

Diese YAML-Datei definiert einen Pod, der die Hauptkomponenten der Control Plane enthält. In einer realen Welt würden diese Komponenten typischerweise auf separaten Maschinen für eine hohe Verfügbarkeit laufen.

2. Nodes

Nodes sind die Arbeiterbienen unseres Kubernetes-Volkes. Sie sind die Maschinen, die tatsächlich unsere containerisierten Anwendungen ausführen.

apiVersion: v1
kind: Node
metadata:
name: worker-node-1
spec:
podCIDR: 10.244.1.0/24
status:
capacity:
cpu: "2"
memory: 4Gi

Diese YAML beschreibt einen Node mit 2 CPUs und 4 GB Speicher. In der Praxis würden Sie normalerweise keine Nodes manuell erstellen - sie würden von Ihrem Cloud-Anbieter oder Ihrer On-Premises-Infrastruktur bereitgestellt.

3. Pods

Pods sind, wo die Magie passiert! Sie sind die kleinsten部署单位 in Kubernetes und enthalten typischerweise einen oder mehrere Container.

apiVersion: v1
kind: Pod
metadata:
name: my-awesome-app
spec:
containers:
- name: my-app-container
image: my-app:1.0
ports:
- containerPort: 8080

Diese YAML definiert einen Pod namens "my-awesome-app" mit einem einzigen Container. Der Container basiert auf dem Image "my-app:1.0" und öffnet Port 8080.

Kubernetes in Aktion

Nun, da wir unsere Zutaten bereit haben, sehen wir, wie Kubernetes sie alle orchestriert!

  1. Sie übermitteln Ihre Anwendung an Kubernetes (normalerweise in Form einer YAML-Datei).
  2. Der API-Server der Control Plane empfängt diese Anfrage.
  3. Der Scheduler entscheidet, welcher Node genug Ressourcen hat, um Ihre Anwendung auszuführen.
  4. Der kubelet auf dem gewählten Node erstellt den Pod und startet die Container.
  5. Die Control Plane überwacht kontinuierlich den Zustand aller Pods und Nodes.

Wenn ein Pod ausfällt, kann Kubernetes ihn automatisch neu starten. Wenn ein Node ausfällt, kann Kubernetes alle Pods, die darauf laufen, auf andere gesunde Nodes neu planen. Es ist wie ein Team von superaufmerksamen Kellnern, das sicherstellt, dass Ihr Dining-Erlebnis perfekt ist!

Kubernetes-Methoden

Hier ist eine Tabelle mit einigen häufigen Kubernetes-Methoden:

Methode Beschreibung
kubectl create Erstellen einer Ressource aus einer Datei oder stdin
kubectl get Anzeigen einer oder mehrerer Ressourcen
kubectl describe Zeigen detaillierter Informationen über eine Ressource
kubectl delete Ressourcen löschen
kubectl apply Eine Konfiguration auf eine Ressource anwenden
kubectl logs Protokolle für einen Container in einem Pod ausgeben
kubectl exec Ein Kommando in einem Container ausführen
kubectl port-forward Eine oder mehrere lokale Ports zu einem Pod umleiten

Schlussfolgerung

Und das war's, Leute! Wir haben eine rasante Tour durch Kubernetes gemacht, von seinen grundlegenden Komponenten bis hin dazu, wie es Ihre containerisierten Anwendungen reibungslos läuft hält. Denken Sie daran, dass das Erlernen von Kubernetes, wie das Kochen eines komplexen Gerichts, Zeit und Übung erfordert. Aber mit Ausdauer und Neugier werden Sie bald Container wie ein Profi orchestrieren können!

Als wir aufhören, erinnere ich mich an eine Studentin, die mir einmal sagte: "Kubernetes ist wie Katzen hüten, aber die Katzen sind Container, und Kubernetes ist der beste Katzenhüter der Welt." Das hätte ich nicht besser ausdrücken können!

Weitersuchen, weiterlernen und vor allem: weiter Spaß an der Technologie haben. Bis zum nächsten Mal, viel Spaß beim Containerisieren!

Credits: Image by storyset