Агент, конфигурирующий правила iptables таким образом, чтобы ip адрес пода скрывался за адресом той ноды кластера, на которой этот под находится. Т.е. обеспечивает маскарадинг ip адресов подов.
Особенности.
Создаётся с помощью DaemonSet и присутствует на каждой ноде кластера;
Подставляет адрес ноды когда обращение идёт за пределы кластера;
Трафик к адресам 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16 не будет подпадать под маскарадинг.
Пример конфигурации.
apiVersion: v1
data:
config: "nonMasqueradeCIDRs:\n - 10.16.128.0/17\n \n\nresyncInterval: 60s\n\n"
kind: ConfigMap
Конфигурационный файл агента содержит несколько параметров.
nonMasqueradeCIDRs. Диапазон CIDR, не подлежащих маскарадингу;
resyncInterval. Интервал времени в течении которого агент пытается загрузить конфиг с диска.
Проверяется файл /etc/config/ip-masq-agent;masqLinkLocal. Булево значение. Показывает будет ли маскарадинг к адресам 169.254.0.0/16. По дефолту стоит false.
Посмотреть правила в iptables, связанные с агентом, можно так:
iptables -t nat -L IP-MASQ-AGENT
Установка агента.
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/ip-masq-agent/master/ip-masq-agent.yaml
В конфигурационном файле присутствует label. Это справедливо для облака YC.addonmanager.kubernetes.io/mode: EnsureExists
Следовательно изменять конфигурацию файла можно. И она не откатится назад.
Зайти внутрь контейнера агента можно так:crictl exec -ti <containerID> /bin/sh
В YC используется версия агента - 2.5.0.
Последняя версия на момент написания статьи - 2.9.3.
Полезные ссылки.
https://kubernetes.io/docs/tasks/administer-cluster/ip-masq-agent/
GitHUB:
https://github.com/kubernetes-sigs/ip-masq-agent?ysclid=ll2q7tfvz7468965718