Как заставить kube-proxy или kubelet использовать частный IP-адрес хоста?

Я создал кластер, используя kudeadm и все работает нормально до тех пор, пока я не пытаюсь настроить правила брандмауэра, такие как разрешение только 10.0.0.0/8 трафик. Это каким-то образом отключает мой модуль VPN (Wireguard) для подключения к Kubernetes. kube-dns с моей локальной машины. Происходит какая-то черная магия, которая выше моей зарплаты.

Если я разрешаю весь трафик со всех общедоступных IP-адресов в кластере, все снова работает нормально. Так что я думаю, что это потому, что kube-proxy использует только эти общедоступные IP-адреса и каким-то образом проксирует соединения через них. Решением этого будет принудительное kubelet и kube-proxy использовать только частные IP-адреса экземпляров (10.0.0.0/8).

Я пробовал:

  • Параметр kubeletх --node-ip (видеть здесь). kubelet Затем процесс запускается с этой опцией и устанавливает некоторую аннотацию на этом узле (например, alpha.kubernetes.io/provided-node-ip: 10.0.3.1), но IP-адрес kube-proxy pod не меняется (после перезагрузки). Кто-то сказал, что Kubernetes берет IP-адрес, указанный облачным провайдером (см. здесь), если он предоставлен, но мой облачный провайдер этого не делает (см. здесь). я также использовал kubeadm reset и позвольте узлу воссоединиться, просто чтобы убедиться.
  • Параметр bindAddress в kube-proxy ConfigMap также не имеет никакого эффекта. Я установил там IP узла и перезапустил его kube-proxy чтобы проверить это. Нет эффекта. Не нашел способа настроить это на диске самой ноды, т.к. kube-proxy использует только ConfigMap kube-proxy как объем.

Может быть интересно:

  • Версия Кубернета: 1.24
  • Облачный провайдер: Hetzner

Спасибо за любую помощь!

kubernetes

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *