Les clusters Anthos sur Bare Metal sont désormais Google Distributed Cloud (logiciel uniquement) pour Bare Metal. Pour en savoir plus, consultez la présentation du produit.
Comprendre la ressource personnalisée ClusterCIDRConfig
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Présentation
ClusterCIDRConfig est une ressource d'allocation CIDR personnalisée qui vous permet d'allouer plus de plages d'adresses IP aux pods de manière dynamique.
La gestion des adresses IP (IPAM) permet d'utiliser efficacement les sous-réseaux IP et évite les chevauchements des plages d'adresses, ce qui évite les conflits et les pannes réseau.
Kubernetes attribue des CIDR de pod par nœud, qui sont utilisées comme adresses IP pour les pods exécutés sur ce nœud.
Le NodeIPAM Kubernetes actuel présente les limites suivantes :
Tous les CIDR de pods sont alloués à partir d'un seul CIDR de cluster. Vous devez spécifier l'intégralité de la plage d'adresses IP qui représente le cluster le plus volumineux au moment de la création du cluster. Cette limitation peut gaspiller des adresses IP.
Si vous augmentez la taille du cluster, il sera difficile d'ajouter d'autres adresses IP.
Le CIDR du cluster est une plage étendue. Il peut être difficile de trouver un bloc contigu d'adresses IP répondant aux besoins du cluster.
Chaque nœud obtient une plage d'adresses IP de taille fixe dans un cluster. Si les nœuds ne possèdent pas la même taille et la même capacité, vous ne pouvez pas allouer une plage de pods plus importante à un nœud donné avec une plus grande capacité et une plage plus petite aux nœuds de moindre capacité. Cela gaspille beaucoup d'adresses IP. Pour un grand cluster avec de nombreux nœuds, ce gaspillage est aggravé sur tous les nœuds du cluster.
Avec la fonctionnalité ClusterCIDRConfig, vous pouvez éviter d'attribuer un grand bloc CIDR à un cluster, mapper la taille de votre cluster à l'échelle de vos pods et donc conserver des adresses IP. Vous pouvez enregistrer des adresses IP à l'aide de ClusterCIDRConfigs avec différentes combinaisons de CIDR et de perNodeMaskSize. La ressource ClusterCIDRConfig est compatible avec les éléments suivants :
Plusieurs blocs CIDR d'adresses IP non contigus pour le CIDR du cluster à un niveau plus précis
Affinité des nœuds des blocs CIDR
Différentes tailles de blocs allouées aux nœuds
Google Distributed Cloud utilise la fonctionnalité ClusterCIDRConfig dans les fonctionnalités suivantes :
Cluster.spec.clusterNetwork.pods.cidrBlocks est un champ facultatif et n'est pas défini par défaut. Vous devez le définir si l'une des fonctionnalités de la liste précédente ne l'a pas été. Par exemple, il est requis lorsque les clusters sont créés en mode île IPv4 et doit être spécifié, car il est utilisé comme CIDR de routage natif.
Le tableau suivant présente le comportement du champ Cluster.spec.clusterNetwork.pods.cidrBlocks de ClusterCIDRConfig pour différents modes de réseau.
Les Cluster.spec.clusterNetwork.pods.cidrBlocks sont complètement ignorés et peuvent être ignorés. Les utilisateurs doivent définir explicitement des ClusterCIDRConfigs (par nœud, par pool de nœuds et/ou par cluster).
Double pile (IPv4 île, IPv4 plat)
Spécifiez le CIDR IPv4.
Ne spécifiez pas de CIDR IPv6 dans Cluster.spec.clusterNetwork.pods.cidrBlocks.
Spécifiez des ClusterCIDRConfigs avec des CIDR IPv4 et IPv6. Le CIDR IPv4 configuré dans tous les ClusterCIDRConfigs doit être identique au CIDR IPv4 de Cluster.spec.clusterNetwork.pods.cidrBlocks, y compris la valeur PerNodeMask pour IPv4. Pour en savoir plus sur ClusterCIDRConfig et obtenir des exemples d'utilisation, consultez la section Exemples : double pile (IPv4 île, IPv6 plat).
Double pile (IPv4 plat, IPv6 plat)
Vous pouvez ignorer Cluster.spec.clusterNetwork.pods.cidrBlocks, car ils sont complètement ignorés. Vous devez définir explicitement des ClusterCIDRConfigs (par nœud, par pool de nœuds et/ou par cluster) avec des CIDR IPv4 et IPv6.
Configurer la ressource d'allocation CIDR personnalisée ClusterCIDRConfig
ClusterCIDRConfig
Lorsque vous configurez la ressource d'allocation CIDR personnalisée ClusterCIDRConfig, tenez compte des points suivants :
L'attribution de CIDR de pod à partir d'un ClusterCIDRConfig spécifique à un nœud est basée sur des sélecteurs d'étiquettes. Ce mécanisme est semblable à celui de nodeSelector utilisé pour programmer des pods sur un nœud.
Vous devez configurer ClusterCIDRConfig lors du processus de création du cluster dans le fichier YAML de configuration du cluster. Une fois que vous avez spécifié ClusterCIDRConfigs, vous ne pouvez plus modifier les valeurs.
Vous pouvez spécifier plusieurs ClusterCIDRConfigs avec des CIDR qui se chevauchent.
Si aucun ClusterCIDRConfig correspondant n'est trouvé pour un nœud, celui-ci reste dans un état "NotReady" (non prêt) jusqu'à ce qu'un ClusterCIDRConfig avec des étiquettes correspondantes soit créé.
Si le ClusterCIDRConfig correspondant le mieux ne dispose pas de davantage de plages CIDR disponibles pour l'allocation, le CIDR le plus proche est choisi et les CIDR de pod sont alloués à partir des CIDR disponibles.
Dans le cas d'un modèle à double pile, si vous souhaitez attribuer des CIDR de pod à double pile aux nœuds, procédez comme suit :
Configurez les CIDR IPv4 et IPv6 dans ClusterCIDRConfig.
Assurez-vous que tous les ClusterCIDRConfig disposent de CIDR DualStack, si plusieurs ClusterCIDRConfig sont configurés.
Assurez-vous que les CIDR IPv4 et IPv6 configurés comportent un nombre égal d'adresses IP allouables par nœud.
Par exemple : 32 - spec.IPv4.PerNodeMaskSize == 128 -
spec.IPv6.PerNodeMaskSize
spec.IPv4.PerNodeMaskSize = 24
spec.IPv6.PerNodeMaskSize = 120
Ainsi, 32 - 24 == 128 - 120, car la différence est de 8.
Plusieurs ClusterCIDRConfigs peuvent faire correspondre les étiquettes du nodeSelector aux étiquettes de nœud.
Règles d'attribution ClusterCIDRConfig
Pour déterminer le ClusterCIDRConfig utilisé pour attribuer des CIDR de pod au nœud actuel, utilisez les règles de détermination suivantes. Implémentez ces règles dans l'ordre indiqué. Implémentez la règle suivante uniquement si l'égalité n'est pas rompue par la règle précédente.
Sélectionnez le ClusterCIDRConfig dont le NodeSelector correspond au plus grand nombre d'étiquettes sur le nœud. Par exemple, {'node.kubernetes.io/instance-type':'medium', 'rack':
'rack1'} (Match Count: 2) est sélectionné avant {'node.kubernetes.io/instance-type': 'medium'}. (Match Count: 1).
Sélectionnez le ClusterCIDRConfig comportant le plus petit nombre de CIDR de pods pouvant être alloués. Par exemple, {CIDR: "10.0.0.0/16", PerNodeMaskSize: "16"} (1 possible Pod
CIDR) est sélectionné avant {CIDR: "192.168.0.0/20", PerNodeMaskSize: "22"} (4
possible Pod CIDRs).
Sélectionnez le ClusterCIDRConfig dont PerNodeMaskSize a le plus petit nombre d'adresses IP.
Par exemple, 27 (2^(32-27)= 32 adresses IP) sélectionnées avant 25 (2^(32-25)=128 adresses IP).
Sélectionnez le ClusterCIDRConfig dont l'étiquette NodeSelector correspondante présente une valeur alphanumérique inférieure. Par exemple, {'kubernetes.io/hostname': 'node-1'} est choisi plutôt que {'node.kubernetes.io/instance-type':'medium'}.
Sélectionnez le ClusterCIDRConfig dont l'adresse IP CIDR a une valeur inférieure. Quelle que soit la configuration (IPv4 ou double pile), seuls les CIDR IPv4 sont comparés. Par exemple, {CIDR: "10.0.0.0/16"} is picked over
{CIDR: "192.168.0.0/16"}.
Exemples de configuration
Cette section présente des exemples de configuration de Cluster et ClusterCIDRConfig pour tous les modes de réseau.
Exemples : IPv4 en mode île (par défaut)
Configuration du cluster (par défaut)
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)
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/01/31 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/01/31 (UTC)."],[],[]]