OpenFaaS vs Knative: Serverless auf Kubernetes

Serverless auf Kubernetes bedeutet: Funktionen oder Services werden nur dann gestartet (und skaliert), wenn Traffic ankommt – und fahren bei Inaktivität auf null herunter. OpenFaaS und Knative sind die zwei meistgenutzten Open-Source-Plattformen für dieses Deployment-Modell. Sie unterscheiden sich grundlegend in Komplexität, Zielgruppe und Philosophie.

Was ist Serverless auf Kubernetes?

Im klassischen Kubernetes-Deployment laufen Pods kontinuierlich. Serverless (auch: Scale-to-Zero) erlaubt:

  • Scale-to-Zero: Keine laufenden Pods bei null Traffic
  • Event-Driven Scaling: Pods starten beim ersten Request
  • Function-as-a-Service (FaaS): Code-Deploy ohne Container-Konfiguration

Die Herausforderung: Cold Starts. Wenn kein Pod läuft, braucht der erste Request Sekunden, bis ein neuer Pod gestartet ist. Beide Plattformen gehen unterschiedlich damit um.

OpenFaaS: Einfaches FaaS für Self-Hoster

OpenFaaS (Functions as a Service) ist 2016 entstanden und hat sich als die einsteigerfreundlichste Serverless-Plattform für Kubernetes etabliert. Es fokussiert sich bewusst auf Einfachheit.

Architektur:

  • API Gateway: Nimmt HTTP-Requests entgegen und routet sie zu Funktionen
  • faas-netes: Der Kubernetes-Provider (Operator)
  • Prometheus + KEDA: Für Autoscaling
  • faasd: Alternative für einzelne VMs ohne Kubernetes (containerd-basiert)

Installation mit arkade:

# arkade: der Paketmanager für Kubernetes-Tools
curl -sLS https://get.arkade.dev | sh
arkade install openfaas

# Auf das Gateway warten
kubectl rollout status -n openfaas deploy/gateway

# CLI installieren
arkade get faas-cli

Erste Funktion deployen:

# Template holen
faas-cli template store pull python3-http

# Funktion erstellen
faas-cli new hello-world --lang python3-http

# hello-world/handler.py:
# def handle(event, context):
#     return {"statusCode": 200, "body": "Hello from OpenFaaS!"}

# Bauen und deployen
faas-cli up -f hello-world.yml   --gateway https://gateway.example.com

Stärken:

  • Sehr einfaches Deployment-Modell
  • faasd für VMs ohne Kubernetes
  • Vorgefertigte Templates (Python, Node, Go, Java, C#, PHP)
  • Prometheus-Integration out-of-the-box
  • Aktive Community, gute Dokumentation

Schwächen:

  • Scale-to-Zero ist kostenpflichtiges Feature (OpenFaaS Pro)
  • Weniger Kubernetes-nativ als Knative
  • Keine offizielle Cloud-Backing (AWS/GCP/Azure unterstützen Knative nativ)
  • Cold-Start-Management weniger ausgereift

Knative: Kubernetes-nativer Serverless-Standard

Knative ist 2018 von Google gestartet und wird inzwischen von der CNCF betreut. Es ist tiefer in Kubernetes integriert und gilt als der Standard für produktive, enterprise-grade Serverless-Workloads auf Kubernetes.

Architektur:

  • Knative Serving: Deployment und Skalierung von HTTP-Services
  • Knative Eventing: Event-Driven Computing (CloudEvents)
  • Kourier / Istio / Contour: Networking Layer

Installation:

# Knative Serving installieren
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.14.0/serving-crds.yaml
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.14.0/serving-core.yaml

# Kourier als Networking Layer
kubectl apply -f https://github.com/knative/net-kourier/releases/download/knative-v1.14.0/kourier.yaml
kubectl patch configmap/config-network   --namespace knative-serving   --type merge   --patch '{"data":{"ingress-class":"kourier.ingress.networking.knative.dev"}}'

Knative Service Beispiel:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello-knative
  namespace: default
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/target: "10"
        autoscaling.knative.dev/scale-to-zero-grace-period: "30s"
    spec:
      containers:
        - image: ghcr.io/knative/helloworld-go:latest
          env:
            - name: TARGET
              value: "Knative"
          resources:
            limits:
              memory: "128Mi"
              cpu: "100m"

Stärken:

  • Kubernetes-native CRDs (Knative Service, Revision, Route)
  • Offizielle Cloud-Unterstützung: Google Cloud Run basiert auf Knative
  • Fortschrittliches Traffic-Management (Traffic Splitting, Canary Releases)
  • Knative Eventing für Event-Driven Architectures (CloudEvents)
  • Scale-to-Zero kostenlos und vollständig integriert
  • Unterstützung durch IBM, Red Hat, VMware, Google

Schwächen:

  • Komplexere Installation und Konfiguration
  • Erfordert ein Networking Layer (Kourier, Istio oder Contour)
  • Steilere Lernkurve für neue Nutzer
  • Ressourcenhungriger (Operator + Networking Layer)
  • Kein faasd-Äquivalent für VMs ohne Kubernetes

Traffic-Splitting und Canary Releases (Knative)

Ein Alleinstellungsmerkmal von Knative ist das eingebaute Traffic-Management:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: my-service
spec:
  traffic:
    - tag: current
      revisionName: my-service-00001
      percent: 90
    - tag: candidate
      revisionName: my-service-00002
      percent: 10
    - tag: latest
      latestRevision: true
      percent: 0

Mit dieser Konfiguration erhält die neue Version (Revision 00002) 10% des Traffics – klassisches Canary Deployment ohne extra Tools.

Direkter Vergleich

Kriterium OpenFaaS Knative
Einstiegsschwierigkeit Niedrig Hoch
Scale-to-Zero Kostenpflichtig (Pro) Kostenlos
Kubernetes-Integration Gut Nativ
Cloud-Unterstützung Gering Hoch (GCP, IBM, Azure)
Event-Driven Begrenzt Vollständig (CloudEvents)
Traffic-Splitting Nicht vorhanden Eingebaut
VM-Betrieb (ohne K8s) faasd ✅
Ressourcen Gering Mittel-hoch
Community Mittel Groß (CNCF)
Produktionsreife Mittel Hoch

Empfehlung

OpenFaaS ist ideal für:

  • Self-Hoster, die FaaS auf einem einzelnen Server oder kleinen Cluster ausprobieren wollen
  • Teams ohne Kubernetes-Expertise
  • Deployment mit faasd auf einer einzelnen VM
  • Einfache HTTP-triggered Funktionen

Knative ist ideal für:

  • Enterprise-Teams, die Kubernetes produktiv betreiben
  • Event-Driven Architekturen mit CloudEvents
  • Wenn Traffic-Splitting und Canary Releases wichtig sind
  • Google Cloud Run-kompatible Workloads
  • Wenn Scale-to-Zero kostenlos und zuverlässig sein muss

Alternative für 2026: Wer Serverless ohne eigene Infrastruktur will, sollte Cloudflare Workers oder AWS Lambda prüfen. Für Kubernetes-native Serverless ohne die Komplexität von Knative ist KEDA (Kubernetes Event-Driven Autoscaling) eine interessante Alternative.

Weiterführende Artikel

Verwandte Technologien im Techradar