У меня есть VPC A с CIDR 10.A.0.0/16
и VPC B с CIDR 10.B.0.0/16
. У меня есть VPC A и B, которые взаимодействуют и обновляют таблицы маршрутизации, и с сервера 10.B.0.0/16
можно отправлять пинги на сервер 10.A.0.0/16
и наоборот.
Приложения на VPC A также используют некоторые IP-адреса в этом 192.168.0.0/16
диапазоне. Это не то, что я могу легко изменить, но мне нужно иметь возможность достичь 192.168.0.0/16
VPC A из VPC B. VPC A используется для старого кластера Kubernetes, который использует project-calico. Рабочие узлы (экземпляры ec2) получают IP-адреса в блоке VPC CIDR, 10.A.0.0/16
но сетевое взаимодействие Calico настроено с настройкой кластера CIDR 192.168.0.0/16
, и IP-адреса подов на этих рабочих узлах назначаются в этом диапазоне. Новый кластер — это кластер EKS, и IP-адреса подов назначаются из диапазона CIDR VPC, 10.B.0.0/16
. В течение переходного периода я объединил VPC двух кластеров. Работает распределенное приложение Elixir, и поды образуют кластер Erlang, обращаясь друг к другу через IP-адрес своего пода. С моим текущим пиринговым кластером поды A могут достигать как подов A, так и подов B, но поды кластера B могут достигать только B (из-за того, что IP-адреса 192.168.0.0/16
недоступны).
Я попробовал добавить 192.168.0.0/16
в таблицу маршрутизации, используемую для VPC B, и задать цель пирингового соединения. Это не работает, я полагаю, потому что 192.168.0.0/16
не находится в блоке CIDR для VPC A.
Я не могу добавить 192.168.0.0/16
в качестве вторичного CIDR в VPC A, поскольку это ограничено. См.Ограничения ассоциации блоков CIDRисвязанный вопрос. Я понимаю, что это ограничено, но почему это ограничено? RFC1918, похоже, ничего не говорит против использования более одного частного адресного пространства.
Я также попытался создать транзитный шлюз, прикрепив оба VPC и добавив статический маршрут в таблицу маршрутизации транзитного шлюза, который 192.168.0.0/16
нацелен на присоединение VPC A. Но все еще не могу достичь этого диапазона из VPC B.
Таблица маршрутов
Таблица маршрутизации для частной подсети для VPC A
10.A.0.0/16 local
10.B.0.0/16 pcx-[VPC A - VPC B peering connection]
0.0.0.0/0 nat-[gateway for cluster A]
Таблица маршрутизации для частной подсети для VPC B
10.B.0.0/16 local
10.A.0.0/16 pcx-[VPC A - VPC B peering connection]
192.168.0.0/16 pcx-[VPC A - VPC B peering connection]
0.0.0.0/0 nat-[gateway for cluster B]
Конечно, это не работает, поскольку 192.168.0.0/16
его нет в блоке CIDR VPC A, и его нельзя добавить.
Если я запускаю оболочку на Node AI, то могу пинговать 192.168...
pod, и я могу пинговать 10.B.0.0
pod. Но из оболочки на Node BI может пинговать только 10.B.0.0
pod.
Есть ли другой способ подключиться к обоим блокам CIDR в одном 10.0.0.0/8
и 192.168.0.0/16
том же VPC?