Aller au contenu principal

Chapitre 2.7 - kube-proxy

Objectifs d'Apprentissage

À la fin de ce chapitre, vous serez capable de:

  • Comprendre le rôle de kube-proxy
  • Expliquer comment kube-proxy gère les Services
  • Comprendre les modes de proxy
  • Identifier le load balancing

Qu'est-ce que kube-proxy?

kube-proxy est un composant réseau qui s'exécute sur chaque node. Il maintient les règles de réseau qui permettent la communication avec les Services depuis l'intérieur et l'extérieur du cluster.


Rôles de kube-proxy

1. Gestion des Services

kube-proxy surveille les Services et leurs Endpoints:

2. Load Balancing

Répartit le trafic entre les Pods backend:

3. Règles de Réseau

Maintient les règles iptables ou ipvs pour:

  • Routage vers les Services
  • NAT (Network Address Translation)
  • Load balancing

Modes de Proxy

1. userspace (Déprécié)

Ancien mode, peu performant.

2. iptables (Par défaut)

Utilise iptables pour le routage:

Avantages:

  • Performant
  • Pas de processus utilisateur
  • Natif Linux

3. ipvs (Recommandé pour production)

Utilise IPVS (IP Virtual Server) du kernel Linux:

Avantages:

  • Plus performant que iptables
  • Meilleur load balancing
  • Supporte plus d'algorithmes

Fonctionnement avec un Service

Exemple: Service ClusterIP

apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080

Ce qui se passe:

  1. Service créé → kube-proxy détecte le changement
  2. Endpoints découverts → kube-proxy trouve les Pods backend
  3. Règles créées → iptables/ipvs configuré
  4. Trafic routé → Les requêtes vers le Service sont distribuées

Load Balancing

Algorithmes Supportés

  • Round Robin: Distribution équitable
  • Least Connection: Moins de connexions actives
  • Source IP Hash: Même Pod pour même source

Exemple: Round Robin


Types de Services

ClusterIP

kube-proxy crée des règles pour router le trafic interne.

NodePort

kube-proxy ouvre un port sur chaque node et route vers les Pods.

LoadBalancer

kube-proxy configure le routage, le cloud provider crée le load balancer externe.


Commandes Utiles

# Voir les règles iptables (sur le node)
sudo iptables -t nat -L -n

# Voir les règles ipvs (si mode ipvs)
sudo ipvsadm -ln

# Voir les Endpoints d'un Service
kubectl get endpoints <service-name>

# Voir les détails d'un Service
kubectl describe service <service-name>

Résumé

Dans ce chapitre, vous avez appris:

kube-proxy: Gère le networking et le load balancing
Services: Routage du trafic vers les Pods backend
Modes: iptables (défaut) ou ipvs (production)
Load Balancing: Distribution du trafic entre Pods
Règles réseau: Maintien des règles de routage


Prochaines Étapes

Maintenant que vous comprenez kube-proxy:

Chapitre 2.8: Container Runtime
Chapitre 2.9: Communication Inter-Composants


Chapitre créé le: Décembre 2024