Benutzerdefinierte Ressource „ClusterCIDRConfig“
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Übersicht
ClusterCIDRConfig ist eine benutzerdefinierte CIDR-Zuweisungsressource, mit der Sie dynamisch weitere IP-Adressbereiche für Pods zuweisen können.
Die IP-Adressverwaltung (IP Address Management, IPAM) ermöglicht eine effiziente Nutzung von IP-Subnetzen und hilft, Überlappungen in Adressbereichen zu vermeiden. Dies begrenzt letztlich auch Netzwerkkonflikte und ‑ausfälle.
Kubernetes weist jedem Knoten Pod-CIDRs zu, die als IP-Adressen für die Pods verwendet werden, die auf diesem Knoten ausgeführt werden.
Für die aktuelle Kubernetes-NodeIPAM gelten die folgenden Einschränkungen:
Alle Pod-CIDRs werden aus einem Cluster-CIDR zugewiesen. Sie müssen den gesamten IP-Adressbereich für den größten Cluster zum Zeitpunkt der Clustererstellung angeben. Diese Einschränkung kann zu einer Verschwendung von IP-Adressen führen.
Wenn Sie die Clustergröße erhöhen, ist es schwierig, weitere IP-Adressen hinzuzufügen.
Der Cluster-CIDR ist ein großer Bereich. Es kann schwierig sein, einen zusammenhängenden Block von IP-Adressen zu finden, der den Anforderungen des Clusters entspricht.
Jeder Knoten erhält einen IP-Bereich mit fester Größe innerhalb eines Clusters. Wenn Knoten unterschiedliche Größen und Kapazitäten haben, können Sie einem Knoten mit größerer Kapazität keinen größeren Pod-Bereich und Knoten mit geringerer Kapazität keinen kleineren Bereich zuweisen. Das ist eine Verschwendung von vielen IP-Adressen. Bei einem großen Cluster mit vielen Knoten wird dieser Verschwendung auf alle Knoten im Cluster verteilt.
Mit der ClusterCIDRConfig-Funktion können Sie vermeiden, einem Cluster einen großen CIDR-Block zuzuweisen, können die Clustergröße an den Umfang Ihrer Pods anpassen und so IP-Adressen aufsparen. Sie können IP-Adressen aufsparen, indem Sie ClusterCIDRConfigs mit verschiedenen Kombinationen von CIDR und perNodeMaskSize verwenden. Die ClusterCIDRConfig-Ressource unterstützt Folgendes:
Mehrere nicht zusammenhängende IP-CIDR-Blöcke für Cluster-CIDR auf einer detaillierteren Ebene
Knotenaffinität von CIDR-Blöcken
Knoten werden unterschiedliche Blockgrößen zugewiesen
Google Distributed Cloud verwendet die ClusterCIDRConfig-Funktion in den folgenden Features:
Cluster.spec.clusterNetwork.pods.cidrBlocks ist ein optionales Feld und wird standardmäßig nicht definiert. Sie müssen es definieren, wenn es für eine der Funktionen in der Liste oben nicht definiert ist. Es ist beispielsweise erforderlich, wenn die Cluster im IPv4-Inselmodus erstellt werden. Es muss dann außerdem angegeben werden, da es als nativer Routing-CIDR verwendet wird.
In der folgenden Tabelle wird das Verwenden des Verhaltens des Felds Cluster.spec.clusterNetwork.pods.cidrBlocks von ClusterCIDRConfig für verschiedene Netzwerkmodi aufgeführt.
Netzwerkmodus
ClusterCIDRConfig-Wert
IPv4-Insel (Standardeinstellung)
(Pflichtfeld) Geben Sie Cluster.spec.clusterNetwork.pods.cidrBlocks an.
IPv4 Flat (Standard)
Cluster.spec.clusterNetwork.pods.cidrBlocks werden vollständig ignoriert und können übersprungen werden. Nutzer müssen ClusterCIDRConfigs explizit definieren (pro Knoten, pro Knotenpool und/oder pro Cluster).
Dual-Stack (IPv4-Insel, flacher IPv4)
Geben Sie die IPv4-CIDR an.
Geben Sie in Cluster.spec.clusterNetwork.pods.cidrBlocks keinen IPv6-CIDR-Bereich an.
Geben Sie ClusterCIDRConfigs mit IPv4- und IPv6-CIDRs an. Der in allen ClusterCIDRConfigs konfigurierte IPv4-CIDR muss mit dem IPv4-CIDR aus Cluster.spec.clusterNetwork.pods.cidrBlocks übereinstimmen, einschließlich des PerNodeMask-Werts für IPv4. Weitere Informationen zu ClusterCIDRConfig und Beispiele für die Verwendung finden Sie unter Beispiele: Dual-Stack (IPv4-Insel, IPv6-Flat).
Dual-Stack (flacher IPv4-, flacher IPv6)
Sie können Cluster.spec.clusterNetwork.pods.cidrBlocks überspringen, da sie vollständig ignoriert werden. Sie müssen ClusterCIDRConfigs (pro Knoten, pro Knotenpool und/oder pro Cluster) mit sowohl IPv4- als auch IPv6-CIDRs explizit definieren.
Benutzerdefinierte Ressource „ClusterCIDRConfig“ für die benutzerdefinierte CIDR-Zuweisung konfigurieren
ClusterCIDRConfig
Beachten Sie beim Konfigurieren der benutzerdefinierten CIDR-Zuweisungsressource „ClusterCIDRConfig“ Folgendes:
Die Pod-CIDR-Zuweisung von einer bestimmten ClusterCIDRConfig an einen Knoten basiert auf Label-Selectoren. Dies ähnelt dem nodeSelector-Mechanismus, der zum Planen von Pods auf einem Knoten verwendet wird.
Sie müssen die ClusterCIDRConfig während der Clustererstellung in der YAML-Datei für die Clusterkonfiguration konfigurieren. Nachdem Sie ClusterCIDRConfigs angegeben haben, können Sie die Werte später nicht mehr ändern.
Sie können mehrere ClusterCIDRConfigs mit sich überschneidenden CIDRs angeben.
Wenn für einen Knoten keine passende ClusterCIDRConfig gefunden wird, bleibt der Knoten im Status „NotReady“, bis eine ClusterCIDRConfig mit passenden Labels erstellt wird.
Wenn für die ClusterCIDRConfig mit der besten Übereinstimmung keine weiteren CIDRs für die Zuweisung verfügbar sind, wird die nächstbeste CIDR ausgewählt und die Pod-CIDRs werden aus den verfügbaren CIDRs zugewiesen.
Wenn Sie im Fall eines Dual-Stack-Modells den Knoten Dual-Stack-Pod-CIDRs zuweisen möchten, gehen Sie so vor:
Konfigurieren Sie sowohl IPv4- als auch IPv6-CIDRs in der ClusterCIDRConfig.
Achten Sie darauf, dass alle ClusterCIDRConfig DualStack-CIDRs haben, wenn mehrere ClusterCIDRConfig konfiguriert sind.
Achten Sie darauf, dass sowohl die konfigurierten IPv4- als auch die IPv6-CIDRs die gleiche Anzahl an zuweisbaren IP-Adressen pro Knoten haben.
Daher gilt: 32 – 24 == 128 – 120, da die Differenz 8 ist.
Mehrere ClusterCIDRConfigs können mit den Labels aus dem nodeSelector mit Knotenlabels übereinstimmen.
Zuweisungsregeln für ClusterCIDRConfig
Mit den folgenden Regeln zum Tie-Breaking können Sie ermitteln, welche ClusterCIDRConfig verwendet wird, um dem aktuellen Knoten Pod-CIDRs zuzuweisen. Implementieren Sie diese Regeln in der angegebenen Reihenfolge. Wenden Sie die nächste Regel nur an, wenn die vorherige Regel nicht zu einer Entscheidung geführt hat.
Wählen Sie die ClusterCIDRConfig aus, deren NodeSelector die meisten Labels auf dem Knoten enthält. Beispiel: {'node.kubernetes.io/instance-type':'medium', 'rack':
'rack1'} (Match Count: 2) wird vor {'node.kubernetes.io/instance-type': 'medium'}. (Match Count: 1) ausgewählt.
Wählen Sie die ClusterCIDRConfig mit den wenigsten zuweisbaren Pod-CIDRs aus. Beispiel: {CIDR: "10.0.0.0/16", PerNodeMaskSize: "16"} (1 possible Pod
CIDR) wird vor {CIDR: "192.168.0.0/20", PerNodeMaskSize: "22"} (4
possible Pod CIDRs) ausgewählt.
Wählen Sie die ClusterCIDRConfig aus, deren PerNodeMaskSize die wenigsten IP-Adressen hat.
Beispiel: 27 (2^(32-27) = 32 IP-Adressen) wird vor 25 (2^(32-25) = 128 IP-Adressen) gewählt
Wählen Sie die ClusterCIDRConfig aus, deren übereinstimmendes NodeSelector-Label einen niedrigeren alphanumerischen Wert hat. Beispiel: {'kubernetes.io/hostname': 'node-1'} wird {'node.kubernetes.io/instance-type':'medium'} vorgezogen.
Wählen Sie die ClusterCIDRConfig aus, deren CIDR-IP einen niedrigeren Wert hat. Unabhängig davon, ob es sich bei der Konfiguration um eine IPv4- oder eine DualStack-Konfiguration handelt, werden nur die IPv4-CIDRs verglichen. Beispiel: {CIDR: "10.0.0.0/16"} is picked over
{CIDR: "192.168.0.0/16"}.
Konfigurationsbeispiele
In diesem Abschnitt finden Sie Konfigurationsbeispiele für Cluster und ClusterCIDRConfig für alle Netzwerkmodi.
Beispiele: IPv4-Inselmodus (Standard)
Clusterkonfiguration (Standard)
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm-cluster
namespace: cluster-default
spec:
...
clusterNetwork:
# Pods specify the IP ranges from which pod networks are allocated.
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/12
... (other cluster config omitted)
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Schwer verständlich","hardToUnderstand","thumb-down"],["Informationen oder Beispielcode falsch","incorrectInformationOrSampleCode","thumb-down"],["Benötigte Informationen/Beispiele nicht gefunden","missingTheInformationSamplesINeed","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2026-05-22 (UTC)."],[],[]]