R E R E N D E R I N G

Jelto Wodstrcil

Site Reliability Engineer @ Traum-Ferienwohnungen GmbH

Slides: https://jel.to/k8s

Programm

  • Grundlagen
    • Evolution von Infrastruktur
    • Container, Image, Docker
  • Kubernetes
    • Überblick
    • Nodes, Pods, Deployments, Services
    • Prinzipien
  • Ausblicke

Grundlagen

Evolution von Deploy-Infrastruktur

Grundlagen

Containervirtualisierung

  • Zusammenfassung von Anwendung, Abhängigkeiten und Konfiguration in standardisiertem Format („Image“)
  • Ausführung in isolierter und kontrollierter Umgebung (cgroups, namespaces)
  • Bekanntes Beispiel: Docker bzw. LXC

Grundlagen

Applicationtack

Grundlagen

Orchestrierung

  • Hilfsmittel bei der Verwaltung von komplexen Systemen mit vielen Komponenten (VMs, Containern, usw.)
  • Automatisierung von Workflows
    • z.B Updates oder Failover
    • Überwachung von Funktionalität
    • Installation von Abhängigkeiten

Kubernetes Überblick

  • Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen
  • Entwickelt von Google („Borg“), gespendet an die Cloud Native Computing Foundation

Kubernetes Überblick

Kubernetes Überblick

Kubernetes Überblick

Image source

Kubernetes Nodes

Kubernetes Nodes

  • Physische oder virtuelle Maschinen im Cluster
  • Verarbeiten anfallenden Workload
  • Werden über das kubelet vom Master verwaltet
    • Kubelet läuft auf jedem Node und startet und stoppt Container
  • Enthält Container-Runtime

Kubernetes Pods

Kubernetes Pods

  • Kleinste deploybare Einheit
  • Besteht aus einen oder mehreren Container mit geteilten Ressourcen
  • Werden vom Scheduler auf Nodes gestartet, gestoppt und verteilt

Kubernetes Pods

Kubernetes Deployment

Kubernetes Deployment

  • Abstraktion um Gruppe von identischen Pods zu verwalten
    • Anzahl von laufenden Instanzen (Replicas)
    • Aktualisierung der Pods über Rolling Updates

Kubernetes Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-server
spec:
  replicas: 1
  template:
    metadata:
      labels:
        run: hello-server
    spec:
      containers:
      - image: gcr.io/google-samples/hello-app:1.0
        name: hello-server

Kubernetes Deployment

Kubernetes Prinzipien

  • Prinzipien von Kubernetes am Beispiel des Deployments
    • Deklarative Konfiguration
    • Skalierung
    • Immutable Infrastructure
    • Selbstheilende Systeme

Deklarative Konfiguration und Skalierung

Deklarative Konfiguration und Skalierung

  • Sobald Desired State beschrieben wurde, stellt Kubernetes diesen her
  • Deklarativer Ansatz vereinfacht Installation auf verschiedenen Clustern
    • Unterstützt durch Abstraktion von Ressourcen

Deklarative Konfiguration und Skalierung

  • Skalierung einfach (Replicas = n)
  • Ausblick: Autoscaling
    • HorizontalPodAutoscaler
    • Autoscaling in Nodepool

Immutable Infrastructure

Immutable Infrastructure

  • Artefakt wird zur Laufzeit nicht verändert, stattdessen neu erstellt (instanziiert)
  • Nachvollziehbar was wann wie gemacht wurde
  • Einfache CI und Rollbacks

Selbstheilende Systeme

Selbstheilende Systeme

  • Kubernetes überwacht Status des Systems
  • Falls Actual State != Desired State werden Maßnahmen getroffen
  • Healthchecking
    • Readiness Probes
    • Liveness Probes

Kubernetes Services

Kubernetes Services

  • Abstraktion für Zugriff auf Dienste
  • Wahl des Backends über Label
  • Routing des Traffics über iptables Rules
  • Zugriff intern über my-svc.my-namespace.svc.cluster.local

source

Kubernetes Services

apiVersion: v1
kind: Service
metadata:
  labels:
    run: hello-server
  name: hello-service
  namespace: default
spec:
  clusterIP: 10.15.246.205
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31318
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    run: hello-server
  type: LoadBalancer

Ausblicke

  • Jobs/CronJobs
  • Ressources
  • Volumes
  • DaemonSet/StatefulSet
  • Templating (Helm)

Kubernetes in der Praxis

  • Nutzung von Kubernetes seit 2016
  • Exklusivbetrieb auf Kubernetes 2018
  • Clustergröße:
    • 380 CPUs
    • 1.5 TB RAM
    • 1400 Container

Vielen Dank!

We are hiring!

unternehmen.traum-ferienwohnungen.de