- Authors

- Name
- Phillip Pham
- @ddppham
TL;DR
Calico setzt auf bewährte iptables-Regeln und BGP-Routing, Cilium nutzt eBPF im Linux-Kernel für höhere Performance und tiefere Observability. Calico ist einfacher aufzusetzen und hat die längere Track-Record. Cilium bietet mit Hubble ein eingebautes Netzwerk-Monitoring und skaliert besser bei vielen Network Policies. Die Wahl hängt vom Cluster-Umfang und den Anforderungen an Observability ab.
Calico vs Cilium: Welches CNI für deinen Cluster?
Die Wahl des CNI-Plugins bestimmt, wie Pods kommunizieren, wie Network Policies durchgesetzt werden und welche Debugging-Tools dir zur Verfügung stehen. Calico und Cilium sind die zwei dominanten Open-Source-Optionen — aber sie funktionieren grundlegend unterschiedlich.
Architektur im Überblick
Calico verwendet Linux-iptables für Paketfilterung und unterstützt BGP für Routing zwischen Nodes. Das ist erprobt und vorhersagbar. Cilium dagegen lädt eBPF-Programme direkt in den Linux-Kernel. Pakete werden verarbeitet, bevor sie den normalen Netzwerk-Stack durchlaufen.
# Calico-Architektur prüfen (nach Installation)
kubectl get pods -n calico-system
kubectl get ippools.crd.projectcalico.org -o yaml
# Cilium-Architektur prüfen
kubectl get pods -n kube-system -l k8s-app=cilium
cilium status
Der Unterschied zeigt sich besonders bei der Skalierung: iptables-Regeln wachsen linear mit der Anzahl der Services und Policies. eBPF-Maps dagegen bieten O(1)-Lookups, unabhängig von der Regelanzahl.
Installation
Calico mit Helm installieren
# Tigera Operator installieren
helm repo add projectcalico https://docs.tigera.io/calico/charts
helm repo update
kubectl create namespace tigera-operator
helm install calico projectcalico/tigera-operator \
--namespace tigera-operator \
--set installation.cni.type=Calico \
--set installation.calicoNetwork.ipPools[0].cidr=10.244.0.0/16 \
--set installation.calicoNetwork.ipPools[0].encapsulation=VXLAN
# Status prüfen
kubectl rollout status daemonset calico-node -n calico-system --timeout=120s
Cilium mit Helm installieren
helm repo add cilium https://helm.cilium.io/
helm repo update
helm install cilium cilium/cilium \
--namespace kube-system \
--set ipam.mode=kubernetes \
--set hubble.relay.enabled=true \
--set hubble.ui.enabled=true \
--set kubeProxyReplacement=true
# Cilium CLI für Status-Checks
cilium status --wait
Cilium kann mit kubeProxyReplacement=true den kube-proxy komplett ersetzen. Das eliminiert iptables-basiertes Service-Routing und verbessert die Latenz bei vielen Services.
Network Policies im Vergleich
Beide CNIs unterstützen Standard-Kubernetes-NetworkPolicies. Die Syntax ist identisch — der Unterschied liegt in den erweiterten Features.
Standard NetworkPolicy (funktioniert mit beiden)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: backend-allow-frontend
namespace: production
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
ports:
- protocol: TCP
port: 8080
Calico: GlobalNetworkPolicy
Calico bietet Cluster-weite Policies über ein eigenes CRD:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: deny-external-egress
spec:
selector: env == 'production'
types:
- Egress
egress:
- action: Allow
destination:
selector: all()
- action: Deny
destination:
notNets:
- 10.0.0.0/8
Cilium: CiliumNetworkPolicy mit L7-Filtering
Cilium kann Traffic auf Layer 7 filtern — zum Beispiel nur bestimmte HTTP-Pfade erlauben:
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: api-l7-policy
namespace: production
spec:
endpointSelector:
matchLabels:
app: api-gateway
ingress:
- fromEndpoints:
- matchLabels:
app: frontend
toPorts:
- ports:
- port: "8080"
protocol: TCP
rules:
http:
- method: GET
path: "/api/v1/.*"
Vergleichstabelle
| Kriterium | Calico | Cilium |
|---|---|---|
| Datenebene | iptables / eBPF (optional) | eBPF nativ |
| kube-proxy Ersatz | Nein (Standard) | Ja |
| L7 Network Policies | Nein (nur mit Istio) | Ja (HTTP, gRPC, Kafka) |
| Observability | Prometheus-Metriken | Hubble (Flow-Logs + UI) |
| Encryption | WireGuard | WireGuard + IPsec |
| IPAM | Calico IPAM, host-local | Kubernetes, Cluster-Pool |
| Kernel-Anforderung | 3.10+ | 4.19+ (5.10+ empfohlen) |
| Lernkurve | Niedrig | Mittel |
Observability: Hubble vs Calico-Metriken
Ciliums größter Vorteil ist Hubble. Es erfasst jeden Netzwerk-Flow im Cluster und bietet eine grafische UI dazu.
# Hubble CLI installieren
export HUBBLE_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/hubble/master/stable.txt)
curl -L --remote-name-all \
https://github.com/cilium/hubble/releases/download/$HUBBLE_VERSION/hubble-linux-amd64.tar.gz
tar xzvf hubble-linux-amd64.tar.gz
sudo mv hubble /usr/local/bin/
# Port-Forward zu Hubble Relay
kubectl port-forward -n kube-system svc/hubble-relay 4245:80 &
# Live-Flows beobachten
hubble observe --namespace production
hubble observe --verdict DROPPED --last 50
Bei Calico beschränkt sich das Monitoring auf Prometheus-Metriken und Felix-Logs:
# Calico-Felix-Metriken aktivieren
kubectl patch felixconfiguration default \
--type merge \
--patch '{"spec":{"prometheusMetricsEnabled": true}}'
# Policy-Denies in den Logs finden
kubectl logs -n calico-system -l k8s-app=calico-node | grep -i denied
Wann welches CNI?
Calico wählen, wenn:
- Der Cluster auf älteren Kernels läuft (< 4.19)
- BGP-Peering mit physischer Netzwerk-Infrastruktur nötig ist
- Ein schlankes, bewährtes Setup reicht
- Das Team keine eBPF-Erfahrung hat
Cilium wählen, wenn:
- L7-Network-Policies gebraucht werden
- Netzwerk-Observability (Hubble) wichtig ist
- kube-proxy ersetzt werden soll
- Der Cluster viele Services hat (> 500) und iptables-Skalierung ein Problem wird
FAQ
Kann ich von Calico zu Cilium migrieren?
Ja, aber es erfordert eine Downtime oder einen Rolling-Migration-Ansatz. Cilium bietet ein offizielles Migrationstool. In der Praxis ist ein neuer Cluster mit Cilium oft einfacher als eine In-Place-Migration.
Unterstützt Calico auch eBPF?
Ja, seit Calico 3.13 gibt es einen eBPF-Dataplane-Modus. Dieser ist allerdings weniger ausgereift als Ciliums eBPF-Implementierung und bietet nicht das gleiche Feature-Set wie Hubble.
Welches CNI hat bessere Performance?
In Benchmarks zeigt Cilium mit eBPF niedrigere Latenz und höheren Durchsatz, besonders bei vielen Network Policies. Bei kleinen Clustern mit wenigen Policies ist der Unterschied vernachlässigbar.
Funktionieren beide CNIs mit Service Meshes?
Ja. Calico arbeitet problemlos mit Istio und Linkerd zusammen. Cilium bietet mit Cilium Service Mesh eine eigene, Sidecar-freie Alternative, die eBPF statt Envoy-Proxies nutzt.
Welches CNI nutzen Managed-Kubernetes-Anbieter?
GKE Dataplane v2 basiert auf Cilium. AKS bietet sowohl Calico als auch Cilium als Option. EKS nutzt standardmäßig das AWS VPC CNI, unterstützt aber Calico für Network Policies.
Kubernetes ohne DevOps-Overhead?
Wir betreiben Ihre Kubernetes-Cluster 24/7 – Sie fokussieren auf Ihr Kerngeschäft. Ab 4.000€/Monat, DSGVO-konform, mit deutschem Support.
Kubernetes-Beratung gesucht?
Wir helfen deutschen Unternehmen bei der Kubernetes-Implementierung, Migration und Optimierung. DSGVO-konform und praxiserprobt.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
Cilium vs Calico: eBPF vs iptables CNI Vergleich
Cilium und Calico im technischen Vergleich: eBPF vs iptables Performance, NetworkPolicies, Observability und Komplexität. Mit Entscheidungshilfe für euer Cluster.
Cilium eBPF auf Kubernetes: CNI Setup und Calico-Vergleich
Cilium als Kubernetes CNI einrichten: eBPF statt iptables, L7-NetworkPolicies, Hubble Observability und detaillierter Vergleich mit Calico.
Network Policies: Kubernetes-Traffic richtig absichern
Kubernetes erlaubt standardmäßig allen Pod-Traffic. Mit Network Policies sichern Sie Ingress und Egress gezielt ab. Praxis-Guide mit YAML-Beispielen.
Kubernetes Network Policies: Calico & Cilium Guide
Default-Deny, Namespace-Isolation und Egress-Kontrolle mit Calico und Cilium umsetzen für Zero-Trust-Netzwerksegmentierung in Kubernetes.
Kubernetes Insider Threat Detection: Strategien für umfassende Clustersicherheit
Entdecke effektive Strategien für die umfassende Kubernetes Insider Threat Detection. Lerne, wie du Innentäter durch lückenloses Monitoring, Behavioral Analytics und fortschrittliche Runtime Security in deinen Kubernetes-Clustern frühzeitig erkennst und die Sicherheit sowie Compliance nachhaltig stärkst.