Cette page décrit les fonctionnalités de mise en réseau de Google Distributed Cloud, y compris les sous-réseaux, les sessions d'appairage BGP et l'équilibrage de charge.
Les procédures décrites sur cette page ne s'appliquent qu'aux racks Distributed Cloud, à l'exception de l'équilibrage de charge, qui s'applique à la fois aux racks Distributed Cloud et aux serveurs de mise en réseau Distributed Cloud.
Activer l'API Distributed Cloud Edge Network
Avant de pouvoir configurer la mise en réseau Distributed Cloud, vous devez activer l'API Distributed Cloud Edge Network. Pour ce faire, suivez les étapes de cette section. Par défaut, les serveurs Distributed Cloud sont livrés avec l'API Distributed Cloud Edge Network déjà activée.
Console
Dans la Google Cloud console, accédez à la page API Distributed Cloud Edge Network.
Cliquez sur Activer.
gcloud
Exécutez la commande suivante :
gcloud services enable edgenetwork.googleapis.com
Configurer la mise en réseau Distributed Cloud
Cette section explique comment configurer les composants de mise en réseau Distributed Cloud.
Les limites suivantes s'appliquent aux serveurs Distributed Cloud :
- Vous ne pouvez configurer que des sous-réseaux et
- les sous-réseaux ne sont compatibles qu'avec les ID de VLAN. Les sous-réseaux basés sur des CIDR ne sont pas compatibles.
Une configuration réseau typique pour Distributed Cloud comprend les étapes suivantes :
Facultatif : Initialisez la configuration réseau de la zone cible, si nécessaire.
Créez un réseau.
Créez un ou plusieurs sous-réseaux dans le réseau.
Établissez des sessions d'appairage BGP en amont avec vos routeurs PE à l'aide des pièces jointes d'interconnexion correspondantes.
Établissez des sessions d'appairage BGP en aval avec les pods qui exécutent vos charges de travail à l'aide des sous-réseaux correspondants.
Facultatif : Établissez des sessions d'appairage BGP de bouclage pour une haute disponibilité.
Testez la configuration.
Connectez vos pods au réseau.
Facultatif : Initialiser la configuration réseau de la zone Distributed Cloud
Vous devez initialiser la configuration réseau de votre zone Distributed Cloud dans les cas suivants :
- Immédiatement après l'installation de votre matériel Distributed Cloud dans vos locaux.
- Vous avez effectué une mise à niveau vers la version 1.3.0 ou ultérieure de Distributed Cloud sur un déploiement Distributed Cloud existant, mais vous n'avez pas participé à l'aperçu privé de l'API Distributed Cloud Edge Network.
L'initialisation de la configuration réseau d'une zone crée un routeur par défaut nommé default et un réseau par défaut nommé default. Elle configure également le routeur default pour qu'il s'appaire avec toutes les interconnexions que vous avez demandées lors de la commande du matériel Distributed Cloud en créant les pièces jointes d'interconnexion correspondantes. Cette configuration fournit à votre déploiement Distributed Cloud une connectivité de liaison montante de base à votre réseau local.
L'initialisation de la configuration réseau d'une zone est une procédure unique. Pour obtenir des instructions complètes, consultez Initialiser la configuration réseau d'une zone.
Créer un réseau
Pour créer un réseau, suivez les instructions de la section Créer un réseau. Vous devez également créer au moins un sous-réseau dans le réseau pour permettre aux nœuds Distributed Cloud de se connecter au réseau.
Créer un ou plusieurs sous-réseaux
Pour créer un sous-réseau, suivez les instructions de la section Créer un sous-réseau. Vous devez créer au moins un sous-réseau dans votre réseau pour permettre aux nœuds d'accéder au réseau. Le VLAN correspondant à chaque sous-réseau que vous créez est automatiquement disponible pour tous les nœuds de la zone.
Pour les serveurs Distributed Cloud, vous ne pouvez configurer des sous-réseaux qu'à l'aide d'ID de VLAN. Les sous-réseaux basés sur des CIDR ne sont pas compatibles.
Établir des sessions d'appairage BGP en amont
Lorsque vous créez un réseau et ses sous-réseaux correspondants, ils sont locaux à leur zone Distributed Cloud. Pour activer la connectivité sortante, vous devez établir au moins une session d'appairage BGP en amont entre le réseau et vos routeurs périphériques d'appairage.
Pour établir une session d'appairage BGP en amont, procédez comme suit :
Répertoriez les interconnexions disponibles dans votre zone puis sélectionnez l'interconnexion cible pour cette session d'appairage.
Créez une ou plusieurs pièces jointes d'interconnexion sur l'interconnexion sélectionnée. Les pièces jointes d'interconnexion associent le routeur que vous créez à l'étape suivante à l'interconnexion sélectionnée.
Créez un routeur. Ce routeur achemine le trafic entre l'interconnexion et votre réseau à l'aide des pièces jointes d'interconnexion que vous avez créées à l'étape précédente.
Ajoutez une interface au routeur pour chaque pièce jointe d'interconnexion que vous avez créée précédemment dans cette procédure. Pour chaque interface, utilisez l'adresse IP du commutateur ToR (Top-of-Rack) correspondant dans votre rack Distributed Cloud. Pour obtenir des instructions, consultez Établir une session d'appairage en amont.
Ajoutez un pair pour chaque interface que vous avez créée sur le routeur à l'étape précédente.
Établir des sessions d'appairage BGP en aval
Pour activer la connectivité entrante à vos charges de travail depuis votre réseau local, vous devez établir une ou plusieurs sessions d'appairage BGP en aval entre vos routeurs périphériques d'appairage et le sous-réseau auquel appartiennent vos pods. L'adresse IP de la passerelle pour chaque sous-réseau est l'adresse IP du commutateur ToR correspondant dans votre rack Distributed Cloud.
Pour établir une session d'appairage BGP en aval, procédez comme suit :
Ajoutez une interface au routeur dans le réseau cible pour chaque sous-réseau que vous souhaitez provisionner avec une connectivité entrante. Pour obtenir des instructions, consultez Établir une session d'appairage en aval.
Ajoutez un pair pour chaque interface que vous avez créée sur le routeur à l'étape précédente.
Facultatif : Établir des sessions d'appairage BGP de bouclage
Pour activer une connectivité à haute disponibilité entre vos charges de travail et votre réseau local, vous pouvez établir une session d'appairage BGP de bouclage entre le pod cible et les deux commutateurs ToR de votre rack Distributed Cloud. Une session d'appairage de bouclage établit deux sessions d'appairage indépendantes pour le pod, une avec chaque commutateur ToR.
Pour établir une session d'appairage BGP de bouclage, procédez comme suit :
Ajoutez une interface de bouclage au routeur dans le réseau cible. Pour obtenir des instructions, consultez Établir une session d'appairage de bouclage.
Ajoutez un pair pour l' interface de bouclage.
Tester la configuration
Pour tester la configuration des composants réseau que vous avez créés, procédez comme suit :
Connecter vos pods au réseau
Pour connecter vos pods au réseau et configurer des fonctions réseau avancées, suivez les instructions de l'opérateur de fonction réseau.
Équilibrage de charge
Distributed Cloud est fourni avec une solution d'équilibrage de charge réseau groupée basée sur MetalLB en mode couche 2. Vous pouvez utiliser cette solution pour exposer les services qui s'exécutent dans votre zone Distributed Cloud au monde extérieur à l'aide d'adresses IP virtuelles (VIP) comme suit :
- Votre administrateur réseau planifie la topologie réseau et spécifie le sous-réseau d'adresses IPv4 virtuelles requis lors de la commande de Distributed Cloud. Google configure votre matériel Distributed Cloud en conséquence avant la livraison.
Gardez les points suivants à l'esprit :
- Ce sous-réseau VIP est partagé entre tous les clusters Kubernetes qui s'exécutent dans votre zone Distributed Cloud.
- Une route pour le sous-réseau VIP demandé est annoncée via les sessions BGP entre la zone Distributed Cloud et votre réseau local.
- Les première (ID réseau), deuxième (passerelle par défaut) et dernière (adresse de diffusion d'adresse) adresses du sous-réseau sont réservées aux fonctionnalités de base du système fonctionnalité. N'attribuez pas ces adresses aux pools d'adresses de vos configurations MetalLB.
- Chaque cluster doit utiliser une plage VIP distincte qui se trouve dans le sous-réseau VIP configuré.
- Lorsque vous créez un cluster dans votre zone Distributed Cloud, votre administrateur de cluster spécifie les pools d'adresses de service Pod et ClusterIP à l'aide de la notation CIDR. Votre administrateur réseau fournit le sous-réseau VIP
LoadBalancerapproprié à votre administrateur de cluster. Une fois le cluster créé, l'administrateur de cluster configure les pools VIP correspondants. Pour les clusters de plan de contrôle à distance, vous devez modifier la ConfigMap
metallb-configdans l'espace de nomsmetallb-systemà l'aide de la commandekubectl editoukubectl replace. N'utilisez pas la commandekubectl apply, car Distributed Cloud écrase vos modifications.L'exemple suivant illustre une telle configuration :
# metallb-config.yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: metallb-config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.2-192.168.1.254Pour les clusters de plan de contrôle local, vous devez spécifier les pools VIP à l'aide de l'indicateur
--external-lb-ipv4-address-poolslorsque vous créez le cluster. Pour en savoir plus, consultez le mode de survie.L'administrateur de cluster crée les services Kubernetes
LoadBalancerappropriés.
Les nœuds Distributed Cloud d'un même pool de nœuds partagent un domaine de couche 2 commun et sont donc également des nœuds d'équilibreur de charge MetalLB. Les nœuds de plan de contrôle Distributed Cloud qui s'exécutent sur Google Cloud ne fonctionnent pas comme des nœuds d'équilibreur de charge.
Entrée Distributed Cloud
En plus de l'équilibrage de charge, Distributed Cloud est également compatible avec les ressources Ingress Kubernetes. Une ressource Ingress Kubernetes contrôle le flux de trafic HTTP(S) vers les services Kubernetes qui s'exécutent sur vos clusters Distributed Cloud. L'exemple suivant illustre une ressource Ingress typique :
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /foo
pathType: Prefix
Une fois configuré, le trafic réseau transite par le service istio-ingress, auquel est attribuée par défaut une adresse IP aléatoire à partir des pools VIP spécifiés dans votre configuration MetalLB. Vous pouvez sélectionner une adresse IP spécifique ou une adresse IP virtuelle à partir de la configuration MetalLB à l'aide du champ loadBalancerIP dans la définition du service istio-ingress. Exemple :
apiVersion: v1
kind: Service
metadata:
labels:
istio: ingress-gke-system
release: istio
name: istio-ingress
namespace: gke-system
spec:
loadBalancerIP: <targetLoadBalancerIPaddress>
Cette fonctionnalité n'est pas disponible sur les serveurs Distributed Cloud.
Désactiver la ressource Ingress Distributed Cloud par défaut
Par défaut, lorsque vous créez un cluster Distributed Cloud, Distributed Cloud configure automatiquement le service istio-ingress pour le cluster. Vous avez la possibilité de créer un cluster Distributed Cloud sans le service istio-ingress. Pour cela, procédez comme suit :
gcloud
Créez un fichier de configuration YAML nommé
SystemsAddonConfig.yamlavec le contenu suivant :systemAddonsConfig: ingress: disabled: true
Transmettez le fichier
SystemsAddonConfig.yamlà l'aide de l'indicateur--system-addons-configdans votre commande de création de cluster. Vous devez utiliser la versiongcloud alphapour utiliser cette fonctionnalité. Exemple :gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \ --system-addons-config=SystemsAddonConfig.yamlPour en savoir plus sur la création d'un cluster Distributed Cloud, consultez Créer un cluster.
API
Ajoutez le contenu JSON suivant à la charge utile JSON de votre requête de création de cluster :
"systemAddonConfig" { "ingress" { "disabled": true } }Envoyez la requête de création de cluster comme décrit dans Créer un cluster.
Compatibilité avec SCTP
Distributed Cloud est compatible avec le protocole SCTP (Stream Control Transmission Protocol) sur l'interface réseau principale pour la mise en réseau interne et externe. La compatibilité avec SCTP inclut les types de services NodePort, LoadBalancer et ClusterIP. Les pods peuvent utiliser SCTP pour communiquer avec d'autres pods et des ressources externes. L'exemple suivant montre comment configurer IPERF en tant que service ClusterIP à l'aide de SCTP :
apiVersion: v1
kind: Pod
metadata:
name: iperf3-sctp-server-client
labels:
app.kubernetes.io/name: iperf3-sctp-server-client
spec:
containers:
- name: iperf3-sctp-server
args: ['-s', '-p 31390']
ports:
- containerPort: 31390
protocol: SCTP
name: server-sctp
- name: iperf3-sctp-client
...
---
apiVersion: v1
kind: Service
metadata:
name: iperf3-sctp-svc
spec:
selector:
app.kubernetes.io/name: iperf3-sctp-server-client
ports:
- port: 31390
protocol: SCTP
targetPort: server-sctp
Cette fonctionnalité n'est pas disponible sur les serveurs Distributed Cloud.
Modules de noyau SCTP
À partir de la version 1.5.0, Distributed Cloud configure le module de noyau sctp Edge OS comme chargeable. Cela vous permet de charger vos propres piles de protocoles SCTP dans l'espace utilisateur du noyau.
De plus, Distributed Cloud charge les modules suivants dans le noyau par défaut :
| Nom du module | Nom de la configuration |
|---|---|
fou |
CONFIG_NET_FOU |
nf_conntrack_proto_gre |
CONFIG_NF_CT_PROTO_GRE |
nf_conntrack_proto_sctp |
CONFIG_NF_CT_PROTO_SCTP |
inotify |
CONFIG_INOTIFY_USER |
xt_redirect |
CONFIG_NETFILTER_XT_TARGET_REDIRECT |
xt_u32 |
CONFIG_NETFILTER_XT_MATCH_U32 |
xt_multiport |
CONFIG_NETFILTER_XT_MATCH_MULTIPORT |
xt_statistic |
CONFIG_NETFILTER_XT_MATCH_STATISTIC |
xt_owner |
CONFIG_NETFILTER_XT_MATCH_OWNER |
xt_conntrack |
CONFIG_NETFILTER_XT_MATCH_CONNTRACK |
xt_mark |
CONFIG_NETFILTER_XT_MARK |
ip6table_mangle |
CONFIG_IP6_NF_MANGLE |
ip6_tables |
CONFIG_IP6_NF_IPTABLES |
ip6table_filter |
CONFIG_IP6_NF_FILTER |
ip6t_reject |
CONFIG_IP6_NF_TARGET_REJECT |
iptable_mangle |
CONFIG_IP_NF_MANGLE |
ip_tables |
CONFIG_IP_NF_IPTABLES |
iptable_filter |
CONFIG_IP_NF_FILTER |
Ressource ClusterDNS
Distributed Cloud est compatible avec la ressource ClusterDNS Google Distributed Cloud pour configurer des serveurs de noms en amont pour des domaines spécifiques à l'aide de la section spec.domains. Pour en savoir plus sur la configuration de cette
ressource, consultez
spec.domains.
Cette fonctionnalité n'est pas disponible sur les serveurs Distributed Cloud.