КРАТКИЙ ВОПРОС:
Есть ли способ для модуля Kubernetes связать несколько IP-адресов?
Даже если только петлевые?
ДОПОЛНИТЕЛЬНОЕ ОБЪЯСНЕНИЕ:
У меня есть приложение, которое необходимо развернуть в модуле Kubernetes и которое использует Cassandra. Сама Cassandra расположена за брандмауэром, который по административным причинам не может быть открыт для прямого IP-доступа из внешнего облака, в котором размещен ландшафт K8S. Вместо этого мне нужно разработать реле, которое проходит через настраиваемый туннель.
Драйвер Cassandra внутри приложения будет указывать не на настоящий кластер Cassandra, а на реле, которое затем будет туннелировать соединение.
Я бы очень предпочел запустить ретранслятор внутри самого модуля (даже лучше прямо внутри контейнера приложения), чтобы минимизировать количество обходов данных, поскольку скорость передачи данных будет довольно высокой, а также минимизировать количество отдельных точек сбоя и компонентов для управления, а также для обеспечения меры совместного масштабирования с репликами приложений (приложение автоматически масштабируется, возможно, до большого количества реплик).
Проблема, однако, в том, что Cassandra драйвер подключается к каждому узлу в кластере Cassandra по IP-адресу узла, например, если кластер Cassandra состоит из трех узлов, то драйвер подключается к node1: 9042, node2: 9042 и node3: 9042. Номер порта принудительно используется всеми подключениями. Драйвер не позволяет указывать, скажем, node1: 9042, node2: 9043 и node3: 9044. Таким образом, я не могу подключить драйвер к thispod: 9042, thispod: 9043 и thispod: 9044. Если бы это было возможно, я мог бы запустить реле внутри контейнера, прослушивать три порта, а затем перенаправлять соединения. Однако из-за ограничений драйвера Cassandra конечные точки прослушивания ретрансляции должны иметь разные IP-адреса (и я бы предпочел не создавать модифицированную версию драйвера для снятия этого ограничения).
Что подводит нас к вопрос: может ли модуль связать дополнительные IP-адреса?
Тип адреса не имеет большого значения, если внутри контейнера или модуля возможно отправлять данные на этот адрес и получать от него. Связь по существу является обратной связью внутри contaner или pod. Если бы это была неконтейнерная среда, а простая Linux виртуальная машина, я мог бы создать дополнительные интерфейсы обратной связи, которые бы решили проблему. Но внутри контейнера невозможно создать интерфейсы.
Есть ли способ заставить Kubernetes связывать дополнительные IP-адреса с модулем?