Kubernetes basiert auf einer Reihe von grundlegenden Konzepten, die zusammenwirken, um containerisierte Anwendungen zu verwalten und zu skalieren. Hier sind einige der wichtigsten Konzepte:
Ein Kubernetes-Cluster besteht aus einer Gruppe von Knoten (Nodes), die die Rechenressourcen bereitstellen, auf denen Container ausgeführt werden.
Ein Node (Knoten) ist eine physische oder virtuelle Maschine, auf der Container laufen. Jeder Knoten wird von einem Kubernetes-Cluster verwaltet.
Ein Pod ist die kleinste und einfachste Einheit in Kubernetes. Es besteht aus einem oder mehreren Containern, die gemeinsam auf einem Knoten ausgeführt werden und gemeinsame Ressourcen und Netzwerke nutzen.
Ein Deployment definiert den gewünschten Zustand einer Anwendung und überwacht den Fortschritt, um den tatsächlichen Zustand an den gewünschten Zustand anzugleichen. Deployments ermöglichen es, automatisch neue Pods zu erstellen oder bestehende zu aktualisieren.
Ein Service ist eine abstrakte Methode, um eine Gruppe von Pods, die eine gemeinsame Funktion erfüllen, als Netzwerkdienst anzusprechen. Services ermöglichen es, dauerhafte IP-Adressen und DNS-Namen zuzuweisen, um den Zugriff auf Pods zu vereinfachen
ConfigMaps und Secrets sind Objekte, die verwendet werden, um Konfigurationsinformationen und vertrauliche Daten (z. B. Passwörter) an Container in einem Pod weiterzugeben.
Ingress ist ein API-Objekt, das den Zugriff auf HTTP- und HTTPS-Routen von außerhalb des Clusters auf Dienste innerhalb des Clusters verwaltet. Es kann Load-Balancing, SSL-Terminierung und Name-basiertes virtuelles Hosting bereitstellen.
Volumes sind Datenbereiche, die von Containern innerhalb eines Pods verwendet werden können. Sie ermöglichen es, Daten zwischen Containern zu teilen und den Lebenszyklus von Daten unabhängig vom Lebenszyklus des Containers zu verwalten.
Namespaces sind virtuelle Cluster innerhalb eines physischen Kubernetes-Clusters, die dazu verwendet werden, Ressourcen in isolierten Umgebungen zu gruppieren und zu organisieren. Sie ermöglichen eine bessere Trennung und Kontrolle von Ressourcen in größeren Umgebungen.
In Kubernetes ist eine Workload eine Gruppe von Objekten, die eine Anwendung oder einen Teil einer Anwendung darstellen und verschiedene Kubernetes-Objekte wie Pods, ReplicaSets, Deployments, StatefulSets oder DaemonSets enthalten können. Sie bieten eine einheitliche API-Schnittstelle zur Verwaltung von Anwendungen.
Workload-Ressourcen sind abstrakte Konstrukte, die verschiedene Arten von Anwendungsworkloads im Kubernetes-Cluster repräsentieren und verwalten.
Die verschiedenen Workload-Ressourcen bieten unterschiedliche Funktionen und Verhaltensweisen, um die Anforderungen verschiedener Anwendungsfälle zu erfüllen:
ReplicaSet: Stellt sicher, dass eine bestimmte Anzahl von Replikaten eines Pods ausgeführt wird, hauptsächlich für zustandslose Anwendungen verwendet.
StatefulSet: Verwaltet zustandsbehaftete Anwendungen, indem es stabile Netzwerkidentitäten und Speicher für Pods bereitstellt.
DaemonSet: Garantiert, dass eine Instanz eines Pods auf jedem Knoten (oder ausgewählten Knoten) im Cluster ausgeführt wird, ideal für Systemdienste wie Monitoring-Agenten oder Log-Sammler.
Neben diesen Workload-Ressourcen gibt es noch weitere, wie Deployment, Job und CronJob, die ebenfalls als Workload-Ressourcen oder Workload-API-Objekte bezeichnet werden.