
Hallo habrozhiteli! Wir haben kürzlich ein Buch über Kubernetes Version 1.10 veröffentlicht. Der Beitrag besprach die Passage "Netzwerklösungen für Kubernetes"
Networking ist ein umfangreiches Thema. Es gibt viele Möglichkeiten, ein Netzwerk mit Geräten, Herden und Containern zu konfigurieren. Kubernetes beschränkt Sie nicht darauf. Alles, was diese Plattform vorschreibt, ist ein Netzwerkmodell auf hoher Ebene mit einem flachen Adressraum für Herde. In diesem Bereich können Sie viele gute Lösungen mit unterschiedlichen Funktionen und für unterschiedliche Umgebungen implementieren. In diesem Abschnitt werden wir uns einige davon ansehen und versuchen zu verstehen, wie sie in das Kubernetes-Netzwerkmodell passen.
Brücken in Hardware-Clustern erstellen
Die einfachste Umgebung ist ein Bare-Metal-Cluster, bei dem es sich um ein reguläres physisches Netzwerk auf L2-Ebene handelt. Um Container mit einem solchen Netzwerk zu verbinden, können Sie die Standard-Linux-Bridge verwenden. Dies ist ein ziemlich sorgfältiges Verfahren, das Erfahrung mit einfachen Linux-Netzwerkbefehlen wie brctl, ip addr, ip route, ip link, nsenter usw. erfordert. Sie können mit der Implementierung einer solchen Lösung beginnen, indem Sie das folgende Handbuch lesen: blog.oddbit.com/
11.08.2014 / Vier Wege, um einen Docker zu verbinden / (siehe Abschnitt Mit Linux Bridge-Geräten).
Contiv
Contiv ist ein universelles Netzwerk-Add-On. Es wurde entwickelt, um Container über CNI zu verbinden und kann mit Docker (direkt), Mesos, Docker Swarm und natürlich Kubernetes verwendet werden. Contiv befasst sich mit Netzwerkrichtlinien und dupliziert teilweise ein ähnliches Objekt in Kubernetes. Im Folgenden sind einige der Funktionen dieses Netzwerk-Add-Ons aufgeführt:
- Unterstützung für CNM in libnetwork und der CNI-Spezifikation;
- Eine funktionsreiche Richtlinien-Engine, die Sicherheit und vorhersehbare Anwendungsbereitstellung bietet.
- Best-in-Class-Containerleistung;
- Mandantenfähigkeit, Isolation und überlappende Subnetze;
- IPAM-Integration und Serviceerkennung;
- große Auswahl an physikalischen Topologien:
a) Schicht-2-Protokolle (VLAN);
b) Schicht-3-Protokolle (BGP);
c) Overlay-Netzwerke;
d) Cisco SDN (ACI); - IPv6-Unterstützung;
- skalierbare Richtlinien- und Routenzuweisung;
- Integration in Anwendungsvorlagen, einschließlich der folgenden:
a) Docker-Compose;
b) Kubernetes Deployment Manager;
c) Lastausgleich für Dienste, die in den Ausgleich von Mikrodiensten vom Typ "Ost-West" (Ost-West) eingebaut sind;
d) Verkehrsisolation während der Speicherung, Zugriffskontrolle (z. B. etcd / consul), Netzwerkübertragung und -verwaltung.
Contiv hat viele Funktionen. Dieses Tool implementiert eine Vielzahl von Aufgaben und unterstützt verschiedene Plattformen. Daher bin ich mir nicht sicher, ob es die beste Wahl für Kubernetes ist.
Vswitch öffnen
Open vSwitch ist eine ausgereifte Switch-Lösung für virtuelle Switches (Software), die von vielen großen Marktteilnehmern unterstützt wird. Mit dem Open Virtualization Network (OVN) -System können Sie verschiedene virtuelle Netzwerktopologien erstellen. Sie hat ein spezielles Add-On für Kubernetes, aber es ist sehr schwierig zu konfigurieren (siehe Handbuch
github.com/openvswitch/ovn-kubernetes ). Das Linen CNI-Add-On verfügt über weniger Funktionen, ist jedoch viel einfacher zu konfigurieren:
github.com/John-Lin/linen-cni . Die Leinen-CNI-Struktur ist in Abb. 1 dargestellt. 10.6.
Open vSwitch kann physische Server, VMs und Pods / Container in ein einziges logisches Netzwerk integrieren. Dieses System unterstützt sowohl Overlay- als auch physikalische Modi.
Hier sind einige der wichtigsten Funktionen:
- Standard 802.1Q VLAN mit Trunk und öffentlichen Ports
- NIC-Bindung mit oder ohne LACP für einen Switch höherer Ebene
- NetFlow, sFlow® und Spiegelung für verbesserte Sichtbarkeit;
- QoS-Konfiguration (Quality of Service) plus Richtlinien;
- Tunneln durch Geneve, GRE, VXLAN, STT und LISP;
- Break Control in 802.1ag;
- OpenFlow 1.0 plus zahlreiche Add-Ons;
- Transaktionsdatenbank zum Speichern der Konfiguration mit Bindungen für C und Python;
- Hochleistungsumleitung mit Linux-Kernelmodulen.
Nuage Networks VCS
Virtualized Cloud Services (VCS) ist ein Produkt von Nuage, einer gut skalierbaren, richtlinienbasierten Plattform zum Aufbau softwaredefinierter Netzwerke (Software-Defined Networking, SDN). Dies ist eine Lösung auf Unternehmensebene, die auf dem offenen System Open vSwitch (für die Datenumleitung) und einem multifunktionalen SDN-Controller basiert, der auf offenen Standards basiert.
Die Nuage-Plattform kombiniert Kubernetes-Pods und Umgebungen von Drittanbietern (virtuell und Hardware) zu transparenten Overlay-Netzwerken und ermöglicht es Ihnen, detaillierte Richtlinien für verschiedene Anwendungen zu beschreiben. Mit der Echtzeit-Analyse-Engine können Sie die Sichtbarkeit und Sicherheit von Kubernetes-Anwendungen überwachen.
Darüber hinaus können alle VCS-Komponenten als Container installiert werden. Es gibt keine spezifischen Hardwareanforderungen.
Kanal
Canal ist eine Mischung aus zwei Open Source-Projekten: Calico und Flannel. Daher der Name. Das vom CoreOS-Team entwickelte Flannel-Projekt befasst sich mit den Netzwerkfunktionen von Containern, während Calico für die Netzwerkrichtlinien verantwortlich ist. Anfangs wurden sie getrennt voneinander entwickelt, aber die Benutzer wollten sie zusammen verwenden. Das Canal Open Source-Projekt ist jetzt eine Bereitstellungsvorlage für die Installation von Calico und Flannel als separate CNI-Add-Ons. Tigera wurde von den Gründern von Calico entwickelt und hat beide Projekte unterstützt und sogar eine engere Integration geplant. Seit der Veröffentlichung einer eigenen Lösung für die sichere Vernetzung zwischen Anwendungen in Kubernetes hat sich die Priorität auf die Vereinfachung der Konfiguration und Integration von Flannel und Calico verlagert, anstatt eine einheitliche Lösung zu entwickeln. In Abb. 10.7 zeigt den aktuellen Status des Kanalsystems und seine Beziehung zu Orchestrierungsplattformen wie Kubernetes und Mesos.

Beachten Sie, dass Canal bei der Integration in Kubernetes nicht direkt auf etcd zugreift, sondern auf den Kubernetes-API-Server.
Flanell
Flanell ist ein virtuelles Netzwerk, das jedem Knoten ein virtuelles Netzwerk für die Arbeit mit Containerlaufzeiten zur Verfügung stellt. Auf jedem Knoten wird der Flaneld-Agent gestartet, wodurch das Subnetz basierend auf dem im etcd-Cluster gespeicherten reservierten Adressraum angehoben wird. Der Paketaustausch zwischen Containern und im Großen und Ganzen dem Knoten wird von einem von mehreren Servern durchgeführt. In den meisten Fällen verwendet der Server UDP über das TUN-Gerät, das standardmäßig den Datenverkehr über Port 8285 tunnelt (vergessen Sie nicht, ihn in Ihrer Firewall zu öffnen).
In Abb. 10.8 beschreibt detailliert die verschiedenen Komponenten des Flanell-Netzwerks, die von ihm erstellten virtuellen Netzwerkgeräte und wie sie über die Docker0-Bridge mit dem Host und dem Herd kommunizieren. Hier können Sie auch den Prozess der Kapselung von UDP-Paketen und deren Bewegung zwischen Knoten sehen.
Andere Netzwerktechnologien werden unterstützt:
- vxlan - kapselt Pakete mit VXLAN im Kernel;
- host-gw - Erstellt IP-Routen zu Subnetzen über die IP-Adressen des Remote-Servers. Es ist anzumerken, dass dies eine direkte Verbindung auf der zweiten Netzwerkebene zwischen den Servern erfordert, auf denen Flannel ausgeführt wird.
- aws-vpc - Erstellen Sie IP-Routen in der Amazon VPC-Routing-Tabelle
- gce - Erstellt IP-Routen im Google Compute Engine-Netzwerk
- alloc - führt nur die Auswahl des Subnetzes durch, nicht jedoch die Umleitung von Paketen;
- ali-vpc - Erstellt IP-Routen in der Alicloud VPC-Routing-Tabelle.
Kaliko-Projekt
Calico ist eine Komplettlösung für die Vernetzung zwischen Containern und die Netzwerksicherheit. Es kann in alle wichtigen Orchestrierungsplattformen und Laufzeiten integriert werden:
- Kubernetes (Add-On für CNI);
- Mesos (Add-On für CNI);
- Docker (Add-On für libnework);
- OpenStack (Add-On für Neutron).
Calico kann auch lokal oder in einer öffentlichen Cloud bereitgestellt werden, wobei alle Funktionen erhalten bleiben. Die Anwendung von Netzwerkrichtlinien kann von der Last abhängen, die eine klare Verkehrssteuerung bietet und sicherstellt, dass Pakete immer die gewünschten Ziele erreichen. Calico kann Netzwerkrichtlinien automatisch von Orchestrierungsplattformen importieren. Tatsächlich ist er bei Kubernetes für die Implementierung von Netzwerkrichtlinien verantwortlich.
Romana
Romana ist eine moderne Lösung für die Vernetzung zwischen Containern. Es wurde ursprünglich für die Verwendung in der Cloud entwickelt und arbeitet auf der dritten Netzwerkebene, wobei Standardmethoden für die Verwaltung von IP-Adressen verwendet werden. Mit Romana können Sie ganze Netzwerke isolieren, indem Sie mithilfe von Linux-basierten Servern Gateways und Routen für diese erstellen. Für die Arbeit auf der dritten Netzwerkebene ist keine Kapselung erforderlich. Die Netzwerkrichtlinie wird als verteilte Firewall auf alle Endpunkte und Dienste angewendet. Romana ermöglicht lokale und hybride Bereitstellungen zwischen verschiedenen Cloud-Plattformen, da Sie keine virtuellen Overlay-Netzwerke mehr konfigurieren müssen.
Kürzlich in Romana erschienene virtuelle IP-Adressen ermöglichen lokalen Benutzern den offenen Zugriff auf ihre Dienste in lokalen Netzwerken der zweiten Ebene unter Verwendung externer Adressen und Spezifikationen von Diensten.
Romana-Entwickler behaupten, dass ihr Ansatz die Leistung erheblich verbessert. In Abb. Abbildung 10.9 zeigt, wie Sie zusammen mit der Vermeidung der VXLAN-Kapselung viel Overhead vermeiden können.
Netz weben
Die Hauptmerkmale des Weave Net-Projekts sind Benutzerfreundlichkeit und fehlende Konfiguration. Es verwendet die VXLAN-Kapselung und installiert Micro-DNS auf jedem Knoten. Als Entwickler haben Sie es mit einem hohen Abstraktionsgrad zu tun. Nachdem Sie Ihre Container benannt haben, können Sie mit Weave Net eine Verbindung zu Standardports herstellen und die entsprechenden Dienste aktivieren. Dies hilft bei der Migration vorhandener Anwendungen auf Microservice- und Containerisierungsplattformen. Weave Net bietet ein CNI-Add-On für die Arbeit mit Kubernetes und Mesos. Ab Kubernetes 1.4 kann die Integration mit Weave Net mit einem einzigen Befehl durchgeführt werden, der DaemonSet bereitstellt:
kubectl apply -f https://git.io/weave-kube
Die auf jedem Knoten gehosteten Weave Net-Pods sind dafür verantwortlich, alle anderen Pod-Instanzen mit dem Weave-Netzwerk zu verbinden. Weave Net unterstützt APIs mit Netzwerkrichtlinien und bietet eine vollständige und einfach zu konfigurierende Lösung.
Effektive Nutzung von Netzwerkrichtlinien
Die Kubernetes-Netzwerkrichtlinie dient zur Steuerung des Datenverkehrs, der an bestimmte Pods und Namespaces geleitet wird. Bei der Verwaltung von Hunderten von bereitgestellten Microservices (wie dies bei Kubernetes häufig der Fall ist) tritt die Vernetzung zwischen den Herden in den Vordergrund. Es ist wichtig zu verstehen, dass dieser Mechanismus nur indirekt mit der Sicherheit zusammenhängt. Wenn ein Angreifer in der Lage ist, in das interne Netzwerk einzudringen, kann er höchstwahrscheinlich eine eigene Instanz des Herdes erstellen, die den Netzwerkrichtlinien entspricht und die freie Kommunikation mit anderen Herden ermöglicht. Im vorherigen Abschnitt haben wir uns verschiedene Netzwerklösungen in Kubernetes angesehen, wobei der Schwerpunkt auf Netzwerkschnittstellen lag. Hier konzentrieren wir uns auf die Netzwerkrichtlinie, die zusätzlich zu diesen Lösungen implementiert wird, obwohl beide Komponenten eng miteinander verbunden sind.
Netzwerkrichtlinienarchitektur in Kubernetes
Die Netzwerkrichtlinie bestimmt, wie Teilmengen von Herden miteinander und mit anderen Netzwerkendpunkten interagieren können. Die NetworkPolicy-Ressource verwendet Beschriftungen zum Auswählen von Herden und definiert eine Liste von Berechtigungsregeln, mit denen der Datenverkehr an ausgewählte Herdinstanzen geleitet werden kann (zusätzlich zu dem, was die Isolationsrichtlinie im angegebenen Namespace bereits zulässt).
»Weitere Informationen zum Buch finden Sie auf
der Website des Herausgebers»
Inhalt»
Auszug20%
Rabatt auf Gutschein für
Khabrozhitel -
KubernetesNach Zahlung der Papierversion des Buches wird eine elektronische Version des Buches per E-Mail verschickt.
PS: 7% der Kosten des Buches fließen in die Übersetzung neuer Computerbücher. Die Liste der Bücher, die der Druckerei übergeben wurden, finden Sie
hier .