© Liashko/Shutterstock.com
Entwickler Magazin
Teil 3: Best Practices Kubernetes-Ressourcenmanagement

Container Orchestration at Scale

Kubernetes ist viel mehr als nur ein Orchestrierungswerkzeug für Container. Es ist ein Rechenzentrumskernel zum Aufbau verteilter Architekturen - ganz gleich, ob in der privaten oder der public Cloud. Diese mehrteilige Artikelserie erläutert beispielhaft und basierend auf mehrjähriger Praxiserfahrung des Autors, welche Primitiven Kubernetes zur Ressourcensteuerung, wie CPU und Hauptspeicher, sowie der Einhaltung von Service-Leveln (Quality of Service) für die unterschiedlichsten Arbeitslasten bereitstellt.

Michael Gasch


ArtikelserieTeil 1: Ressourcenmanagement mit KubernetesTeil 2: Deep Dive Kubernetes-RessourcenmanagementTeil 3: Best Practices Kuberentes-Ressourcenmanagement

Die ersten beiden Artikel dieser Serie zum Ressourcenmanagement mit Kubernetes legten den Schwerpunkt auf die Implementierungsdetails von Containern im Linux-Kernel und wie diese in größeren Umgebungen mittels Kubernetes orchestriert werden können. Nicht nur für Betreiber dieser Plattform, sondern auch für Entwickler, können diese Grundlagen von großem Nutzen sein. Und nicht nur das. Um einen stabilen, effizienten und performanten Betrieb von verteilten Anwendungen auf Kubernetes zu gewährleisten, ist ein tieferes Verständnis gar zwingende Voraussetzung.

Dieser dritte und zugleich letzte Artikel der Serie widmet sich abschließend häufigen Fragestellungen und Empfehlungen aus der Praxis, die direkt umgesetzt werden können. Bevor wir jedoch eintauchen, noch einmal ein kurzer Blick zurück. Denn das Gelernte aus den vorherigen Artikeln ist vielleicht nicht mehr ganz so präsent.

Rekapitulation

Der erste Artikel hat aufgezeigt, dass die mittlerweile berühmten Docker-Container im Linux-Kernel mit denselben Primitiven wie „normale“ Prozesse modelliert werden. Streng genommen kennt der Kernel gar keine Container. Die Verwaltungsstrukturen, die der Kernel im Speicher für jeden Prozess (Thread) abbildet (task_struct), ermöglichen das Setzen von erweiterten Eigenschaften zur Ressourcensteuerung (Cgroups), virtuellen Abschottung (Namespaces) u. v. m. Und genau diese nutzen Docker und Co., um uns die Illusion einer leichtgewichtigen Prozessvirtualisierung im Linux-Betriebssystem zu vermitteln.

Docker hat es also geschafft, die komplexe Administration von Cgroups, Namespaces sowie erweiterten Sicherheitskontrollen in eine einfach zu nutzende und aus Entwicklersicht praktische Toolbox („Build, Ship, Run“) zu integrieren. Das verhalf den teilweise über zehn Jahre alten Kernelimplementierungen zu einem sagenhaften Comeback. Bewährte Technologien zur Anwendungsbereitstellungen, bspw. virtuelle Maschinen, geraten schnell in Verruf, zu schwergewichtig und zu langsam für agile Projekte und Softwarebereitstellung zu sein. Diskussionen entbrannten, ob man überhaupt noch virtuelle Maschinen benötigt, jetzt, da man eine einfach zu nutzende und viel effizientere Form der Prozessisolation auf Betriebssystemebene hat. Diese Diskussionen erübrigen sich, schaut man sich die Implementierung beider Technologien, also Linux-Container u...

Entwickler Magazin
Teil 3: Best Practices Kubernetes-Ressourcenmanagement

Container Orchestration at Scale

Kubernetes ist viel mehr als nur ein Orchestrierungswerkzeug für Container. Es ist ein Rechenzentrumskernel zum Aufbau verteilter Architekturen - ganz gleich, ob in der privaten oder der public Cloud. Diese mehrteilige Artikelserie erläutert beispielhaft und basierend auf mehrjähriger Praxiserfahrung des Autors, welche Primitiven Kubernetes zur Ressourcensteuerung, wie CPU und Hauptspeicher, sowie der Einhaltung von Service-Leveln (Quality of Service) für die unterschiedlichsten Arbeitslasten bereitstellt.

Michael Gasch


ArtikelserieTeil 1: Ressourcenmanagement mit KubernetesTeil 2: Deep Dive Kubernetes-RessourcenmanagementTeil 3: Best Practices Kuberentes-Ressourcenmanagement

Die ersten beiden Artikel dieser Serie zum Ressourcenmanagement mit Kubernetes legten den Schwerpunkt auf die Implementierungsdetails von Containern im Linux-Kernel und wie diese in größeren Umgebungen mittels Kubernetes orchestriert werden können. Nicht nur für Betreiber dieser Plattform, sondern auch für Entwickler, können diese Grundlagen von großem Nutzen sein. Und nicht nur das. Um einen stabilen, effizienten und performanten Betrieb von verteilten Anwendungen auf Kubernetes zu gewährleisten, ist ein tieferes Verständnis gar zwingende Voraussetzung.

Dieser dritte und zugleich letzte Artikel der Serie widmet sich abschließend häufigen Fragestellungen und Empfehlungen aus der Praxis, die direkt umgesetzt werden können. Bevor wir jedoch eintauchen, noch einmal ein kurzer Blick zurück. Denn das Gelernte aus den vorherigen Artikeln ist vielleicht nicht mehr ganz so präsent.

Rekapitulation

Der erste Artikel hat aufgezeigt, dass die mittlerweile berühmten Docker-Container im Linux-Kernel mit denselben Primitiven wie „normale“ Prozesse modelliert werden. Streng genommen kennt der Kernel gar keine Container. Die Verwaltungsstrukturen, die der Kernel im Speicher für jeden Prozess (Thread) abbildet (task_struct), ermöglichen das Setzen von erweiterten Eigenschaften zur Ressourcensteuerung (Cgroups), virtuellen Abschottung (Namespaces) u. v. m. Und genau diese nutzen Docker und Co., um uns die Illusion einer leichtgewichtigen Prozessvirtualisierung im Linux-Betriebssystem zu vermitteln.

Docker hat es also geschafft, die komplexe Administration von Cgroups, Namespaces sowie erweiterten Sicherheitskontrollen in eine einfach zu nutzende und aus Entwicklersicht praktische Toolbox („Build, Ship, Run“) zu integrieren. Das verhalf den teilweise über zehn Jahre alten Kernelimplementierungen zu einem sagenhaften Comeback. Bewährte Technologien zur Anwendungsbereitstellungen, bspw. virtuelle Maschinen, geraten schnell in Verruf, zu schwergewichtig und zu langsam für agile Projekte und Softwarebereitstellung zu sein. Diskussionen entbrannten, ob man überhaupt noch virtuelle Maschinen benötigt, jetzt, da man eine einfach zu nutzende und viel effizientere Form der Prozessisolation auf Betriebssystemebene hat. Diese Diskussionen erübrigen sich, schaut man sich die Implementierung beider Technologien, also Linux-Container u...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang