Containernetzwerkkonzepte in „Azure Kubernetes Service (AKS) auf Azure Stack HCI“

Gilt für: AKS in Azure Stack HCI 22H2, AKS unter Windows Server

Anwendungskomponenten müssen zusammenarbeiten, um ihre Aufgaben in einem containerbasierten Microservices-Ansatz zu verarbeiten. Kubernetes stellt Ressourcen zur Verfügung, die Anwendungskommunikation ermöglichen und Ihnen gestatten, intern und extern Verbindungen mit Anwendungen herstellen und diese ebenso verfügbar zu machen. Sie können einen Lastausgleich für Ihre Anwendungen vornehmen, um hochverfügbare Anwendungen zu erstellen.

Bei komplexeren Anwendungen ist möglicherweise die Konfiguration des eingehenden Datenverkehrs für die SSL/TLS-Terminierung oder ein Weiterleiten mehrerer Komponenten erforderlich. Aus Sicherheitsgründen müssen Sie möglicherweise auch den Netzwerkdatenverkehrsfluss in oder zwischen Pods und Knoten beschränken.

In diesem Artikel werden die wichtigsten Konzepte vorgestellt, die Netzwerke für Ihre Anwendungen in AKS bereitstellen, die von Arc aktiviert werden:

  • Kubernetes-Dienste
  • Eingangscontroller
  • Netzwerkrichtlinien

Kubernetes-Dienste

Kubernetes verwendet Dienste, um die Netzwerkkonfiguration für Anwendungsworkloads zu vereinfachen. Dabei wird eine Reihe von Pods logisch gruppiert und Netzwerkkonnektivität bereitgestellt. Folgende Arten von Diensten sind verfügbar:

Cluster-IP: Erstellt eine interne IP-Adresse für die Verwendung innerhalb des Kubernetes-Clusters. Verwenden Sie Cluster IP für rein interne Anwendungen, die andere Workloads im Cluster unterstützen.

Diagramm: Cluster-IP-Datenverkehrsfluss in einem AKS-Cluster

NodePort: Erstellt eine Portzuordnung auf dem zugrunde liegenden Knoten, mit der direkt auf die Anwendung mit der Knoten-IP-Adresse und dem Port zugegriffen werden kann.

Diagramm: NodePort-Datenverkehrsfluss in einem AKS-Cluster

LoadBalancer: Erstellt eine Azure Load Balancer-Ressource, konfiguriert eine externe IP-Adresse und verbindet die angeforderten Pods mit dem Back-End-Pool des Lastenausgleichs. An den gewünschten Ports werden Regeln für den Lastenausgleich erstellt, damit der Datenverkehr der Kunden die Anwendung erreichen kann.

Diagramm: Datenverkehrsfluss des Lastenausgleichs in einem AKS-Cluster

Für weitere Steuerung und Routing des eingehenden Datenverkehrs können Sie einen Eingangscontroller verwenden.

Hinweis

Wenn Sie einen Zielcluster bereitstellen, der ein Netzwerk mit einem anderen Zielcluster gemeinsam verwendet, besteht die Möglichkeit eines Lastenausgleichs-IP-Adresskonflikts. Dies kann passieren, wenn Sie zwei Arbeitsauslastungen, die unterschiedliche Anschlüsse in Zielclustern verwenden, die dasselbe AksHciClusterNetworkObjekt nutzen. Aufgrund der Art und Weise, wie die IP-Adressen und Anschlusszuordnungen innerhalb von HA Proxy zugewiesen werden, kann dies zu einer doppelten IP-Adresszuweisung führen. In diesem Fall können bei einer oder beiden Workloads zufällige Netzwerkkonnektivitätsprobleme auftreten, bis Sie Ihre Workloads erneut bereitstellen. Wenn Sie Ihre Workloads erneut bereitstellen, können Sie entweder denselben Port verwenden, der bewirkt, dass jede Workload eine separate Dienst-IP-Adresse empfängt, oder Sie können Ihre Workloads in Zielclustern erneut bereitstellen, die unterschiedliche AksHciClusterNetwork Objekte verwenden.

ExternalName: Erstellt einen bestimmten DNS-Eintrag, um den Anwendungszugriff zu erleichtern. Die IP-Adressen für Lastenausgleichsmodule und Dienste können abhängig von der gesamten Einrichtung des Netzwerks interne oder externe Adressen sein und dynamisch zugewiesen werden. Alternativ können Sie eine vorhandene statische IP-Adresse zur Verwendung angeben. Eine vorhandene statische IP-Adresse ist häufig an einen DNS-Eintrag gebunden. Internen Lastenausgleichsmodulen wird nur eine private IP-Adresse zugeordnet, sodass nicht über das Internet darauf zugegriffen werden kann.

Kubernetes-Netzwerkgrundlagen bei Azure Stack HCI

Um den Zugriff auf Ihre Anwendungen oder die gegenseitige Kommunikation von Anwendungskomponenten zu erlauben, stellt Kubernetes eine Abstraktionsschicht für virtuelle Netzwerke bereit. Kubernetes-Knoten sind mit dem virtuellen Netzwerk verbunden und können eingehende und ausgehende Konnektivität für Pods bereitstellen. Die auf jedem Knoten ausgeführte Komponente kube-proxy stellt diese Netzwerkfunktionen bereit.

In Kubernetes gruppieren Dienste die Pods logisch, um Folgendes zu ermöglichen:

  • Direkter Zugriff über eine einzelne IP-Adresse oder einen DNS-Namen und einen bestimmten Port.
  • Verteilen des Datenverkehrs mithilfe eines Lastenausgleichs zwischen mehreren Pods, die denselben Dienst oder dieselbe Anwendung hosten.

Die Azure Stack HCI-Plattform vereinfacht auch die Nutzung virtueller Netzwerke für „AKS auf Azure Stack HCI“-Clustern, indem das „zugrunde liegende“ Netzwerk auf hoch verfügbare Weise bereitgestellt wird. Wenn Sie einen AKS-Cluster erstellen, wird auch eine zugrunde liegende HAProxy-Lastenausgleichsressource erstellt und konfiguriert. Beim Bereitstellen von Anwendungen in einem Kubernetes-Cluster werden IP-Adressen für Ihre Pods und Kubernetes-Dienste in diesem Lastenausgleich als Endpunkte konfiguriert.

IP-Adressressourcen

Um die Netzwerkkonfiguration für Anwendungsworkloads zu vereinfachen, weist AKS Arc den folgenden Objekten in einer Bereitstellung IP-Adressen zu:

  • Kubernetes-Cluster-API-Server: Der API-Server ist eine Komponente der Kubernetes-Steuerungsebene, die die Kubernetes-API verfügbar macht. Der API-Server ist das Front-End für die Kubernetes-Steuerungsebene. API-Servern werden unabhängig vom zugrunde liegenden Netzwerkmodell immer statische IP-Adressen zugewiesen.
  • Kubernetes-Knoten (virtuelle Computer):Ein Kubernetes-Cluster besteht aus einer Gruppe von Workercomputern, die als Knoten bezeichnet werden, und die Knoten hosten Containeranwendungen. Zusätzlich zu den Knoten der Steuerungsebene verfügt jeder Cluster über mindestens einen Workerknoten. Für einen AKS-Cluster werden Kubernetes-Knoten als virtuelle Computer konfiguriert. Diese virtuellen Computer werden als hoch verfügbare virtuelle Computer in Azure Stack HCI erstellt. Weitere Informationen finden Sie unter Netzwerkkonzepte zur Bereitstellung von AKS-Knoten (Azure Kubernetes Service) auf Azure Stack HCI.
  • Kubernetes-Dienste: In Kubernetes gruppieren Dienste Pod-IP-Adressen logisch, um den direkten Zugriff über eine einzelne IP-Adresse oder einen DNS-Namen an einem bestimmten Port zu ermöglichen. Dienste können Datenverkehr auch über einen Lastenausgleich verteilen. Statische IP-Adressen werden unabhängig vom zugrunde liegenden Netzwerkmodell immer Kubernetes-Diensten zugewiesen.
  • HAProxy-Lastenausgleich:HAProxy ist ein TCP/HTTP-Lastenausgleichs- und Proxyserver, der eingehende Anforderungen auf mehrere Endpunkte verteilt. Für jeden Workloadcluster in einer AKS in Azure Stack HCI-Bereitstellung wird ein HAProxy-Lastenausgleich bereitgestellt und als spezialisierter virtueller Computer konfiguriert.
  • Microsoft On-Premises Cloud Service: Dies ist der Azure Stack HCI-Cloudanbieter, der die Erstellung und Verwaltung der virtualisierten Umgebung ermöglicht, die Kubernetes in einem lokalen Azure Stack HCI-Cluster oder Windows Server-Cluster hostet. Das Netzwerkmodell, gefolgt von Ihrem Azure Stack HCI- oder Windows Server-Cluster, bestimmt die IP-Adresszuordnungsmethode, die vom lokalen Microsoft-Clouddienst verwendet wird. Weitere Informationen zu den vom lokalen Clouddienst von Microsoft implementierten Netzwerkkonzepten finden Sie unter Konzepte für Netzwerkknoten.

Kubernetes-Netzwerke

In AKS auf Azure Stack HCI können Sie einen Cluster bereitstellen, der eines der folgenden Netzwerkmodelle verwendet:

  • Flannel Overlay-Netzwerke: Die Netzwerkressourcen werden normalerweise bei der Bereitstellung des Clusters erstellt und konfiguriert.
  • Project Calico-Netzwerke: Dieses Modell bietet zusätzliche Netzwerkfeatures wie Netzwerkrichtlinien und Flusssteuerung.

Beide Netzwerkimplementierungen verwenden ein Überlagerungsnetzwerk-Konfigurationsmodell, das eine IP-Adresszuweisung bereitstellt, die vom restlichen Netzwerk des Rechenzentrums getrennt ist.

Weitere Informationen zu Überlagerungsnetzwerken finden Sie unter Introducing: Kubernetes Overlay Networking for Windows (Einführung: Kubernetes-Überlagerungsnetzwerke für Windows).

Weitere Informationen über das Calico-Netzwerk-Plug-In und Richtlinien finden Sie unter Getting Started with Calico Network Policy (Erste Schritte mit der Calico-Netzwerkrichtlinie).

Netzwerkmodelle im Vergleich

Flannel

Flannel ist eine speziell für Container entwickelte virtuelle Netzwerkschicht. Flannel erstellt ein flaches, das Hostnetzwerk überlagerndes Netzwerk. Allen Containern/Pods wird eine IP-Adresse in diesem Überlagerungsnetzwerk zugewiesen, und sie kommunizieren direkt miteinander, indem sie untereinander Verbindungen mit ihren IP-Adressen herstellen.

Calico

Bei Calico handelt es sich um eine Open-Source-Netzwerk- und Netzwerksicherheitslösung für Container, virtuelle Computer und native Workloads auf Hostbasis. Calico unterstützt mehrere Datenebenen, z. B. eine Linux-eBPF-Datenebene, eine Linux-Netzwerkdatenebene und eine Windows-HNS-Datenebene.

Funktionen

Funktion Flannel Calico
Netzwerkrichtlinien Nein Ja
IPv6 Nein Ja
Verwendete Schichten L2 (VxLAN) L2 (VxLAN)
Bereitstellen von Clustern in vorhandenen oder neuen virtuellen Netzwerken Ja Ja
Windows-Unterstützung Ja Ja
Pod-Pod-Verbindung Ja Ja
Pod-VM-Verbindung, VM im selben Netzwerk Nein Ja
Pod-VM-Verbindung, VM in einem anderen Netzwerk Ja Ja
Kubernetes-Dienste Ja Ja
Verfügbar machen über Lastenausgleich Ja Ja
Netzwerke Viele Netzwerke im selben Cluster mit Multi-Daemon Viele Netzwerke im selben Cluster
Bereitstellung Linux: DaemonSet Linux: DaemonSet
Windows: Dienst Windows: Dienst
Befehlszeile Keine calicoctl

Wichtig

Die Standardauswahl besteht derzeit darin, Calico in einem Überlagerungsnetzwerkmodus zu verwenden. Um Flannel zu aktivieren, verwenden Sie den -primaryNetworkPlugin Parameter des New-AksHciCluster PowerShell-Befehls, und geben Sie als Wert an flannel . Dieser Wert kann nicht geändert werden, nachdem Sie den Cluster bereitgestellt haben, und er gilt sowohl für Windows- als auch für Linux-Clusterknoten.

Hier sehen Sie ein Beispiel:

New-AksHciCluster -name MyCluster -primaryNetworkPlugin 'flannel'

Nächste Schritte

In diesem Artikel werden die Netzwerkkonzepte für Container in AKS-Knoten auf Azure Stack HCI behandelt. Weitere Informationen zu Konzepten zu „AKS auf Azure Stack HCI“ finden Sie in den folgenden Artikeln: