Введение

Как Kubernetes понимает, куда направлять трафик на сервисы? За это отвечает kube-proxy.

Когда вы используете ClusterIP, NodePort или LoadBalancer — kube-proxy работает за кулисами, чтобы трафик дошёл до нужного пода.

Разберемся, как он устроен.


Что такое kube-proxy?

kube-proxy — это сетевой компонент, запускающийся на каждом узле кластера.

Он:

  • Обрабатывает трафик к сервисам
  • Управляет IP-маршрутизацией
  • Направляет запросы к подам

kube-proxy — это маршрутизатор внутри Kubernetes.


Как работает kube-proxy?

Основные режимы работы:

  1. iptables (по умолчанию)
  2. IPVS (быстрее и эффективнее)

Когда создаётся сервис:

  • kube-proxy замечает его через API
  • Создаёт iptables или IPVS правила
  • Перенаправляет трафик на поды
kubectl get services
kubectl get endpoints

Показывает, чем управляет kube-proxy.


Пример

При создании сервиса:

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

kube-proxy:

  • Обнаруживает сервис
  • Находит поды по селектору
  • Маршрутизирует трафик к ним через iptables/IPVS

Режимы: iptables vs IPVS

ПараметрiptablesIPVS
ПроизводительностьХорошаяОтличная
МасштабируемостьДля малых/средних кластеровДля больших
ВозможностиБазовая балансировкаРасширенные функции
УстановкаПо умолчаниюТребует настройки
kubectl get configmap kube-proxy -n kube-system -o yaml

Показывает текущий режим.


Почему kube-proxy важен?

Без kube-proxy:

  • Сервисный трафик не маршрутизируется
  • ClusterIP недоступен
  • Балансировка между подами невозможна

Это основа сетевого взаимодействия в Kubernetes.


Заключение

kube-proxy может быть незаметным, но он — ключевой компонент.

Он следит, чтобы сервисы работали, трафик доходил, а ваши приложения масштабировались без лишней боли.


→ Узнать больше: