Configuration Réseau d’un Cluster Kubernetes avec Bonding LACP, VLANs, Routage et Cisco Nexus

Ce guide fournit une configuration complète et détaillée pour un cluster Kubernetes avec trois nœuds masters et deux nœuds workers. L’objectif est de configurer un réseau optimisé pour la haute disponibilité et la redondance, en utilisant bonding LACP (Link Aggregation Control Protocol), VLANs, routage par sous-réseaux, et deux switchs Cisco Nexus.


Architecture Réseau et Schéma de Câblage pour le Cluster Kubernetes

Chaque nœud est connecté à deux switchs Cisco Nexus pour une redondance complète. Le réseau est segmenté en plusieurs VLANs avec des sous-réseaux spécifiques pour isoler le trafic.

Table des Adressages Réseau et VLANs

RéseauFonctionVLANSous-réseauRoutage
commCommunication10010.0.1.0/24Oui
storStockage20010.0.2.0/24Non
dmzAccès Externe30010.0.3.0/24Oui
internalRéseau Interne40010.0.4.0/24Oui

Schéma de Câblage et Channel-Groups pour Cisco Nexus

NœudVLANsPort Switch AChannel-Group (Switch A)Port Switch BChannel-Group (Switch B)
Master 1100 (comm), 200 (stor)Port 2102Port 2102
Master 2100 (comm), 200 (stor)Port 2102Port 2102
Master 3100 (comm), 200 (stor)Port 2102Port 2102
Worker 1400 (internal)Port 1101Port 1101
Worker 2300 (dmz)Port 3103Port 3103

Partie 1 : Configuration par Nœud avec la Commande ip

Nous commençons par la configuration réseau de chaque nœud à l’aide de la commande ip pour définir le bonding LACP, les VLANs, et le routage.

1. Master 1

  • comm : 10.0.1.10/24
  • stor : 10.0.2.10/24
# Créer le bond principal en mode LACP (802.3ad)
ip link add name bond0 type bond mode 802.3ad
ip link set bond0 down

# Associer les interfaces physiques au bond principal
for iface in enp0s3 enp0s8; do
  ip link set $iface down
  ip link set $iface master bond0
  ip link set $iface up
done

# Configurer le VLAN comm
ip link add link bond0 name comm type vlan id 100
ip a add 10.0.1.10/24 dev comm
ip link set comm up

# Configurer le VLAN stor (sans routage)
ip link add link bond0 name stor type vlan id 200
ip a add 10.0.2.10/24 dev stor
ip link set stor up

# Activer le bond
ip link set bond0 up

# Routage pour le réseau comm
ip route add 10.0.1.0/24 via 10.0.1.1 dev comm

2. Master 2

  • comm : 10.0.1.11/24
  • stor : 10.0.2.11/24
# Créer le bond principal
ip link add name bond0 type bond mode 802.3ad
ip link set bond0 down

for iface in enp0s3 enp0s8; do
  ip link set $iface down
  ip link set $iface master bond0
  ip link set $iface up
done

# VLAN comm
ip link add link bond0 name comm type vlan id 100
ip a add 10.0.1.11/24 dev comm
ip link set comm up

# VLAN stor (sans routage)
ip link add link bond0 name stor type vlan id 200
ip a add 10.0.2.11/24 dev stor
ip link set stor up

# Activer le bond
ip link set bond0 up

# Routage pour le réseau comm
ip route add 10.0.1.0/24 via 10.0.1.1 dev comm

3. Master 3

  • comm : 10.0.1.12/24
  • stor : 10.0.2.12/24
# Créer le bond principal
ip link add name bond0 type bond mode 802.3ad
ip link set bond0 down

for iface in enp0s3 enp0s8; do
  ip link set $iface down
  ip link set $iface master bond0
  ip link set $iface up
done

# VLAN comm
ip link add link bond0 name comm type vlan id 100
ip a add 10.0.1.12/24 dev comm
ip link set comm up

# VLAN stor (sans routage)
ip link add link bond0 name stor type vlan id 200
ip a add 10.0.2.12/24 dev stor
ip link set stor up

# Activer le bond
ip link set bond0 up

# Routage pour le réseau comm
ip route add 10.0.1.0/24 via 10.0.1.1 dev comm

4. Worker 1

  • comm : 10.0.1.20/24
  • stor : 10.0.2.20/24
  • dmz : 10.0.3.20/24
  • internal : 10.0.4.20/24
# Interface bond0 pour Worker 1
ip link add name bond0 type bond mode 802.3ad
ip link set bond0 down

for iface in enp0s3 enp0s8; do
  ip link set $iface down
  ip link set $iface master bond0
  ip link set $iface up
done

# VLAN comm
ip link add link bond0 name comm type vlan id 100
ip a add 10.0.1.20/24 dev comm
ip link set comm up

# VLAN stor (sans routage)
ip link add link bond0 name stor type vlan id 200
ip a add 10.0.2.20/24 dev stor
ip link set stor up

# VLAN dmz
ip link add link bond0 name dmz type vlan id 300
ip a add 10.0.3.20/24 dev dmz
ip link set dmz up

# VLAN internal
ip link add link bond0 name internal type vlan id 400
ip a add 10.0.4.20/24 dev internal
ip link set internal up

# Activer le bond
ip link set bond0 up

# Routage pour les réseaux comm, dmz, et internal
ip route add 10.0.1.0/24 via 10.0.1.1 dev comm
ip route add 10.0.3.0/24 via 10.0.3.1 dev dmz
ip route add 10.0.4.0/24 via 10.0.4.1 dev internal

5. Worker 2

  • comm : 10.0.1.21/24
  • stor : 10.0.2.21/24
  • dmz : 10.0.3.21/24
  • internal : 10.0.4.21/24
# Interface bond0 pour Worker 2
ip link add name bond0 type bond mode 802.3ad
ip link set bond0 down

for iface in enp0s3 enp0s8; do
  ip link set $iface down
  ip link set $iface master bond0
  ip link set $iface up
done

# VLAN comm
ip link add link bond0 name comm type vlan id 100
ip a add 10.0.1.21/24 dev comm
ip link set comm up

# VLAN stor (sans routage)
ip link add link bond0 name stor type vlan id 200
ip a add 10.0.2.21/24 dev stor
ip link set stor

 up

# VLAN dmz
ip link add link bond0 name dmz type vlan id 300
ip a add 10.0.3.21/24 dev dmz
ip link set dmz up

# VLAN internal
ip link add link bond0 name internal type vlan id 400
ip a add 10.0.4.21/24 dev internal
ip link set internal up

# Activer le bond
ip link set bond0 up

# Routage pour les réseaux comm, dmz, et internal
ip route add 10.0.1.0/24 via 10.0.1.1 dev comm
ip route add 10.0.3.0/24 via 10.0.3.1 dev dmz
ip route add 10.0.4.0/24 via 10.0.4.1 dev internal

Partie 2 : Configuration avec nmcli (NetworkManager)

Pour une configuration persistante, nmcli permet de créer le bonding et les VLANs et de gérer les paramètres IP et routage.

Exemple de Configuration nmcli pour chaque Nœud

Master 1 (Exemple)

  1. Créer le Bonding LACP :
   nmcli connection add type bond con-name bond0 ifname bond0 mode 802.3ad
   nmcli connection add type ethernet con-name enp0s3 ifname enp0s3 master bond0
   nmcli connection add type ethernet con-name enp0s8 ifname enp0s8 master bond0
  1. Ajouter les VLANs :
  • comm (VLAN 100) :
    nmcli connection add type vlan con-name comm ifname comm dev bond0 id 100
    nmcli connection modify comm ipv4.addresses 10.0.1.10/24 ipv4.gateway 10.0.1.1 ipv4.method manual
  • stor (VLAN 200, sans routage) :
    nmcli connection add type vlan con-name stor ifname stor dev bond0 id 200
    nmcli connection modify stor ipv4.addresses 10.0.2.10/24 ipv4.method manual
  1. Activer les connexions :
   nmcli connection up bond0
   nmcli connection up comm
   nmcli connection up stor

Pour les autres nœuds, ajustez les adresses IP et VLANs.


Partie 3 : Configuration avec Fichiers ifcfg (CentOS/RHEL)

Les fichiers ifcfg offrent une persistance sur les distributions comme CentOS/RHEL.

Exemple de Fichiers ifcfg pour chaque Nœud

Fichier ifcfg-bond0

DEVICE=bond0
NAME=bond0
BONDING_MASTER=yes
TYPE=Bond
BONDING_OPTS="mode=802.3ad miimon=100"
ONBOOT=yes

Fichier ifcfg-comm (VLAN 100)

DEVICE=comm
NAME=comm
VLAN=yes
PHYSDEV=bond0
ONBOOT=yes
IPADDR=10.0.1.10
PREFIX=24
GATEWAY=10.0.1.1

Fichier ifcfg-stor (VLAN 200, sans routage)

DEVICE=stor
NAME=stor
VLAN=yes
PHYSDEV=bond0
ONBOOT=yes
IPADDR=10.0.2.10
PREFIX=24

Partie 4 : Configuration des Switchs Cisco Nexus pour Bonding LACP et VLANs

La configuration des switchs Cisco Nexus garantit une redondance et la prise en charge du bonding LACP avec VLANs.


Pour chaque VLAN, nous configurons un channel-group spécifique, ce qui permet de séparer les réseaux et d’optimiser la gestion du trafic par interface.

Configuration Cisco Nexus pour Switch A

plaintextCopier le code# Configuration du VLAN 400 (internal) sur le Port 1 - Channel-Group 101
interface Ethernet1/1
  switchport mode trunk
  switchport trunk allowed vlan 400
  channel-group 101 mode active

# Configuration du VLAN 100 (comm) et VLAN 200 (stor) sur le Port 2 - Channel-Group 102
interface Ethernet1/2
  switchport mode trunk
  switchport trunk allowed vlan 100,200
  channel-group 102 mode active

# Configuration du VLAN 300 (dmz) sur le Port 3 - Channel-Group 103
interface Ethernet1/3
  switchport mode trunk
  switchport trunk allowed vlan 300
  channel-group 103 mode active

Configuration Cisco Nexus pour Switch B

plaintextCopier le code# Configuration du VLAN 400 (internal) sur le Port 1 - Channel-Group 101
interface Ethernet1/1
  switchport mode trunk
  switchport trunk allowed vlan 400
  channel-group 101 mode active

# Configuration du VLAN 100 (comm) et VLAN 200 (stor) sur le Port 2 - Channel-Group 102
interface Ethernet1/2
  switchport mode trunk
  switchport trunk allowed vlan 100,200
  channel-group 102 mode active

# Configuration du VLAN 300 (dmz) sur le Port 3 - Channel-Group 103
interface Ethernet1/3
  switchport mode trunk
  switchport trunk allowed vlan 300
  channel-group 103 mode active
  • Channel-Group 101 : Utilisé pour le VLAN 400 (internal) sur le port 1, dédié aux workers connectés au réseau interne sécurisé.
  • Channel-Group 102 : Utilisé pour les VLANs 100 (comm) et 200 (stor) sur le port 2, destiné aux nœuds masters.
  • Channel-Group 103 : Utilisé pour le VLAN 300 (dmz) sur le port 3, pour isoler le réseau DMZ des workers.

Cette configuration garantit une gestion efficace du trafic en séparant les VLANs par channel-group et port, tout en maintenant la redondance nécessaire entre les switchs Cisco Nexus.


Conclusion

Cette architecture réseau avancée pour un cluster Kubernetes en production utilise le bonding LACP pour la redondance, des VLANs pour la segmentation du trafic, et des channel-groups dédiés sur les switchs Cisco Nexus. Grâce à cette configuration, nous assurons une isolation stricte des zones réseau pour optimiser la sécurité et les performances, avec un Ingress Controller dédié uniquement aux zones exposées : internal pour les services internes et dmz pour les services accessibles publiquement.

Organisation des Ingress Controllers et Zones Réseau

  1. Zone Interne (internal) : Le VLAN 400 est réservé aux services internes, sensibles, et uniquement accessibles depuis le réseau interne. L’Ingress Controller de cette zone gère le trafic entrant pour les services internes, garantissant qu’ils restent isolés du trafic externe.
  2. Zone DMZ (dmz) : Le VLAN 300 est dédié aux services qui doivent être accessibles publiquement. L’Ingress Controller de la zone DMZ contrôle le trafic externe pour les services exposés au public, tout en maintenant une séparation stricte avec les autres zones du cluster.

Zones Internes sans Ingress Controller

  1. Zone Communication (comm) : Le VLAN 100 est destiné exclusivement aux échanges internes entre les nœuds computes (workers) pour assurer une communication fluide et sécurisée au sein du cluster. Cette zone ne nécessite pas d’Ingress Controller, car elle n’est pas exposée en dehors du cluster.
  2. Zone Stockage (stor) : Le VLAN 200 est dédié aux communications de stockage entre les nœuds pour les volumes partagés. Cette zone est configurée pour ne pas être routée vers l’extérieur, assurant une isolation stricte et des performances optimales pour le stockage distribué.

Avantages de cette Architecture

Cette architecture, avec une segmentation réseau stricte et des Ingress Controllers dédiés pour les zones exposées, offre les avantages suivants :

  • Isolation des services internes : Les services internes et sensibles sont protégés dans la zone internal, accessible uniquement en interne.
  • Sécurité et performances pour le stockage : La zone stor optimise les échanges de stockage en supprimant tout routage externe.
  • Communication sécurisée entre computes : La zone comm est configurée pour les échanges internes entre nœuds workers, sans exposition externe.
  • Protection des services publics : Les services exposés sont isolés dans la zone dmz, réduisant les risques de compromission.

Cette architecture garantit une sécurité renforcée, des performances optimales et une isolation fonctionnelle pour chaque zone réseau du cluster Kubernetes, assurant ainsi un cadre fiable pour les environnements de production.