Mit Quality of Service (QoS) wird der Netzwerkverkehr verwaltet und die Leistung wichtiger Anwendungen durch die Steuerung von Faktoren wie Bandbreite, Latenz und Paketverlust sichergestellt. Bei dieser Technologie werden bestimmte Arten von Netzwerkverkehr gegenüber anderen priorisiert, wenn Netzwerkressourcen begrenzt oder überlastet sind. Sie können DSCP-Tagging (Differentiated Services Code Point) verwenden, um Traffic in modernen IP-Netzwerken zu priorisieren.
Informationen zur Verwendung von DSCP-Tagging finden Sie unter DSCP-Tagging konfigurieren.
Funktionsweise des EgressDSCP-Tagging
Die Dienstqualität (Quality of Service, QoS) verwaltet den Netzwerkverkehr, um sicherzustellen, dass kritische Anwendungen auch bei geringer Bandbreite funktionieren. Mit dem DSCP-Tagging für ausgehenden Traffic können Sie Pakete mit einem DSCP-Wert im IP-Header taggen, um das Prioritätsniveau an nachgelagerte Netzwerkgeräte zu kommunizieren.
Unterstützte Arbeitslasten
Das DSCP-Tagging für ausgehenden Traffic unterstützt die Priorisierung von Traffic für die folgenden Google Distributed Cloud-Arbeitslasten:
- Containerarbeitslasten: Kubernetes-Pods und -Dienste, die im Cluster ausgeführt werden.
- Virtuelle Maschinen (VMs): VM-Arbeitslasten, die über die VM-Laufzeit ausgeführt werden, sofern sie mit dem Standardnetzwerk verbunden sind.
Ressourcentypen für DSCP-Tagging
Distributed Cloud verwendet bestimmte benutzerdefinierte Ressourcen, um DSCP-Tags zu verwalten. Mit diesen Objekten definieren Sie die Priorität Ihrer Pakete:
EgressDSCP: Eine benutzerdefinierte Ressource, die den spezifischen DSCP-Wert definiert, der in den IP-Header ausgewählter Traffic-Pakete eingefügt werden soll. Dieses Objekt akzeptiert einen Ganzzahlwert von0bis63.TrafficSelector: Eine benutzerdefinierte Ressource, mit der Netzwerkverkehrsflüsse genau ausgewählt werden. Diese Ressource akzeptiert eine Prioritäts-Ganzzahl von0bis65535mit dem Standardwert1000. DasTrafficSelector-Objekt verweist auf einEgressDSCP-Objekt, um eine bestimmte Aktion auf den identifizierten Traffic anzuwenden. Auch wenn Sie einTrafficSelectormit Namespace-Bereich verwenden, müssen Sie einen Namespace-Selektor einfügen, um den Namespace der Pods, die den Ziel-Traffic initiieren, explizit anzugeben.
Konfliktlösung
Wenn mehrere TrafficSelector-Ressourcen für dasselbe Thema gelten, verwendet das System eine bestimmte Hierarchie, um die Priorität zu bestimmen. Das System löst Konflikte anhand der folgenden Prinzipien in der angegebenen Reihenfolge:
- Priorität: Das System wendet die
TrafficSelectormit dem numerisch niedrigsten Prioritätswert an. - Spezifität des CIDR-Bereichs: Wenn Regeln dieselbe Priorität haben, wendet das System die Regel mit dem spezifischsten CIDR-Limit (dem längsten übereinstimmenden Präfix) an.
- Ports: Wenn Regeln dieselbe Priorität und denselben CIDR-Bereich haben, wendet das System die Regel mit dem spezifischsten Port an.
Wenn eine spezifischere CIDR-Regel eine numerisch höhere Priorität (niedrigere Priorität) hat, wendet das System die allgemeinere Regel an und ignoriert die spezifischere Regel.
Beispiel für Shadowing
Sehen Sie sich die folgenden beiden TrafficSelector-Regeln an, die auf dasselbe Ziel angewendet werden:
- Regel A: Priorität
100, Ziel-CIDR192.168.1.0/24, DSCP-Markierungen40. - Regel B: Priorität
200, Ziel-CIDR192.168.1.15/32, DSCP-Markierungen46.
Obwohl in Regel B ein präziserer Ziel-CIDR (192.168.1.15/32) angegeben ist, wird Regel A vom System priorisiert, da sie einen numerisch niedrigeren Prioritätswert (100) hat. Daher ignoriert das System Regel B und wendet das DSCP-Tag 40 auf den gesamten ausgehenden Traffic an, der an 192.168.1.15 gerichtet ist.
Beschränkungen
Die DSCP-Tagging-Funktion unterliegt in ihrer aktuellen Implementierung mehreren Einschränkungen:
- Externer Egress-Traffic: Sie können nur Nord-Süd-Traffic taggen, der den Cluster verlässt, z. B. ausgehender Traffic, der von Arbeitslasten initiiert wird, und Rückgabe-Traffic von Kubernetes-Diensten an externe Clients.
- Keine interne Durchsetzung: Obwohl das System clusterinternen Traffic taggt, setzt Kubernetes QoS-Richtlinien nicht intern auf Grundlage dieser Tags durch.
- Nur markieren: Das System taggt nur IP-Header. Sie müssen Ihre Upstream-Infrastruktur für das physische Netzwerk so konfigurieren, dass die tatsächliche QoS-Durchsetzung möglich ist.
- Unterstützte Protokolle: Sie können nur IPv4-Traffic taggen.
- Unterstützte Dienste: Sie können Traffic nur für die Dienste
LoadBalancerundNodePorttaggen. - VM-Netzwerke: Sie können nur VM-Arbeitslasten taggen, die mit dem Standardnetzwerk verbunden sind.
- Funktion aktivieren: Sie müssen die Funktion aktivieren, indem Sie der Clusterressource die Annotation
preview.baremetal.cluster.gke.io/traffic-selector: "enable"hinzufügen. - Standardwerte für den Rückgabepfad: Für den Rückgabepfad-Traffic ist der DSCP-Wert standardmäßig auf
0festgelegt, sofern nicht anders konfiguriert.
Sicherheitsaspekte
Nicht autorisierte Nutzer könnten nicht essenziellen Traffic mit erhöhten DSCP-Werten kennzeichnen und so kritische Dienste im gesamten Cluster stören.
Um Sicherheitsrisiken zu minimieren, sollten Sie den Zugriff mithilfe der rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes einschränken:
- Clusterweite Steuerelemente: Beschränken Sie die Berechtigung zum Erstellen oder Ändern von
EgressDSCP-Ressourcen mit Clusterbereich auf vertrauenswürdige Clusteradministratoren. - Namespace-Steuerelemente:
TrafficSelector-Ressourcen nach Namespace verwalten, damit Nutzer nur ihre spezifischen Arbeitslasten beeinflussen können.