Это сетевой компонент Kubernetes, который нужен для маршрутизации и балансировки трафика внутри кластера. Kube-proxy создает виртуальные IP адреса для сущностей типа service и распределяет трафик между подами, связанными с этими services. Помимо этого kube-proxy настраивает правила на уровне узла, чтобы трафик, поступающий на виртуальные IP service, направлялся на нужные поды.
Режимы работы:
iptables - строит правила с помощью iptables и распределяет трафик, перебирая цепочки. В больших инсталяциях кластера может тормозить, потому что цепочки правил обрабатываются последовательно.
IPVS (IP Virtual Server) - Использует механизм ядра Linux на уровне подсистемы netfilter для балансировки. Этот режим более производительный и поддерживает разные режимы балансировки, дефолт round-robin, может обрабатывать пакеты параллельно.
Хотя kube-proxy и занимается маршрутизацией и балансировкой, в kubernetes все равно нужен CNI сетевой плагин, который будет отвечать за сеть подов, в то время как kube-proxy нужен именно для сети services.
Чтобы включить IPVS мод, сначала надо проверить, что он доступен на уровне ядра, хотя в современных дистрибутивах вряд ли может быть иначе:
lsmod |grep ip_vs
Открываем на редактирование configMap kube-proxy:
kubectl edit cm kube-proxy -n kube-system
И на самом верхнем уровне указываем mode: ipvs
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
#kubernetes