Я пытаюсь воспроизвести тот же эксперимент, который описан на Вот. В основном эксперимент заключается в отправке HTTP-запроса от модуля внутри кластера к другому модулю в том же кластере, но я не могу получить тот же результат. У меня есть модуль со следующим IP: 10.1.97.85/24, в том же кластере другого модуля, в котором есть приложение, которое отправляет ответ HTTP с IP-адресом клиента, отправившего запрос. Как сказано Вот, верно следующее:
Пакеты, отправляемые в ClusterIP изнутри кластера, никогда не обрабатываются NAT, если вы используете kube-proxy в режиме iptables.
Я выполнил приведенный выше тест, но когда я выполняю запрос от модуля с IP-адресом 10.1.97.85/24, я получаю ответ HTTP, в котором говорится, что запрос был отправлен модулем с IP-адресом 10.1.97.1, я хотел бы знать что происходит.
Я провел описанные выше эксперименты с microk8s и kubernetes в версии 1.17.9, и оба модуля находятся на одних и тех же узлах, поскольку у меня только один узел.
Я создал свое развертывание с помощью команды:
microk8s.kubectl create deployment source-ip-app --image=k8s.gcr.io/echoserver:1.4
Вышеупомянутая команда создала модуль с приложением, которое будет отображать client_address в ответе HTTP.
Я показал приведенное выше развертывание с помощью команды:
microk8s.kubectl expose deployment source-ip-app --name=clusterip --port=80 --target-port=8080
Я запустил еще один модуль командой:
microk8s.kubectl run busybox -it --image=busybox --restart=Never --rm
И внутри созданного выше модуля я выполнил команду:
ip addr
С помощью приведенной выше команды я получил IP-адрес: 10.1.97.85, но когда я выполнил wget для службы, я получил обратно IP-адрес: 10.1.97.85