Containerisierung: Cilium 1.5 verbessert die Skalierbarkeit

Die Netzwerksoftware für containerisierte Anwendungen Cilium skaliert nun bis zu 5000 Knoten und 100.000 Pods.

In Pocket speichern vorlesen Druckansicht
Containerisierung: Cilium 1.5 verbessert die Skalierbarkeit
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Das Team hinter Cilium hat Version 1.5 der Software zum Bereitstellen einer abgesicherten Netzwerkverbindung zwischen containerisierten Anwendungen freigegeben. Nachdem der Fokus im 1.4-Release auf Multi-Cluster-Service-Routing lag, steht diesmal die erhöhte Skalierbarkeit im Mittelpunkt. Dafür haben die Entwickler an zahlreichen Stellen die Software optimiert.

Cilium 1.5 ist nun offiziell für Cluster bis zu einer Größe von 5000 Knoten und 100.000 Pods ausgelegt. Außerdem kann es bis zu 20.000 Services verwalten, wobei die maximal möglichen Dienste von der zusätzlichen Auslastung durch kube-proxy abhängt. Nutzer, die keine NodePort verwenden, können auf kube-proxy verzichten, für das kommende 1.6-Release soll auch die Verwendung von NodePort ohne den Kubernetes-Netzwerk-Proxy möglich sein.

Zu den Optimierungsmaßnahmen gehört unter anderem eine Anpassung der Intervalle für die Resynchronisation. So erzeugt ein einfacher Sanity-Re-Sync im Fünfminutentakt 0,33 Operationen pro Sekunde (OPS) bei 100 Knoten, aber 16,6 OPS bei 5000 Knoten. Neben weiteren erwarteten Skalierungsmaßnahmen ist das Team auf einige überraschende Herausforderungen gestoßen.

Unter anderem existiert wohl ein Bug in grpc-go, der Go-Implementierung von gRPC, der dazu führen kann, dass ein bereits geschlossener Kanal erneut geschlossen werden soll. Das führt zu einem Ausnahmezustand beziehungsweise panic in Go. Beim Skalieren haben die Cilium-Entwickler Unterbrechungen durch führten die zahlreichen panic-Auslösungen entdeckt. Ein weiterer anfangs unerwarteter Flaschenhals war der Kubernetes-API-Server, der bei einem plötzlichen Hochfahren der Knoten und der damit verbundenen Registrierung am kube-apiserver überlastet ist.

Eine Optimierungsmaßnahme zur verbesserten Performance betrifft BPF als Schnittstelle zur Sicherungsschicht des Linux-Kernels. Cilium nutzt BPF unter anderem zum Umsetzen von Multi-Cluster-Routing, Load Balancing und für Netzwerk- und Service-Security. Bisher hat die Software für jeden Endpunkt den entsprechenden Code vollständig kompiliert.

Das sogenannte BPF Templating reduziert nun den Kompilieraufwand, indem es den für alle Knoten gleichen Code beim Start von Cilium kompiliert. Anschließend injiziert es die für die jeweiligen Endpunkte spezifischen Informationen wie die IP-Adressen in das BPF-ELF-Datei (Executable and Linking Format). Das beschleunigt das Kompilieren nach Angabe des Cilium-Teams um den Faktor 25.

BPF Templates reduzieren die Kompilierzeit beim Bereitstellen neuer Endpunkte.

(Bild: Cilium)

Weitere Optimierungsmaßnahmen sowie ausführliche Beschreibungen und Benchmarks zu den genannten Anpassungen lassen sich dem Cilium-Blog entnehmen. Dort ist auch eine Vorschau auf die Pläne für 1.6 zu finden. Die vollständigen Release Notes liegen auf GitHub. (rme)