Kubernetes Tutorial Deutsch | 6 Schritte GUIDE Cluster, Pods

Kubernetes Coding Lab Steffen Lippke Guide Tutorials
Kubernetes Coding Lab Steffen Lippke Guide Tutorials

Kubernetes Tutorial – Dein ersten Docker-Container erstellen!

Container ist seit einigen Jahren ein beliebtes Buzzword:

Was verbirgt sich dahinter? Wie erstelle ich meinen ersten Container? … und funktioniert Kubernetes?

Das möchte ich in diesem Tutorial erklären.

Viel Spaß!

Kuberentes Tutorial - Inhalt - 6 Schritte zum eigenen Cluster

Ziel

Coding

Konzept

Erweiterung

Grundlagen

Fazit

1. Kapitel

Herausforderung & Ziel: Lokales Cluster erstellen

Ziel
Ziel

Wir wollen eine Node.js App auf einem lokalen Minikube-Cluster innerhalb von Windows erstellen.

Die Webseite soll einen einfachen String ausgeben. Wenn Du mehr über Node.js erfahren willst, probiere doch mal das hybride App-Framwork Ionic aus.

 

 

Deinen ersten Cluster mit Node.js

15 Node js works - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
15 Node js works - Kubernetes Tutorial deutsch Steffen Lippke Coding Lab

Voraussetzungen: Dein Wissen

  • Etwas programmiert haben ... mit Java, Python oder jede andere Programmiersprache
  • Grundlagen der Kommando-Ziele (oder Du kopiert einfach die Befehle unten 🙂 )
  • Admin-Reche, um Programme zu installieren und zu deinstallieren

Technische Voraussetzungen: Das brauchst Du für Dein erstes Kuberenetes Projekt

  • Windows 10 / 7 Computer – Dieses Tutorial ist für Windows Computer ausgelegt
  • Admin-Rechte
  • Mehr als 5 GB RAM (besser 12 GB)
  • Editor

Editor (Visual Studio Code)

Neben dem Browser brauchst Du einen Code-Editor Deiner Wahl. Notepad(++) kannst Du alternativ nutzen. Am besten verwendest Du einen Editor mit Syntax-Highlighting und IntelliSense wie z. B. Visual Studio Code.

VS Code
VS Code

 

2. Kapitel

Konzept & Lösungsansatz: Grundlagen von Containern

Konzept
Konzept

Was zum Henker ist ein Container?

Wie funktioniert das mit Cluster und Virtualisierung?

Was ist ein Microservices?

Ein Microservices ist ein Architekturmuster, das die Service Oriented Architecture (SOA) umsetzt. Ein großes Programm, ein Monolith, teilt eine Microservice-Architektur in viele kleine unabhängige Programme und Instanzen auf.

Ein Mini-Programm soll nur EINE Aufgabe oder EINE Domäne (Aufgabenbereich) erfüllen.

Vorteile von Microservices

Bei der Service Oriented Architecture kann der Entwickler Microservices replizieren (ver-X-fachen), um …

  • einen höheren Durchsatz (mehr Operationen, abgeschlossen Jobs pro Minute)
  • eine hohe Verfügbarkeit des Gesamtsystems zu ermöglichen
  • eine stabile Architektur zu schaffen

Ein wichtiges nicht funktionales Ziel eines Softwaresystems ist die (Hoch-)Verfügbarkeit zu erreichen. Die Umsetzung der Microservice-Architektur mit Replizierung schafft eine (Hoch-)Verfügbarkeit.

Eine Failure-Unit ist eine Instanz eines Microservices, der bei einem Crash im Code abstürzen kann. Bei einer losen Kopplung beeinflusst der Absturz einer einzelnen Failure-Unit das Gesamtsystem nicht

Continuous Integration / Continuous Development (CI / CD)

Continuous Integration und Continuous Development ist eine Softwareentwicklungsmethodik, die Entwickler sehr häufig bei der Entwicklung von Microservices verwenden.

Diese basiert auf dem Grundsatz:

Rolle in kleinen Iterationen die neuen Features der Software in wenigen Stunden
aus

Mit der Fertigstellung eines Features kann der CI-/CD-Prozess die alte veröffentliche Installation automatisch überschreiben.

3. Kapitel

Basics: Kubernetes Grundlagen verstehen

Grundlagen
Grundlagen

Wenn Du zum ersten Mal mit Kubernetes zu tun hast, dann laufen Dir eine Menge unbekannter Begriffe über den Weg.

Dieser Abschnitt soll die wichtigsten Konzepte / Begriffe so kurz wie möglich erklären.

Lese Dir den folgenden Abschnitt durch, um den Praxis-Teil besser zu verstehen.

 

Die Konzepte von Kubernetes

  • Bei der Virtualisierung in Containern erhält ein Prozess einen komplett eigene Laufzeitumgebung zum Ausführen des Codes. Unterschiedliche Programme können sich mit der Containerisierung des Codes auf dem gleichen physisch Rechner ausführen.
  • Ein Pod ist eine Art virtuelle Maschine, die alle technischen Hardware- und Software-Grundlagen zur Verfügung stellt, um Deinen Code zum Ausführen braucht.
  • Ein Container kann ein oder mehrere Pods fassen und stellt eine Kubernetes-Instanz dar. Ein physischer Computer kann mehrere Container parallel betrieben. Diese Form von dynamischem Server-Betrieb ist ressourcenschonend.

Die Technik hinter Containern

  • Die Hyper-V-Schicht liegt zwischen dem Betriebssystem der virtuellen Maschine und der Hardware. Mit Hyper-V, einen Virtual-Machine-Monitor, kann der Nutzer für eine virtuelle Maschine die RAM-Größe und CPU-Last begrenzen.
  • Namespace nennt sich ein virtuelles Cluster eines gleichen Prozesses. Kubernetes kann mehrere virtuelle Cluster auf einen physischen echten Computer ausführen.
  • Ein Image ist ein Software-Paket bestehend aus Deinem Code und der Laufzeitumgebung.

Software-Projekte für Container

  • Kubernetes verwaltet, erstellt, skaliert und automatisiert Container-Anwendungen. Die Anwendung hat Google ursprünglich für eigene Zwecke entworfen.
  • Docker ermöglicht die Virtualisierung von Programmen und Betriebssystemen in Container.
  • Helm ist das Node.js für Docker-Container. Helm stellt fertige Docker-Container zur Verfügung. Der Entwickler kann „auf die Schnelle“ eine fertige Laufzeitumgebung für Node.js erstellen, ohne viel konfigurieren zu müssen.

4. Kapitel

Coden: Ab in die Praxis

Coding
Coding

Jetzt wird's ernst.

Wir erstellen mit diesen Schritten Deinen ersten Container.

Solltest Du stecken bleiben – dann schreibe einen Kommentar mit Deiner Fehlermeldungen unten in das Kommentar-Feld.

Was installieren wir in diesem Tutorial

  • Kubernetes in Form von „Minikube“ innerhalb des Windows Betriebssystems
    00 Kuberentes Homepage - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    00 Kuberentes Homepage - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
  • Hyper-V zur Virtualisierung
  • Docker Desktop
  • Kubectl – Die Kommandozeile von Kubernetes
  • js (innerhalb des Microservices)

Windows vorbereitet mit Hyper-V

  1. Öffne CMD mit Admin-Rechten
  2. Gebe
    systeminfo
    ein
  3. Wenn nur “Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.” auftaucht, musst Du Hyper-V installieren.
  4. [Nur wenn Hyper-V installiert werden muss] Suche in Windows nach Features hinzufügen und Windows öffnet Dir ein Auswahlfenster:
    02 Virtualiserung einschalten - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    02 Virtualisierung einschalten - Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
  5. Warte die Vorbereitungen der Installation ab (1-10 Min je nach Rechenleistung)
  6. Starte den Computer neu (3-20 Min je nach Rechenleistung). Der Computer „spielt Updates ein“, während dieser Hyper-V installiert.
    04 Zeit zum Neustarten - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    04 Zeit zum Neustarten – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab

Kubernetes / Minikube auf Windows installieren

  1. Downloade den Minikube Installer
    05 Minikube Installer - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    05 Minikube Installer – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
  2. Führe das MSI von Minikube aus
  3. Öffne die CMD mit Deinen Admin-Rechten
  4. Installiere das Virtual Box Image mit
    minikube start --vm-driver=hyperv
  5. Setze eine Standard-Treiber mit
    minikube config set vm-driver hyperv

Mehr Power mit Kubectl (Kubernetes-Kommandozeile)

  1. Downloade Dir die kubectl-Kommandozeile von Kubernetes als.exe.
  2. Setze den Windows Pfad für die .exe Datei, sodass Windows das Kommand kubectl mit der Konsole finden kann. Suche in Windows nach den Umgebungsvariable setzen. Gebe 2x unter Benutzer und System Path in einem neuen Eintrag ein. Der eingegeben Pfad sollte auf die .exe von kubectl zeigen.
    C:\Users\<USER>\Downloads

    06 Kubectl Path hinzufügen - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    06 Kubectl Path hinzufügen – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
    07 PATH für alle - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    07 PATH für alle – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
  3. Logge Dich aus und wieder ein, um die Variablen zu setzten. (NICHT SPERREN UND ENTSPERREN - das bringt nichts)
  4. Öffne die CMD mit den Admin-Rechten und teste die Installation mit
    kubectl version

    08 Kubectl funktioniert - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    08 Kubectl funktioniert – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
  5. Starte Minikube mit
    minikube start
    (dauert 1–15 Min je nach Rechenleistung)

    09 Minikube installiert - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    09 Minikube installiert - Kubernetes Tutorial deutsch Steffen Lippke Coding Lab

Docker Installation einfach erklärt

  1. Gehe auf
    https://www.docker.com/

    10 Docker installieren - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    10 Docker installieren – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
  2. Registriere Dich, um die Docker.exe zu downloaden.
  3. Downloade Dir den Docker Desktop
  4. Überspringe das Docker Tutorial, um an die .exe zu kommen.
  5. Wenn Du die .exe heruntergeladen hast, logge Dich in Docker im Windows Programm ein

    11 Docker Desktop ist notwendig - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    11 Docker Desktop ist notwendig – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
  6. [automatisch mit Login] Docker logt Dich aus und wieder ein
  7. Öffne die CMD mit den Admin-Rechten und teste die Installation mit
    docker –v

    12 Installiere Docker - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    12 Installiere Docker – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab
    13 Docker Login - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    13 Docker Login – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab

 

Node.js auf Kubernetes installieren

  1. Lege einen Ordner mit den Namen
    helloKube
    an
  2. Öffne Visual Studio Code in diesem Ordner und erstelle eine helloServer.js
  3. … und eine Docker-Datei
  4. Öffne die GIT BASH mit den Admin-Rechten. Eine Git Bash erhältst Du mit Deiner Git Installation.
  5. Starte Minikube neu
    minikube start
  6. Dann konfiguriere Minikube so
    eval $(minikube docker-env)
  7. Erstelle eine Docker Image mit
    docker build -t helloservernode .

    14 Docker Build dauert immer lang - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
    14 Docker Build dauert immer lang - Kubernetes Tutorial deutsch Steffen Lippke Coding Lab

    (dauert 1–15 Min je nach Rechenleistung und Netzwerk)

  8. Installiere den Pod im Minikube
    kubectl run hello-foo --image=helloservernode:latest --image-pull-policy=Never
  9. Wenn die Installation erfolgreich war, siehst Du mit
    kubectl get deployments
    alle Installationen auf dem Minikube
  10. Um den Pod außerhalb des Containers mit dem Browser zu erreichen, müssen wir einen Service aufsetzen mit
    kubectl expose deployment helloservernode --type=LoadBalancer --port=8080
  11. Mit
    kubectl get services
    siehst Du alle Services
  12. Rufe
    minikube service helloservernode
    Dein Browser sollte sich öffnen und die Webseite http://172.17.17.189:30392/ zeigen

Fertig

15 Node js works - Kubernetes Tutorial deusch Steffen Lippke Coding Lab
15 Node js works – Kubernetes Tutorial deutsch Steffen Lippke Coding Lab

5. Kapitel

Erweiterungen: Wie kann ich das Cluster erweitern?

Erweiterung
Erweiterungen

Hast Du noch nicht genug von dem Kubernetes Tutorial?

Dann füge andere Cluster hinzu.

  • Repliziere Deinen Container
  • Installiere weitere Pods neben dem ersten
  • Rufe das Kubernetes Dashboard auf
  • Verbinde zwei Pods z. B. Node.js Frontend und Laravel Backend
  • ...

6. Kapitel

Fazit: Gratulation zu Deinem ersten Cluster

Fazit
Fazit

Container sind sehr vielseitig einsetzbar und skalieren gut.

Probiere Dich aus.

  • Schreibt von Fehlermeldungen, die auftreten ...
  • Kritik mit Verbesserungsvorschlägen für das Tutorial
  • Installationsprobleme von Kuberenetes ...

Danke. Ich freue mich auf Euer Feedback

Credits zu den verwendeten Bildern
Icons made by Vectors Market from www.flaticon.com is licensed by CC 3.0 BY

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.