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
- KEDA vs. Kubernetes HPA: Event-Driven Autoscaling
- Dokku vs Coolify vs CapRover: Self-Hosted PaaS
- Helm vs. Kustomize: Kubernetes-Paketmanagement
- ArgoCD vs Flux CD: GitOps-Tools