Kubernetes: Eine Einführung

predic8
6 Aug 202025:25

Summary

TLDRIn diesem Video gibt es einen detaillierten Überblick über Kubernetes, ein Open-Source-Projekt, das ursprünglich von Google entwickelt wurde. Tobias erklärt, was Kubernetes ist, wie es als Orchestrator für Container funktioniert und welche Vorteile es bietet. Er diskutiert die Architektur, die zentrale API, verschiedene Komponenten und wie Kubernetes die Verteilung und Verwaltung von Software im Cluster ermöglicht. Zudem spricht er über die Schnittstellen wie CRI, CNI und CSI, die Flexibilität in der Nutzung von Kubernetes und seine Fähigkeit, hochverfügbare Systeme zu erstellen. Abschließend betont er die Stärke von Kubernetes als Plattform, die Entwickler von Herstellerabhängigkeiten befreit und die Portabilität von Software fördert.

Takeaways

  • 😀 Kubernetes ist ein Open-Source-Projekt, das ursprünglich von Google-Entwicklern initiiert wurde und für die Verwaltung von Containern in einem Cluster konzipiert ist.
  • 🚀 Es bietet Orchestrierungsfunktionen für Container, die automatische Platzierung, Skalierung und Migration von Anwendungen ermöglicht.
  • 👥 Kubernetes ist Teil der Cloud Native Foundation und hat eine große Community, die an der Weiterentwicklung mitgewirkt hat.
  • 🔧 Es ist modular aufgebaut und bietet viele Schnittstellen für die Integration von Fremdprodukten, um zusätzliche Funktionalitäten bereitzustellen.
  • 🌐 Kubernetes unterstützt die Verwendung von Microservices, bietet jedoch keine spezifischen Vorgaben für deren Entwicklung, sondern ist eine allgemeine Plattform.
  • 🔒 Die Sicherheit von Anwendungen, die auf Kubernetes laufen, hängt von der Konfiguration und den zusätzlichen Produkten ab, die eingesetzt werden.
  • 💾 Es bietet das Container Storage Interface (CSI) für die Verwaltung von persistenten Datenspeichern für Container.
  • 🌐 Das Container Network Interface (CNI) ermöglicht es jedem Pod, eine eigene IP-Adresse zu haben und sich unabhängig vom Standort mit anderen Pods zu verbinden.
  • 🔄 Kubernetes kann hochverfügbar eingerichtet werden, indem es auf mehreren Knoten in einem Rechenzentrum läuft, und unterstützt die Verwendung mehrerer Rechenzentren durch die Federation.
  • 🛠️ Die Verwendung von Kubernetes fördert die Infrastruktur-as-Code-Bewegung, da die Konfiguration des Clusters in YAML-Dateien deklarativ definiert wird.
  • 🔄 Es ermöglicht die Automatisierung von Workflows, einschließlich des Rollouts neuer Features und des Testens in isolierten Namespaces.

Q & A

  • Was ist Kubernetes und was wurde es entwickelt?

    -Kubernetes ist ein Open-Source-Projekt, das von einigen Google-Entwicklern initiiert wurde und das das interne System Borg von Google nachempfunden hat, diesmal aber für die Öffentlichkeit.

  • Welche Rolle spielt Kubernetes in Bezug auf die Verwaltung von Software-Containern?

    -Kubernetes agiert als Orchestrator, der mehrere Knoten kontrolliert und dafür sorgt, dass die Software auf den Knoten läuft, egal ob es sich um Hardware- oder Virtual Machines handelt.

  • Welche ist die zentrale Komponente von Kubernetes?

    -Die zentrale Komponente von Kubernetes ist die API, die gut designed ist und die Kommunikation mit anderen Komponenten wie der Datenbank und dem Scheduler steuert.

  • Was ist der Unterschied zwischen einem Pod und einem Container in Kubernetes?

    -Ein Pod ist eine Gruppe von Containern, die auf einem Knoten zusammenlaufen und zusammengehörig sind. Ein Container ist eine isolierte Laufzeitumgebung für eine Anwendung.

  • Was ist das Container Runtime Interface (CRI) in Kubernetes?

    -Das CRI ist eine Schnittstelle, die es Kubernetes ermöglicht, mit verschiedenen Container-Runtimes wie Docker oder anderen zu arbeiten, unabhängig davon, wie ein Knoten aussieht.

  • Wie sorgt Kubernetes für Netzwerkkommunikation zwischen Pods?

    -Kubernetes verwendet das Container Network Interface (CNI), um jedem Pod eine eigene IP-Adresse zuzuweisen und die Kommunikation zwischen verschiedenen Pods zu ermöglichen.

  • Was sind die sogenannten 'Network Policies' in Kubernetes?

    -Network Policies sind eine Funktion von Kubernetes, die es ermöglicht, Firewall-Regeln zu definieren, die steuern, welche Pods auf welche anderen Pods zugreifen dürfen.

  • Wie wird Load Balancing in Kubernetes realisiert?

    -Load Balancing wird in Kubernetes durch sogenannte Services realisiert, die eine virtuelle IP-Adresse zuweisen und den Zugriff auf die Anwendungen im Cluster load-balancen.

  • Was ist das 'Container Storage Interface' (CSI) in Kubernetes?

    -Das CSI ist eine Schnittstelle, die definiert, wie Kubernetes mit verschiedenen Speicherlösungen interagieren kann, um Dateien für Anwendungen persistent zu speichern.

  • Welche Vorteile bringt Kubernetes in Bezug auf die Verwaltung und Skalierung von Anwendungen?

    -Kubernetes ermöglicht eine zentrale Verwaltung von Anwendungen, die automatische Skalierung, die Verteilung auf verschiedene Knoten, die automatische Wiederherstellung bei Ausfällen und die Verwendung von verschiedenen Schnittstellen für Speicher, Netzwerk und Authentifizierung.

  • Was sind die sogenannten 'Namespaces' in Kubernetes und was sind ihre Funktion?

    -Namespaces sind eine logische Trennung von Ressourcen innerhalb von Kubernetes. Sie ermöglichen es, verschiedene Teams oder Projekte voneinander zu isolieren und zu verwalten.

  • Wie kann man Kubernetes nutzen, um die Infrastruktur mit Code zu beschreiben?

    -Kubernetes unterstützt die Infrastruktur-as-Code-Bewegung, indem es die Möglichkeit bietet, die Konfiguration des Clusters in YAML oder JSON-Dateien zu definieren, die dann automatisch von Kubernetes verarbeitet werden.

Outlines

00:00

😀 Einführung in Kubernetes

Tobias von der predic8 aus Bonn stellt das Open-Source-Projekt Kubernetes vor, das ursprünglich von Google-Entwicklern initiiert wurde und als Nachfolger des internen Systems Borg entwickelt wurde. Er erklärt, dass Kubernetes kein Mittel gegen Corona ist, sondern einen Orchestrator darstellt, der Software-Container verwaltet. Tobias kündigt an, dass er in Teil 1 einen Überblick über Kubernetes geben und in Teil 2 die praktische Umsetzung in Code zeigen wird. Er betont die Größe und die Vielfalt der Kubernetes-Community und deren Beiträge zum Projekt.

05:16

🤔 Funktionsweise von Kubernetes als Orchestrator

Der Orchestrator in Kubernetes sucht nach einem geeigneten Knotenpunkt, um die Software zu starten, egal ob es sich um Hardware oder virtuelle Maschinen handelt. Er kümmert sich um die automatische Migration der Software, falls ein Knoten ausfällt, und stellt sicher, dass die Anweisungen des Benutzers, wie z.B. 'die Software soll einmal im Cluster laufen', immer erfüllt bleiben. Tobias erklärt, wie die Orchestrierung die Arbeitsbelastung für Unternehmen reduziert und wie sie die Software-Verfügbarkeit gewährleistet, selbst wenn Knoten ausfallen.

10:18

🛠️ Architektur und Komponenten von Kubernetes

Kubernetes besteht aus mehreren zentralen Komponenten, darunter einer gut gestalteten API, die die Kernkomponente ist. Tobias erklärt die Rolle von Deployments, ReplicaSets, Pods, den Scheduler und den Controller Manager. Er beschreibt, wie diese Komponenten zusammenarbeiten, um die Software im Cluster zu verwalten und sicherzustellen, dass sie bei Ausfällen neu gestartet wird. Zudem werden Schnittstellen wie das Container Runtime Interface (CRI) und das Container Network Interface (CNI) erläutert, die für die Interaktion mit anderen Systemen und die Bereitstellung einer eigenen IP-Adresse für jeden Pod sorgen.

15:21

🔒 Netzwerk- und Speicherkonzepte in Kubernetes

Tobias erläutert die Netzwerk- und Speicherkonzepte in Kubernetes, einschließlich der Verwendung von Network Policies für die Firewall-Steuerung und LoadBalancern für die Optimierung der Kommunikation zwischen Pods. Er beschreibt das Sky DNS-Addon, das die Kommunikation mit Services erleichtert, und das Container Storage Interface (CSI), das die Speicherung von Daten ermöglicht, unabhängig davon, ob ein Knoten ausfällt. Zudem wird auf die Hochverfügbarkeits-Möglichkeiten von Kubernetes eingegangen, die durch die Verwendung mehrerer Knoten und das Setup von etcd erreicht werden können.

20:27

🤷‍♂️ Hinterfragen der angeblichen Vorteile von Kubernetes

Tobias hinterfragt die oft behaupteten Vorteile von Kubernetes, wie Zuverlässigkeit, Skalierbarkeit, einfache Entwicklung, Microservices und Kostenersparnis. Er stellt fest, dass viele dieser Vorteile nicht direkt durch Kubernetes erreicht werden, sondern dass sie von der Art der Software und ihrer Implementierung abhängen. Er betont, dass Kubernetes nicht als allumfassende Lösung für alle Probleme angesehen werden sollte, sondern als ein Werkzeug, das bestimmte Herausforderungen im Bereich der Containerverwaltung lösen kann.

🌐 Warum Kubernetes so beliebt ist

Schließlich erklärt Tobias, warum Kubernetes weltweit so beliebt ist: Es bietet eine funktionierende Open-Source-Plattform mit einer aktiven Community und einer großen Anzahl von Unternehmen, die sich um die Entwicklung und den Betrieb kümmern. Kubernetes ermöglicht es, Software unabhängig von der verwendeten Infrastruktur zu betreiben und bietet modulare Erweiterungen durch Schnittstellen und Plugins. Tobias betont die Flexibilität und die Möglichkeit zur Automatisierung von Kubernetes, die es zu einer bevorzugten Wahl für viele Entwickler macht.

Mindmap

Keywords

💡Kubernetes

Kubernetes ist ein Open-Source-Orchestrierungssystem für Container, das ursprünglich von Google entwickelt wurde. Es ermöglicht die Verwaltung und Skalierung von Anwendungen, indem es Container auf verschiedenen Knoten automatisch startet, verschiebt und überwacht. Im Video wird erklärt, wie Kubernetes die Verfügbarkeit und Skalierbarkeit von Softwareanwendungen verbessert.

💡Orchestrator

Ein Orchestrator ist eine Software, die mehrere Knoten oder Container verwaltet und koordiniert, um sicherzustellen, dass Anwendungen wie gewünscht ausgeführt werden. Kubernetes fungiert als Orchestrator, der Container über verschiedene Knoten hinweg verteilt, um Ausfallsicherheit und optimale Ressourcennutzung zu gewährleisten. Im Video wird die Rolle des Orchestrators bei der Migration von Software und dem automatischen Neustart von Containern betont.

💡Cloud Native Foundation

Die Cloud Native Foundation ist eine Organisation, die Open-Source-Projekte wie Kubernetes unterstützt und verwaltet. Sie fördert die Zusammenarbeit und Entwicklung von cloud-nativen Technologien. Im Video wird erwähnt, dass Kubernetes unter der Schirmherrschaft der Cloud Native Foundation steht, was die Beteiligung vieler Firmen und Entwickler an diesem Projekt ermöglicht.

💡Deployment

Ein Deployment ist eine Konfiguration in Kubernetes, die definiert, wie viele Instanzen einer bestimmten Anwendung laufen sollen. Es wird in der Regel in einer YAML-Datei beschrieben und an die Kubernetes-API übermittelt. Im Video wird erklärt, wie ein Deployment erstellt wird und wie Kubernetes diese Information verwendet, um Container zu starten und zu verwalten.

💡Pod

Ein Pod ist die kleinste und einfachste Kubernetes-Einheit, die eine oder mehrere Container enthält, die zusammen auf einem Knoten ausgeführt werden. Pods teilen sich Netzwerk und Speicherressourcen. Im Video wird die Bedeutung von Pods und deren Verwaltung durch Kubernetes-Komponenten wie den Scheduler und Controller Manager erläutert.

💡Scheduler

Der Scheduler ist eine Komponente in Kubernetes, die dafür verantwortlich ist, Pods auf den verfügbaren Knoten im Cluster zu platzieren. Er berücksichtigt die Ressourcenauslastung und andere Kriterien, um optimale Platzierungen zu finden. Im Video wird der Scheduler als eine Endlosschleife beschrieben, die kontinuierlich die Datenbank überwacht und neue Pods auf geeignete Knoten verteilt.

💡Controller Manager

Der Controller Manager ist eine Komponente in Kubernetes, die verschiedene Controller-Prozesse verwaltet, die den Zustand des Clusters überwachen und auf Änderungen reagieren. Beispielsweise erstellt er neue ReplicaSets basierend auf Deployments und sorgt für die Skalierung und Replikation von Pods. Im Video wird der Controller Manager als Beobachter und Reagierer auf Veränderungen im Cluster beschrieben.

💡Persistent Volume

Ein Persistent Volume (PV) ist eine Speicherressource in Kubernetes, die unabhängig von den Pods besteht und für dauerhafte Datenspeicherung verwendet wird. Es ermöglicht Datenpersistenz, auch wenn die Pods neu gestartet oder verschoben werden. Im Video wird die Bedeutung von Persistent Volumes für die Datensicherheit und -verfügbarkeit in Kubernetes-Umgebungen hervorgehoben.

💡Container Runtime Interface (CRI)

Das Container Runtime Interface (CRI) ist eine Kubernetes-Schnittstelle, die es ermöglicht, verschiedene Container-Laufzeitumgebungen zu integrieren und zu verwalten. Üblicherweise wird Docker als Laufzeitumgebung verwendet, aber CRI erlaubt auch andere Implementierungen. Im Video wird erläutert, wie Kubernetes durch CRI flexibel mit verschiedenen Container-Laufzeiten arbeiten kann.

💡Container Network Interface (CNI)

Das Container Network Interface (CNI) ist eine Kubernetes-Schnittstelle, die sicherstellt, dass jeder Pod eine eigene IP-Adresse erhält und die Kommunikation zwischen Pods ermöglicht. Es ermöglicht die Integration verschiedener Netzwerk-Plugins und -Lösungen. Im Video wird beschrieben, wie CNI die Netzwerkkonfiguration und -verwaltung in Kubernetes vereinfacht und optimiert.

Highlights

Tobias von der predic8 aus Bonn präsentiert Kubernetes, ein Open-Source-Projekt, das von Google-Entwicklern initiiert wurde.

Kubernetes dient als Orchestrator, ähnlich wie das interne Google-System Borg, und wird heute von der Cloud Native Foundation verwaltet.

Kubernetes hat eine riesige Community, mit 2500 bisherigen Beitragenden und 1,5 Millionen Sourcecode-Zeilen.

Ein Orchestrator ist ein Softwaresystem, das mehrere Knoten steuert und Software automatisch an passenden Knoten startet.

Kubernetes kann Software automatisch migrieren, falls ein Knoten ausfällt oder ein Sicherheitsupdate erforderlich ist.

Kubernetes unterstützt die gleichzeitige Ausführung von Software an mehreren Knoten, um Redundanz und Verfügbarkeit zu gewährleisten.

Kubernetes besteht aus mehreren Komponenten, zentral ist die API, die gut designed ist und die Kernkomponenten steuert.

Der Controller Manager beobachtet Deployments und stellt sicher, dass die Software immer an dem richtigen Knoten läuft.

Der Scheduler ist für die Zuweisung von Pods zu Knoten verantwortlich, basierend auf Ressourcenverfügbarkeit.

Kubernetes hat Schnittstellen wie das Container Runtime Interface (CRI), das unabhängig von der verwendeten Container-Engine ist.

Das Container Network Interface (CNI) gewährleistet, dass jeder Pod eine eigene IP-Adresse erhält und mit anderen Pods kommunizieren kann.

Kubernetes ermöglicht es, durch die Verwendung von Services und LoadBalancern die Kommunikation zwischen Pods zu optimieren.

Das Kubernetes-Ökosystem hat zu 141 Partnerfirmen geführt, die mit Kubernetes interagieren und zusätzliche Produkte anbieten.

Kubernetes kann hochverfügbar installiert werden, mit mehreren Knoten und einem Cluster, der als Datenbank fungiert.

Kubernetes bietet Flexibilität, indem es die Möglichkeit bietet, in verschiedenen Rechenzentren und mit einem Federation-Setup zu arbeiten.

Kubernetes wird von vielen Unternehmen verwendet, da es zuverlässig ist, skalierbar und unterstützt die Plattformunabhängigkeit.

Kubernetes ist modular aufgebaut und bietet viele Schnittstellen für die Erweiterung mit Fremdprodukten.

Kubernetes unterstützt die Infrastruktur-as-Code-Bewegung, indem es die Möglichkeit bietet, Konfigurationen in Dateien zu deklarieren.

Kubernetes hat sich auf die Lösung von Problemen konzentriert, die Entwickler tatsächlich lösen wollen, und bietet dazu eine solide Grundlage.

Das Video bietet einen Überblick über Kubernetes und seine Funktionsweise, sowie seine Vor- und Nachteile.

Transcripts

play00:00

Ja Hallo. Mein Name ist Tobias und ich komme von der predic8 aus Bonn.

play00:04

Heute schauen wir uns Kubernetes an. Was ist das? Was bringt einem das? Hilft Kubernetes

play00:11

gegen Corona? Nein, das ist natürlich Quatsch!

play00:14

Aber ich habe hier noch ein paar weitere Pseudo-Vorteile bei denen einem

play00:17

Kubernetes nicht weiterhilft und ich freue mich schon, am Ende die mit euch

play00:21

durchzugehen. Das hier ist Teil 1, wo wir uns

play00:25

einfach mal einen groben Überblick über Kubernetes verschaffen und alles was ich

play00:29

hier sage zeige ich dann im Teil 2 wirklich in der Praxis im Code und wir

play00:34

schauen uns an, wie man die ganzen features realisieren kann.

play00:36

Vielleicht sind ein paar viele features für ein Video - da müssen wir dann halt

play00:40

mal schauen wie viele reinpacken können.

play00:42

Ja, was ist eigentlich genau Kubernetes? Kubernetes ist ein Open-Source-Projekt

play00:47

was von ein paar Google Entwicklern initiiert wurde und wo die das Google

play00:52

interne System Borg nach entwickelt haben aber diesmal eben in der Öffentlichkeit. Wie Borg auch ist überdies ein sogenannter

play01:00

Orchestrator. Was das genau ist schauen wir uns gleich an.

play01:04

heute gehört Kubernetes als projekt zur Cloud Native Foundation und das heißt nicht nur

play01:10

google hat zu sagen wo die reise hingeht sondern eben alle teilnehmer mitglieder

play01:15

von der Cloud Native Foundation was eine ganze reihe firmen sind übernimmt das

play01:19

hat heute 2500 leute die sourcecode beigesteuert haben bisher das eine ganze

play01:26

menge und insgesamt 1,5 millionen source code zeilen und das macht es ziemlich

play01:32

schwierig genau auf den punkt zu bringen was geht es eigentlich ist das ist

play01:37

natürlich eine riesige community die sich da entwickelt hat und das macht es

play01:41

natürlich auch so spannend und deswegen vertrauen auch so viele leute in dieses

play01:46

projekt ein orchester ist ein software system was mehrere knoten kontrolliert

play01:56

ich als anwender sagte marquez trader software soll einmal im gesamten cluster

play02:03

laufen völlig egal wo und der orchester sucht sich dann einen von den knoten aus

play02:08

und startet software drauf ob diese knoten jetzt hardware sind oder

play02:15

virtuelle maschinen sind ob darauf dakar installiert ist es erstmal völlig egal

play02:19

der orchestrator schaut sich die knoten anschaut wo es noch platz wo es zum

play02:23

beispiel speicher frei und startet dann software a da drauf wenn jetzt knoten 1

play02:31

ausfällt zum beispiel dann entdeckt er orchestra das und wird woanders noch mal

play02:42

neu starten zb auf knoten zwei weil hier eben noch speicher frei ist

play02:46

das heißt der Orchestrator hat dafür gesorgt dass meine anweisung an ihn das

play02:52

einmal im cluster laufen soll immer noch erfüllt ist das muss man sich erst mal

play02:58

auf der zunge zergehen lassen dass der Orchestrator automatisch migriert hat ich

play03:04

kenne heute noch viele firmen die zwei rechenzentren haben davon ist 1 aktiv

play03:08

und wenn das ausfällt dann rufen sie manuell das zweite an und sagen dem ihr

play03:13

fahrt mal hoch diese aufgabe hat genau der orchestra übernommen und das ist

play03:19

natürlich ein wahnsinniges ding der riesen vorteil ist wenn man diese

play03:24

migration das starten von software im code gegossen hat dass der orchestra das

play03:30

dann automatisch tatsächlich durchführen kann

play03:32

zum beispiel wenn ein sicherheitsupdate für den knoten 1 kommt und er neu

play03:37

gestartet werden muss kann man eben vorher wegziehen oder auch ebenfalls ein

play03:42

hardware defekt aufgetreten ist kann sich auch der Orchestrator darum kümmern

play03:47

das ist ein riesenvorteil der wahnsinnig viel arbeit abnimmt

play03:53

jetzt ist natürlich während diese migration stattfindet software für einen

play03:58

ganz kurzen moment nicht verfügbar wenn man das nicht will dann hätte man

play04:03

dem orchester ja zum beispiel sagen können startet doch software nicht nur

play04:07

einmal sondern mehrfach auf verschiedenen knoten und man vertraut

play04:12

darauf dass nicht alle knoten gleichzeitig ausfallen

play04:15

dieses muss dann aber die software ab können

play04:18

der entwickler der es ja üblicherweise gewohnt ist dass seine ko zeile nur an

play04:23

einer stelle an einem ort läuft muss jetzt plötzlich darauf

play04:27

trainiert werden dass das an mehreren orten läuft und wenn man das wirklich

play04:32

macht dann kann man natürlich den vorteil den pseudo vorteil der einfachen

play04:37

entwicklung gleich mal zum fenster rauswerfen

play04:41

zum glück ist das in der praxis nicht ganz so schlimm bei ganz vielen code

play04:45

zeilen kann man sagen ja wenn die für eine sekunde nicht verfügbar sind

play04:48

und dann ist das egal und an den stellen wo man halt tatsächlich die

play04:52

verfügbarkeit braucht da muss man sich dann was einfallen lassen

play04:57

schauen wir uns doch mal Kubernetes als Orchestrator an. Kubernetes besteht aus

play05:15

mehreren komponenten die ich hier mal an gezeichnet habe und ganz zentral aus

play05:21

einem API das ist relativ gut designed: Wir haben eine datenbank etc in dem fall

play05:27

und darum herum um das um das storage der daten herum hat Kubernetes sein API

play05:33

gestrickt das ist sehr schönes design in dieses schreibe ich jetzt rein software

play05:39

soll einmal laufen das kann man technisch zum beispiel so machen ich

play05:44

habe ein deployment so heißt das in Kubernetes dass also die software so und

play05:48

so häufig laufen soll. Das heißt "demo". Das sagt die software

play05:55

soll einmal laufen und zwar software a das ist eine YAML datei das kann man

play06:01

auch in JSON ausdrücken allerdings machten es die wenigsten leute diese

play06:05

information diese datei lade ich ans API hoch und wenn ich ihn berechtigt bin

play06:10

dazu dann speichert übernehmers hat das einfach in der datenbank ab

play06:14

als nächstes gehe ich jetzt ganz kurz auf die anderen komponenten ein den

play06:18

namen oder die funktionsweise müsst ihr euch aber fürs weitere video eigentlich

play06:21

überhaupt nicht merken nur für die interessierten von euch der controller

play06:25

manager beobachtet die deployments sieht oder ist ein neues deployment macht

play06:30

daraus ein replicas at schreibt das wieder in die datenbank beobachtet

play06:34

gleichzeitig die replicasets und macht dann daraus ein

play06:38

und schreibt den wieder in die datenbank im pod ist eine gruppe von containern

play06:44

die auf einem knoten zusammenlaufen die also zusammengehörig sind dieser pod

play06:51

wird vom scheduler gefunden das heißt das sind eigentlich alles

play06:55

endlosschleifen die einfach nur beobachten was ist in der datenbank und

play06:59

dann darauf reagieren der scheduler beobachtet jetzt

play07:03

gleichzeitig die ressourcen auslastung von den knoten sie darauf knoten 1 ist

play07:07

noch platz also schreibt er in die datenbank "pod soll auf knoten eins

play07:13

gescheduled werden". Dann kommt das komplett auf knoten 1 entdeckt oder ist ein neuer

play07:19

pod für mein knoten und weißt dann den lokalen knoten an, doch diese software A

play07:25

tatsächlich auf ihm zu starten. Wenn knoten 1 ausfällt, dann entdeckt

play07:33

natürlich der controller manager, dass dieser pod nicht mehr verfügbar ist - also

play07:40

dass das kubelet sich nicht zurückgemeldet hat in einer gewissen

play07:44

zeit und reagiert dann darauf indem es einen neuen pod anlegt der dann neu

play07:48

gescannt wird und zb eben auf knoten 2 gestartet wird

play07:53

jetzt ist das design von kubernetes sehr clever gemacht denn kubernetes hat sich

play08:00

bei ganz vielen themen auf die Probleme konzentriert, die die Entwickler

play08:04

tatsächlich lösen konnten und lösen wollten. Da, wo Kubernetes mit Umsystemen

play08:12

kommunizieren, muss haben die entwickler schnittstellen geschaffen, so dass sich

play08:17

andere firmen oder andere projekte dann darum kümmern konnten, was dahinter

play08:21

passiert. Und es gibt eine ganze reihe von schnittstellen wo ich eigentlich nur

play08:25

auf drei stück in diesem video eingehen will.

play08:28

die erste schnittstelle da sagt kubernetes ist "eigentlich ist uns egal wie so

play08:33

ein knoten genau aussieht". Das ist das sogenannte "container runtime interface"

play08:38

oder CRI. Da ist es nämlich so dass in der regel

play08:42

Kubernetes ist immer im zusammenspiel mit Docker betrieben wird

play08:47

das heißt normalerweise sind das linux maschinen

play08:51

auf den Docker installiert ist ob das jetzt virtuelle maschinen sind oder ob

play08:55

das hardware ist es mal völlig egal wenn ihr euch zu Docker interessiert kann ich

play09:00

euch diese videos empfehlen ich habe einmal grob beschrieben was da ist und

play09:05

dann hab ich meine cloud nummer eins gemacht wo ich mal wirklich in der

play09:10

praxis zeige wie man mit locker umgehen kann

play09:12

aber Kubernetes verwendet ja Docker das heißt also der anwender sieht davon

play09:17

relativ wenig also der entwickler hier anstelle von docker können hier aber

play09:22

auch andere systeme sitzen ich kenne zum beispiel in cloud provider

play09:25

da kann man dessen container engine anbinden und hat dann plötzlich fast

play09:29

unendlich viele knoten zur verfügung auf denen man seine container scannen kann

play09:35

diese schnittstellen von Kubernetes haben zu einem wahnsinnig gut

play09:41

funktionierenden ökosystemen geführt es gibt insgesamt 141 partnerstand heute

play09:47

von Kubernetes das sind also partnerfirmen die mit Kubernetes

play09:51

interagieren und dazu zusatzprodukte zum beispiel ganz häufig anbieten und

play09:55

insgesamt setzten - google weiß schließlich alles ungefähr 10.000 firmen

play10:00

auf der welt - Kubernetes ein. Die zweite großen schnittstelle über die

play10:06

ich kurz was sagen will ist das sogenannte Container Network Interface

play10:10

oder CNI das sorgt dafür, dass jeder Pod der auf Kubernetes läuft, eine eigene

play10:18

ip-adresse bekommt und dass mehrere pods, die auf Kubernetes laufen, miteinander

play10:24

kommunizieren können - völlig egal, ob die auf demselben Knoten laufen oder ob die

play10:30

auf verschiedenen Knoten laufen. Natürlich muss man bei der ip-adressen-

play10:35

vergabe sich mit den netzwerk technikern außerhalb absprechen wie das netzwerk

play10:40

draußen aussieht und natürlich ist eine menge arbeit zu tun und Kubernetes sagt

play10:44

eben ja dieser arbeit sollen andere produkte machen aber damit will ich

play10:48

nichts zu tun haben Kubernetes sag lediglich: Jeder pod kriegt eine

play10:53

ip-adresse und die können miteinander reden. Beziehungsweise eben auch nicht,

play10:58

denn man kann firewalls aufgeblähtes einrichten das sind die sogenannten

play11:03

Network Policies. das ist ein wahnsinnig ein

play11:06

mächtiges konzept. Und da kann man eben zum beispiel beschreiben, wenn man

play11:09

mehrerePods hat von verschiedenen typen zum beispiel eine software b hier

play11:17

laufen lässt dann kann man sagen darf zb auch b zugreifen aber b nicht auf wenn

play11:26

man jetzt das mit mehreren pods hier realisieren will da kann man sich

play11:30

überlegen dass da eine menge firewall regeln rausfallen der riesenvorteil in

play11:35

Kubernetes ist dass man die nur ganz einfach ausdrücken muss man könnte zum

play11:39

beispiel sagen darf auf b zugreifen aber b nicht auf das sind zwei regeln die man

play11:50

formulieren muss und Kubernetessetzt das dann in den zig Regeln, um welcher

play11:55

pod jetzt auf welchen genau zugreifen kann. natürlich auf welchem port und so.

play11:59

weiter das ist ein wahnsinnig mächtiges konzept damals damit kann man nämlich

play12:03

seine dmz die demilitarized zone auf Kubernetes verlagern und dadurch dass man ja

play12:10

noch dass das alles software ist kann man ja beliebig viele zonen plötzlich

play12:15

erzeugen. Etwas was man sage ich mal mit hardware

play12:18

bisher sehr teuer bezahlen musste des weiteren ist es so dass Kubernetes

play12:24

die kommunikation zwischen den Pod optimieren kann indem man loadbalancer

play12:32

einzieht. das sind so genannte services und das heißt, man könnte, wenn software a auf b

play12:37

zugreifen will der software beibringen dass sie mit dem service kommuniziert

play12:43

das ist im prinzip eine virtuelle ip adresse und Kubernetes wird dann diesen

play12:48

zugriff auf diese virtuelle ip adresse load-balancen auf die software de je

play12:55

nachdem wie viele instanzen von gerade im cluster laufen und verfügbar sind und

play13:00

dieses load balancing ist direkt in goethes eingebaut und wahnsinnig

play13:05

praktisch jetzt müsste ich dafür natürlich der software diese virtuelle

play13:10

ip adresse beibringen das muss man zum glück nicht denn es

play13:14

gibt ein addon zug über das was sage ich mal so im umfeld der

play13:17

kern software entwickelt wird das sogenannte sky dns und das sorgt dann

play13:23

dafür dass sich der software einfach sagen kann mach doch ein dns lookup

play13:27

mit dem namen b und die antwort daraus wird dann von diesem sky dns gegeben und

play13:33

ist genau die virtuelle ip adresse von dem service und das heißt die

play13:36

konfiguration hier sieht auch noch schön aus software versucht einfach mit b zu

play13:43

kommunizieren und kommt genau gelobt balanced auf einem der b instanzen raus

play13:48

wunderbares konzept darüber könnte man noch viel mehr sagen aber das mache ich

play13:53

vielleicht mal in einem weiteren video daneben ist es noch so dass kybernetik

play13:58

nur ganz grob vorgibt wie eigentlich netzwerk traffic in den cluster rhein

play14:04

kommt da hat man üblicherweise ein gateway oder ein reverse proxy wenn euch

play14:10

interessiert was das ist könnt ihr dieses video von thomas mal anschauen

play14:14

der reverse proxy kann natürlich auch im cluster laufen als ein ganz normaler

play14:18

pott und verteilt dann die aufrufe auf den verschiedenen diensten die im

play14:26

cluster laufen wie dieser reverse proxy jetzt intern konfiguriert wird

play14:30

er hat hubert es zwar ein paar grobe vorgaben aber wie das natürlich im

play14:35

detail passiert will kybernetik auch gar nicht sagen denn das hängt ja von dem

play14:40

produkt von der verwendeten software beim reverse proxy ab und deswegen ist

play14:45

auch hier so dass kybernetik zwar eine schnittstelle ein konzept geschaffen hat

play14:50

aber nur ganz grob vorgibt wie das eigentlich konkretisiert wird

play14:55

die letzte schnittstelle zu der ich was sagen will ist das sogenannte container

play15:00

storage interface oder csi das hat folgende bewandtnis dass wenn

play15:08

eine software dateien ablegen will dann ist die frage wo sie das macht und

play15:13

kybernetik schafft hierfür ein konzept gibt aber selber nicht genau vor wie das

play15:21

realisiert ist eine variante kann natürlich sein dass man diese dateien

play15:25

tatsächlich auf dem rechner auf dem knoten 1 ablegt wo diese software läuft

play15:30

das hat dann aber das problem dass wenn rechner 1 oder knoten 1 ausfällt dass

play15:35

dann die dateien weg sind und deswegen will man häufig die irgendwo anders

play15:40

ablegen aber wo das genau der fall ist lässt kybernetik auch offen hat nur eine

play15:47

idee geschaffen wie man damit umgeht das sind die sogenannten Persistent Volumes

play15:51

also persistent dateiordner und da könnte man auch dazu ein ganz eigenes

play15:58

video machen ein ganz entscheidender punkt bei

play16:02

Kubernetes ist noch dass man es hoch verfügbar installieren kann

play16:06

bei etcd installiert man es auf mehreren knoten in einem rechenzentrum

play16:11

die schließen sich zusammen und bilden dann als cluster die datenbank nach

play16:16

außen an. Die APIs kann man einfach mehrfach betreiben, die werden alle aktiv.

play16:23

der controller manager und scheduler, die kann man auch mehrfach starten. Da wird

play16:28

dann immer nur einer von aktiv die machen untereinander eine master

play16:31

election. und die kubelets, die hat man ja sowieso schon mehrfach installiert damit

play16:37

ist dann über nettes insgesamt ausfallsicher. jetzt denkt ihr vielleicht

play16:42

"alles in einem rechenzentrum?" - Hat er nicht vorhin gesagt, dass wir ausfälle

play16:48

über mehrere rechenzentren hinweg damit abbilden können? Ja, das ist richtig.

play16:53

alles was ich hier gezeigt hat würde man so in einem rechenzentrum installieren

play16:57

und noch mal in einem anderen installieren und dann kann man ein

play17:01

separates API noch mal aufsetzen das sogenannte federation mit dem man dann

play17:07

beide kontrollieren kann einheitlich und das sozusagen als eine cloud dann

play17:12

betrachten kann das wäre dann aber nochmal ein separates

play17:16

setup ja kommen wir zum nächsten punkt zu den angeblichen vorteilen von Kubernetes

play17:22

punkt eins gewann das ist zuverlässiger also das heißt die software auf kümmern

play17:27

insel lässt sich zuverlässiger betreiben als vorher

play17:30

kommt drauf an solange ich diesem eine software tatsächlich nur einmal in einem

play17:36

pott auf einem knoten laufen lässt dann ist natürlich wenn der knoten ausfällt

play17:40

die software weg das heißt alleine bringt mir das

play17:44

nichts wenn ich jetzt den replikations faktor hoch 3 und a mehrfach laufen

play17:49

lassen dann ist die entwicklung schwieriger

play17:51

das heißt also per se ist überhaupt nichts zuverlässiger bloß weil ich da

play17:56

drunter Kubernetes nächster punkt gut designte micro services wie der code in

play18:04

meinem dienstag aussieht gibt kybernetik überhaupt nicht vor flug übernehme das

play18:09

ist das eine blackbox wenn ihr euch über das thema micro service schneiden

play18:14

interessiert kann ich euch nur das video von thomas empfehlen aber Kubernetes

play18:19

macht ihr überhaupt gar keine vorgaben nächster punkt die software ist

play18:25

skalierbarer als vorher naja also schon richtig wenn man diese

play18:31

ganzen knoten hat dann kann man natürlich einfach den replikations

play18:34

faktor hoch und runter drehen und damit mehrere instanzen von a starten aber

play18:40

dass der entscheidende punkt ist muss das eben auch ab können und das heißt

play18:44

völlig alleine nur mit Kubernetes ist auch da nichts gewonnen

play18:47

nächster punkt einfache entwicklung das hatten wir vorher schon gesprochen ist

play18:52

auch nicht der fall nächster punkt Kubernetes ist die

play18:58

allumfassende micro serviceplattform das stimmt überhaupt nicht wir haben zwar

play19:02

gesehen dass Kubernetes aspekte von der microserver micro service kommunikation

play19:07

uns abnimmt wie zum beispiel firewalls oder load balancing aber ganz viele

play19:13

andere themen wie zb verschlüsselung hat es überhaupt nicht drauf das heißt auch

play19:18

der es raus nächster punkt billiger betrieb naja moment mal bei so viel

play19:23

komponenten da brauche ich ja auch entsprechend leute die sich darum

play19:27

kümmern das heißt per se kann man nicht sagen dass bloß weil ich was auf

play19:33

überlaufen habe dass es dadurch billiger im betrieb wird

play19:36

und letzter punkt sicherer na ja da muss man erst mal sagen wenn man das reine

play19:42

kern kybernetik installiert und so aufsetzt dann kann ein normaler mensch

play19:48

der hier zugreifen kann ein container skate holen der hier ruht

play19:53

ist auf dem knoten das heißt das kann man auch nicht

play19:57

behaupten das per se sicherer ist es gibt zwar

play19:59

viele produkte die man sich dazu kaufen kann die sich dann darum kümmern und das

play20:03

versuchen zu vermeiden oder auch verhindern aber per se kann man nicht

play20:09

sagen dass es sicherer ist und natürlich ob die software a sicher ist oder nicht

play20:15

da macht mir kybernetik auch überhaupt gar keine vorschriften dazu das heißt

play20:19

also auch der punkt kann man wegwerfen warum setzt also dann die halbe welt

play20:26

gefühlt kybernetischen irgendwo muss ja ein vorteil sein

play20:30

und das ist ganz klar da Kubernetes hat eine ist ein funktionierendes open

play20:36

source produkt mit einer wahnsinnigen community und wahnsinnig viel firmen die

play20:40

sich darum herum gegliedert haben Kubernetes kann man jetzt als plattform

play20:45

betrachten auf der man seine software laufen lassen kann und zwar völlig egal

play20:50

und das sind ganz entscheidender punkt ob ich jetzt zu abs zu gc eg oder ob ich

play20:57

das ganze auf meine eigenen hardware im eigenen rechenzentrum oder auch im

play21:01

eigenen keller betreiben würde Kubernetes verhindert damit den wendler

play21:07

login dh dass ich von einem hersteller

play21:10

abhängig bin natürlich muss ich diese ganzen fragen hinter den schnittstellen

play21:14

beantworten also wie mache ich networking wie mach ich storage und so

play21:17

weiter aber als plattform wenn ich als meine software die ich darauf entwickeln

play21:23

meint wenn ich meinen entwicklern sagt das was ihr hier zur verfügung habt das

play21:28

ist ein reines Kubernetes dann kann ich diese software eben von einem Kubernetes

play21:34

cluster ganz einfach auf einen anderen migrieren und habe relativ wenig

play21:38

schmerzen ja wir haben gesehen Kubernetes ist im

play21:43

prinzip eine datenbank mit einem da drumherum ist ein orchester mit dem ich

play21:51

software sozusagen auf noten verteilen kann

play21:54

darüber hinaus ist Kubernetes wahnsinnig modular aufgebaut und hat ganz viele

play22:00

plugins schnittstellen wo ich mit fremdprodukten Kubernetes noch erweitern

play22:05

kann der riesenvorteil von Kubernetes ist das

play22:09

ist sozusagen weiß dass es mitten im stack sitzt dass es

play22:13

sozusagen oberhalb von der container engine wie locker sitzt

play22:16

aber dass es auch nach außen hin zur verfügung stellt was durch andere

play22:21

programme wieder verwendet werden kann da sei mal nur istio genannt. darüber

play22:26

habe ich ein video gemacht. aber natürlich auch so was wie spilo kommt

play22:31

vielleicht noch mal ein video könnt ihr den kanal abonnieren verwendet das

play22:37

Kubernetes API um sozusagen noch mehr Funktionalität darauf anzubieten. In dem

play22:43

API handelt ja Kubernetes die authentifizierung und autorisierung von

play22:49

den zugreifenden ab und da kann man zum beispiel so was machen dass man sagt

play22:53

naja man legt verschiedene namespace an namespace sind im prinzip so eine

play22:58

logische trennung der ressourcen die in der datenbank sind man macht zum

play23:02

beispiel ein namespace für team und ein namespace für team b und sagte na ja

play23:08

thema darf nur auf die pods von thema aufzugreifen und da hat man dann gute

play23:15

konzepte die sich die entwickler von Kubernetes ausgedacht haben wo sie ihre

play23:19

erfahrung von Borg natürlich eingebracht haben

play23:22

die einen auch an die allem an anderen stellen weiter helfen

play23:25

gerade mit den namespaces zb wenn ich jetzt einen namespace up und meine

play23:30

software da drin betreibe zum beispiel in produktion und ich hab automatisiert

play23:36

wie dieser namespace aufgesetzt wird wie die deployments da reinkommen wie die

play23:40

pods also im endeffekt da reinkommen und dann da laufen wenn ich das

play23:45

automatisiert habe dann ist es ja ganz einfach stattdessen namespace denselben

play23:49

namespace nochmal aufzusetzen aber anders zu nennen dann läuft meine

play23:54

software plötzlich zweimal aber halt anders genannt was ich dann machen kann

play23:58

zum beispiel ist dass ich wenn ich ein feature für meine software zusätzlich

play24:02

entwickeln wer kann ich ihm geht ein brunch aufmachen und da kann ich zum

play24:06

beispiel voll automatisiert aus jedem brunch ein namespace erzeugen lassen und

play24:11

gleich mal die software dahin diplom und dann habe ich eine test instanz meiner

play24:15

software nur mit diesem einen zusätzlichen feature kann mir das da

play24:19

schon mal anschauen das ist ein wahnsinnig schönes system

play24:23

dadurch das gerät ist diese ganze beschreibung

play24:27

dessen was hier eigentlich die konfiguration des clusters ausmacht in

play24:31

diesem level dateien hält hilft es einem wahnsinnig in richtung infrastructures

play24:37

code zu gehen also eine deklaration beschreibung in dateien abzulegen was

play24:43

ein wahnsinnig mächtiges konzept ist und sehr zur automatisierung und zur ja

play24:50

wiederverwendbarkeit von diesen beschreibungen für Kubernetes

play24:55

konzentriert sich also wirklich auf die probleme die es lösen kann und da glänzt

play25:01

es wirklich wenn euch das video gefallen hat würde ich mich über ein like freuen

play25:06

wenn ihr das praxis video mit bekommen wollt abonniert den kanal und ja wenn

play25:11

ihr fragen habt könnt ihr natürlich in die kommentare darunter schreiben oder

play25:14

er kommt einfach in eines von unseren webinaren schaut die man auf unserer

play25:18

homepage da würde ich mich auch freuen euch mal kennenzulernen

play25:22

bis dahin viel spaß

Rate This

5.0 / 5 (0 votes)

Related Tags
KubernetesCloud-NativeOrchestratorOpen-SourceSkalierbarkeitMicroservicesContainerAPI-DesignAutomatisierungInfrastruktur
Do you need a summary in English?