Teil 10: Container & Kubernetes – Wie moderne Apps in der Cloud betrieben werden

Virtuelle Maschinen waren lange das Rückgrat der Server-Infrastruktur – aber moderne Anwendungen brauchen mehr: Portabilität, Skalierbarkeit, Geschwindigkeit und Automatisierung. Genau hier kommen Container und Kubernetes ins Spiel.

In diesem Teil deiner Cloud-Serie lernst du:

  • Was Container sind und wie sie sich von VMs unterscheiden
  • Warum Kubernetes der De-facto-Standard für Container-Orchestrierung ist
  • Wie AWS, Azure und GCP mit Containern arbeiten
  • Und wann Container (nicht) die richtige Wahl sind

Was sind Container?

Ein Container ist eine isolierte, leichtgewichtige Laufzeitumgebung für Software. Er enthält:

  • deinen Anwendungscode
  • alle Abhängigkeiten
  • die Laufzeitumgebung (z. B. Python, Node.js, Java)
  • aber kein eigenes Betriebssystem wie bei einer VM

Das macht Container:

  • kleiner (z. B. 50–200 MB statt GBs wie bei VMs)
  • schneller startbereit (Sekunden statt Minuten)
  • portabler (läuft überall, wo ein Container-Engine installiert ist, z. B. Docker)

Container ≠ VM

VMs virtualisieren Hardware, Container virtualisieren die Anwendung.


Warum Container?

Container sind ideal für:

  • Microservices-Architekturen
  • CI/CD-Pipelines
  • Skalierbare Webanwendungen
  • Plattformunabhängigkeit

Beispiel:
Ein Entwickler erstellt ein Container-Image mit seiner App, testet es lokal, pushed es in die Cloud – und die Anwendung läuft dort exakt gleich.


Kurz erklärt: Docker

Docker ist die populärste Plattform zur Erstellung, Verwaltung und Verteilung von Containern.

Ein typisches Workflow:

  1. Erstelle ein Dockerfile
  2. Baue ein Image: docker build .
  3. Starte den Container lokal: docker run
  4. Lade ihn in ein Registry hoch (z. B. Docker Hub, GitHub Container Registry oder Amazon ECR)

Und was ist Kubernetes?

Kubernetes (K8s) ist ein Open Source Orchestrierungs-Framework für Container. Es wurde ursprünglich von Google entwickelt und ist heute Standard für die Verwaltung von containerisierten Anwendungen – egal ob auf AWS, Azure, GCP oder On-Premises.

Was Kubernetes kann:

  • Container starten, stoppen, skalieren
  • Lastverteilung (Load Balancing)
  • Selbstheilung (z. B. Neustart bei Absturz)
  • Rolling Updates & Rollbacks
  • Geheimnisse & Konfigurationen verwalten

Architektur von Kubernetes (vereinfacht)

+-----------------------+
|   Kubernetes Cluster  |
+-----------------------+
| Master Node (Control) |
|  - Scheduler          |
|  - API Server         |
|  - Controller Manager |
+-----------------------+
| Worker Nodes          |
|  - kubelet            |
|  - Container Runtime  |
|  - Pods (mit Containern) |
+-----------------------+

Ein Pod ist die kleinste Einheit in Kubernetes – er enthält einen oder mehrere Container, die gemeinsam laufen und Ressourcen teilen.


Container & Kubernetes in der Cloud

AWS – Elastic Kubernetes Service (EKS)

  • Voll verwalteter Kubernetes-Dienst
  • Integriert mit IAM, VPC, ALB, Fargate
  • Auch native ECS (Elastic Container Service) verfügbar – ohne K8s

Azure – Azure Kubernetes Service (AKS)

  • Tief integriert mit Azure DevOps, ACR, Monitor & Active Directory
  • Gute CI/CD-Anbindung über GitHub Actions & Azure Pipelines
  • AKS kann per GUI, CLI oder Terraform verwaltet werden

Google Cloud – Google Kubernetes Engine (GKE)

  • Von Google selbst entwickelt → Best-in-Class
  • Automatisches Node-Scaling, Upgrades, Rollouts
  • Ideal für Data/ML-Projekte & APIs

Alternativen zu Kubernetes

Nicht jedes Containerprojekt braucht gleich K8s. Hier ein paar Alternativen:

Use CaseTool/Service
Einzelner Container in der CloudCloud Run (GCP), AppRunner (AWS), Azure Container Apps
Entwicklung & Test lokalDocker Desktop, Podman
Einfaches App-HostingHeroku, Railway, Render

Vorteile von Containern & Kubernetes

  • Portabilität: „Build once, run anywhere“
  • Skalierbarkeit: Einfaches Hoch- und Runterskalieren
  • Isolation: Jede App läuft unabhängig – weniger Konflikte
  • Ressourceneffizienz: Leichtgewichtiger als VMs
  • Automatisierung: Ideal für DevOps & GitOps

Nachteile & Herausforderungen

  • Komplexität: Kubernetes hat eine steile Lernkurve
  • Overhead für kleine Projekte: Für einfache Web-Apps oft Overkill
  • Monitoring & Logging: Muss separat eingerichtet werden
  • Security: Container sind kein Ersatz für sicheres App-Design

Beispiel: Kubernetes-Deployment einer Web-App

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: web
        image: myapp:v1
        ports:
        - containerPort: 80

Dieses Manifest beschreibt ein Deployment mit 3 Replikaten eines Web-Containers.


Tools & Services rund um Kubernetes

ToolFunktion
HelmPaketmanager für Kubernetes
kubectlKommandozeile für Kubernetes
KustomizeKonfigurationsmanagement
Istio / LinkerdService Mesh für Traffic-Kontrolle
ArgoCDGitOps Deployment-Tool
LensKubernetes GUI (Desktop App)

Fazit

Container und Kubernetes sind aus der modernen Cloud-Welt nicht mehr wegzudenken. Sie bieten enorme Vorteile für skalierbare, portable und wartbare Anwendungen – besonders, wenn du mit Microservices, APIs oder Cloud-native Development arbeitest.

Aber: Nicht jedes Projekt braucht Kubernetes. Für einfache Web-Apps reicht oft ein Serverless-Service oder eine einfache VM. Wenn du allerdings komplexe Systeme betreibst oder auf Wachstum setzt, ist der Einstieg in Container & Orchestrierung fast unumgänglich.


Kommentare

Schreibe einen Kommentar

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