Ein Ku­ber­netes-Cluster ist ein Verbund aus min­des­tens einem Steue­rungs­kno­ten (Master) und mehreren Ar­beits­kno­ten (Nodes), auf denen con­tai­ne­ri­sier­te An­wen­dun­gen aus­ge­führt werden. Der Cluster verwaltet au­to­ma­ti­siert die Be­reit­stel­lung, Ska­lie­rung und Aus­fall­si­cher­heit der Container. Durch diese Struktur lassen sich An­wen­dun­gen zu­ver­läs­sig und effizient in ver­teil­ten Um­ge­bun­gen betreiben.

Managed Ku­ber­netes
Ku­ber­netes als Managed Service von IONOS Cloud

Die ideale Plattform für per­for­man­te und hoch­ska­lier­ba­re Container-An­wen­dun­gen. Umfassend ins IONOS Cloud Ökosystem in­te­griert und rund um die Uhr pro­fes­sio­nell betreut.

Was ist ein Ku­ber­netes-Cluster?

Bei Clustern handelt es sich im All­ge­mei­nen um einen Verbund von Rechnern, der nach außen hin in sich ge­schlos­sen erscheint. Im Fall von Ku­ber­netes werden statt phy­si­schen Rechnern mehrere Knoten zu Clustern zu­sam­men­ge­fasst. Die Knoten, die auch Nodes genannt werden, sind entweder physische oder virtuelle Maschinen.

Auf den Ku­ber­netes-Clustern werden die einzelnen An­wen­dun­gen aus­ge­führt. Somit handelt es sich bei Ku­ber­netes-Clustern um die höchste Ebene in der Ku­ber­netes-Hier­ar­chie.

Welche Use Cases für Ku­ber­netes-Cluster gibt es?

Cluster sind ein wichtiger Be­stand­teil, um die Vorteile von Ku­ber­netes nutzen zu können. Erst die Cluster er­mög­li­chen es Ihnen, Ihre An­wen­dun­gen be­reit­zu­stel­len, ohne diese an konkrete Maschinen zu binden. Sie dienen also vor allem dazu, Ihre Container zu abs­tra­hie­ren und somit rech­ner­über­grei­fend aus­zu­füh­ren. Dabei sind sie nicht an ein be­stimm­tes Be­triebs­sys­tem gebunden und daher hoch­gra­dig portabel.

Typische An­wen­dungs­be­rei­che sind:

  • De­ploy­ment kom­plet­ter An­wen­dun­gen: Diese sind con­tai­ner­über­grei­fend und un­ab­hän­gig von der zugrunde liegenden Hardware. So lassen sich Updates oder neue Funk­tio­nen schnell ausrollen, ohne dass Än­de­run­gen an einzelnen Servern nötig sind. Das sorgt für eine kon­sis­ten­te Aus­füh­rung Ihrer An­wen­dun­gen in jeder Umgebung.
  • Betrieb in Mi­cro­ser­vice-Ar­chi­tek­tu­ren: Hierbei können An­wen­dun­gen mit­ein­an­der kom­mu­ni­zie­ren und bleiben hoch ska­lier­bar. Einzelne Mi­cro­ser­vices lassen sich un­ab­hän­gig von­ein­an­der ent­wi­ckeln, ak­tua­li­sie­ren und skalieren, was die Agilität und Aus­fall­si­cher­heit der Ge­samt­an­wen­dung deutlich erhöht.
  • Con­ti­nuous In­te­gra­ti­on (CI) / Con­ti­nuous Delivery (CD): Con­ti­nuous-In­te­gra­ti­on- oder Con­ti­nuous-Delivery-Jobs er­mög­li­chen die Au­to­ma­ti­sie­rung von Build-, Test- und De­ploy­ment-Prozessen. Dadurch verkürzen sich Ent­wick­lungs­zy­klen, manuelle Feh­ler­quel­len werden reduziert und neue Features oder Patches gelangen schneller in den Pro­duk­tiv­be­trieb.

Woraus besteht ein Ku­ber­netes-Cluster?

Ein Ku­ber­netes-Cluster besteht aus einer Steu­er­ein­heit, die auch Master-Knoten genannt wird, und einem oder mehreren Worker-Knoten.

Master-Knoten

Der Master-Knoten bildet die Grundlage des gesamten Clusters. Er ist für die Ver­wal­tung des gesamten Clusters zuständig. Dabei kümmert er sich maß­geb­lich um den Zustand des Clusters, indem er bei­spiels­wei­se bestimmt, welche Anwendung wann aus­ge­führt wird. Die Steu­er­ein­heit wiederum teilt sich in ver­schie­de­ne Kom­po­nen­ten auf:

  • API-Server: Der API-Server ist das Frontend des Master-Knotens und ko­or­di­niert die Kom­mu­ni­ka­ti­on mit dem Ku­ber­netes-Cluster. Über die Schnitt­stel­le wird z. B. der Zustand des Clusters definiert. Eine In­ter­ak­ti­on mit der Ku­ber­netes-API ist entweder über die Kom­man­do­zei­le oder über die grafische Be­nut­zer­ober­flä­che in der Google Cloud Console möglich.
  • Scheduler: Der Scheduler kümmert sich um die Ver­tei­lung von Con­tai­nern anhand der zur Verfügung stehenden Res­sour­cen. Er stellt sicher, dass alle Ku­ber­netes-Pods (Con­tai­ner­grup­pen) einem Knoten zu­ge­ord­net sind und somit aus­ge­führt werden können.
  • Con­trol­ler Manager: Mit dem Con­trol­ler Manager werden die ver­schie­de­nen Con­trol­ler, die im Grunde nichts anderes sind als Prozesse, ko­or­di­niert. So wird u. a. si­cher­ge­stellt, dass bei Ausfällen einzelner Knoten an­ge­mes­sen reagiert wird. All­ge­mei­ner ge­spro­chen kümmert sich der Con­trol­ler Manager darum, den aktuellen Zustand eines Clusters zu jeder Zeit an den ge­wünsch­ten Zustand an­zu­pas­sen.
  • etcd: Bei etcd handelt es sich um eine Kom­po­nen­te der Steu­er­ein­heit, die alle wichtigen Cluster-Daten speichert. Somit kann etcd als Back­up­spei­cher für Ku­ber­netes angesehen werden, der in Form eines Key-Value-Storages or­ga­ni­siert ist.

Worker-Knoten

Jeder Cluster hat min­des­tens einen, in den meisten Fällen aber gleich mehrere Worker-Knoten. Diese führen die Aufgaben und An­wen­dun­gen aus, die ihnen von der Steu­er­ein­heit zugeteilt werden. Die Worker-Knoten umfassen zwei Kom­po­nen­ten:

  • Kubelet: Kubelet ist eine Kom­po­nen­te von Worker-Knoten, die si­cher­stellt, dass jeder Container in einem Pod aus­ge­führt wird. Hierzu in­ter­agiert Kubelet mit der ein­ge­setz­ten Container-Engine, einem Programm zur Con­tai­ner­er­stel­lung und -ver­wal­tung.
  • Kube-Proxy: Mithilfe von Kube-Proxy wird si­cher­ge­stellt, dass Netz­werk­re­geln ein­ge­hal­ten werden. Außerdem ist die Kom­po­nen­te dafür ver­ant­wort­lich, eine Ver­bin­dungs­wei­ter­lei­tung durch­zu­füh­ren.

Wie erstellt man Ku­ber­netes-Cluster?

Ein Ku­ber­netes-Cluster kann entweder auf vir­tu­el­len oder phy­si­schen Rechnern be­reit­ge­stellt werden. Um eigene Cluster zu erstellen, gibt es ver­schie­de­ne Mög­lich­kei­ten.

Ku­ber­netes-Cluster mit Minikube aufsetzen

Zum Erstellen eines einfachen Clusters mit einem Worker-Knoten kann Minikube verwendet werden. Hierbei handelt es sich um ein Tool, mit dem sich Ku­ber­netes lokal auf dem eigenen Rechner ausführen lässt. Die In­stal­la­ti­on von Minikube ist auf allen gängigen Be­triebs­sys­te­men möglich und wird von vielen Ku­ber­netes-Tutorials aus­führ­lich be­schrie­ben. Um zu über­prü­fen, ob Ihre In­stal­la­ti­on er­folg­reich war, können Sie im Terminal folgenden Befehl eingeben:

minikube version
bash

Mit folgender Anweisung starten Sie Minikube:

minikube start
bash

Nachdem Sie diesen Befehl aus­ge­führt haben, startet Minikube eine virtuelle Maschine. In dieser läuft au­to­ma­tisch ein Cluster. Um mit Ku­ber­netes zu in­ter­agie­ren, können Sie die Ku­ber­netes-Kom­man­do­zei­le benutzen. Ob diese in­stal­liert ist, erfahren Sie mit folgendem Ter­mi­nal­be­fehl:

kubectl version
bash

Die Details Ihres Clusters können Sie sich mit dem folgenden Befehl anzeigen lassen:

kubectl cluster-info
bash

Auch die einzelnen Knoten, auf denen Ihre An­wen­dun­gen laufen können, können Sie direkt im Terminal einsehen:

kubectl get nodes
bash

Ku­ber­netes-Cluster mit kind erstellen

Möchten Sie einen Ku­ber­netes-Cluster mit mehr als einem Knoten erstellen, können Sie hierfür das Tool kind nutzen. Auch kind ist für alle gängigen Be­triebs­sys­te­me er­hält­lich. Die In­stal­la­ti­on erfolgt am ein­fachs­ten über einen Pa­ket­ma­na­ger. In den hier gezeigten Bei­spie­len wird choco für Windows verwendet:

choco install kind
bash

Für einen Cluster mit mehreren Worker-Knoten erstellen Sie nun eine YAML-Kon­fi­gu­ra­ti­ons­da­tei in einem be­lie­bi­gen Ver­zeich­nis. In dieser Datei de­fi­nie­ren Sie den Aufbau Ihres Clusters. Eine Kon­fi­gu­ra­ti­ons­da­tei für einen Ku­ber­netes-Cluster mit einem Master- und zwei Worker-Knoten kann bei­spiels­wei­se so aussehen:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker

Im Anschluss können Sie den Ku­ber­netes-Cluster gemäß der von Ihnen gewählten Kon­fi­gu­ra­ti­on mit folgendem Befehl erstellen:

kind create cluster --config beispieldatei.yaml
Zum Hauptmenü