Как изменить исходный IP для стручка в Kubernetes? - PullRequest
0 голосов
/ 07 февраля 2020

Чтобы изменить исходный IP-адрес на 100.101.102.103 для исходящих данных с указанным c назначением, я изменил iptables внутри контейнера стручка Kubernetes, выполнив инструмент CLI iptables:

iptables -t nat -A POSTROUTING --destination 100.200.150.50/32 -j SNAT --to-source 100.101.102.103

Но он блокирует мои исходящие данные в этом месте и кажется, что данные попадают в контейнер, например, когда я отправляю простой запрос по Curl и просматриваю его с помощью инструмента Tcpdump.

Главный вопрос может быть: Как изменить исходный IP-адрес для Pod в Kubernetes для назначения за пределами кластера?

PS . Я развернул модуль в привилегированном режиме с доступом NET_ADMIN и NET_RAW .

1 Ответ

2 голосов
/ 07 февраля 2020

Я изменил iptables внутри контейнера Pod Kubernetes

Я предлагаю не делать этого, поскольку это может повредить CNI и / или kube-proxy kubernetes. Вместо этого рассмотрите возможность использования выхода kubernetes, чтобы иметь общеизвестный исходный IP-адрес в исходящих пакетах к месту назначения за пределами кластера.

Исходящие пакеты от кластера k8s к месту назначения вне кластера имеют IP-адрес узла в качестве IP-адреса источника .

https://kubernetes.io/docs/tutorials/services/source-ip/ говорит, что исходящие пакеты от k8s получают исходный NAT с IP-адресом узла:

Исходный NAT : замена исходный IP-адрес в пакете, обычно с IP-адресом узла

Для отправки исходящих пакетов из кластера k8s можно использовать следующее:

...