Kubernetes

  • Kubernetes Devops

Was ist Kubernetes?

Kubernetes ist eine Open Source Container Clusterverwaltung von Google. Kubernetes bietet einfache Mechanismen für Deployment, Wartung oder Skalierung von Anwendungen auf mehreren verschiedenen Servern.

 

Kubernetes verwaltet Container die unter Docker laufen. Docker wiederum läuft auf einem Node, auf dem ein Linuxsystem aufgesetzt ist.

 

Warum Kubernetes?

Docker erfreut sich mit seinen containerisierten Anwendungen an immer größerer Beliebtheit, da sie einfach, performant und kompatibel sind. Möchte man die Nutzung von Containern ausdehnen, stößt man jedoch irgendwann auf Grenzen:

  • Wo, welche und wieviele Container gezielt laufen sollen
  • Wie kommunizieren Container untereinander
  • Wann und von wem werden Container deployed
  • Wie eine Vielzahl an Containern kontrolliert managen und überwachen

Kubernetes bietet mit seinem Konzept der Clusterverwaltung eine Lösung für diese Fragen.
Neben Themen wie Skalierung oder Redundanz ist es mit Kubernetes möglich, einfache und schnelle Deployment Prozesse zu realisieren, sowie Staging Umgebungen (Development, Testing und Production) aufzubauen. So kann man je Stage ein Pod in seinem Projekt definieren.

Vorteile von Kubernetes:

 Kubernetes ist leichtgewichtig, einfach und zugänglich.
 Kubernetes ist portabel: Für die Multi-Cloud Welt, Public, Private oder als Hybrid.
 Kubernetes ist erweiterbar: Hochmodular und so designed, dass alle Komponenten leicht austauschbar sind.

 

Neben den Vorteilen die Kubernetes mit sich bringt, bedient es sich an einigen nützlichen Funktionen wie: 

 

  • Etcd für shared configurations und service discovery
  • Flannel für die Herstellung eines Netzwerks zwischen den Containern
 
  • Einen integrierten TCP/IP Proxy Dienst mit Loadbalancer Funktion
 
  • Persistent Volumes, mit denen gewährleistet ist, dass Containerdaten nicht verloren gehen

 Einige Konzepte von Kubernetes:

Cluster: Ein Cluster ist eine Reihe von physikalischen oder virtuellen Maschinen und anderen Resourcen, die Kubernetes zur Verfügung stehen.

Node: Ein Node ist eine physikalische oder virtuelle Maschine auf der Kubernetes läuft. Auf ihnen werden sogenannte Pods aufgesetzt.

Pods: Pods werden von Kubernetes erstellt und verwaltet. Diese Pods beinhalten die Information wie containerisierte Anwendungen deployed werden, mitsamt der Angabe ihrer Volumes und Mountpunkte. Obwohl Pods individuell erstellt werden können empfiehlt es sich
einen Replication Controller zu benutzen.

Replication Controller: Replication Controller gewährleisten, dass immer eine gewisse Anzahl an Replikationen eines Pods zu jeder Zeit laufen. Sie erlauben einfaches Skalieren und handhaben die erneute Erstellung, falls die Maschine neu startet oder anderweitig ausfällt.

Service: Ein Service definiert eine Reihe von Pods und wie man diese erreichen kann, wie etwa durch eine einzelne statische IP oder den zugehörigen DNS-Namen.

Volumes: Volumes werden an bestimmten Punkten des Containers gemountet. Für andere Container und Nutzer sind die Daten dadurch besser verfügbar und bleiben bestehen, selbst wenn der Container mal kaputt oder verloren geht.

 

 

Aussichten

Stellt sich die Frage, wie relevant Kubernetes tatsächlich sein wird? Google sieht es sogar als Kern seiner Cloud-Strategie. Es macht nur Sinn, dass ein Unternehmen wie Google, mit über einem Jahrzehnt Erfahrung in production container management, Interesse besitzt, Kubernetes weiter ausreifen zu lassen. Neben dem Engagement von Google gibt es aber auch noch eine lebendige Community die an dem Projekt mitarbeiten, und Kubernetes in ihre eigenen Produkte eingliedern möchten, wie z.B. neben vielen anderen auch Red Hat.


Quellen:
http://kubernetes.io/
https://github.com/kubernetes/kubernetes
http://container-solutions.com/why-kubernetes-makes-sense/

Neuen Kommentar hinzufügen