(Продолжение GKE pod подключается через VPN?)
Я пытаюсь подключить кластер GKE к удаленной сети, используя GCE VPN, к Cisco ASA 5510. Пинг из модуля GKE 10.248.0.26 -> удаленный узел 10.99.193.115 прибывает в 10.99.193.115, и ASA сообщает, что эхо-ответ идет обратно через туннель до ГКЭ. Однако tcpdump на 10.248.0.26 не показывает никаких ответов.
Брандмауэр и маршрутизация по данным Google Cloud Console:
Name Source tag / IP range Allowed protocols / ports Target tags
default-allow-icmp 0.0.0.0/0 icmp Apply to all targets
default-allow-internal 10.240.0.0/16 tcp:1-65535; udp:1-65535; icmp Apply to all targets
default-allow-ssh 0.0.0.0/0 tcp:22 Apply to all targets
gke-zecluster-d6cc7a55-all 10.248.0.0/14 tcp; udp; icmp; Apply to all targets
gke-zecluster-d6cc7a55-ssh <public_ip>/32 tcp:22 gke-zecluster-d6cc7a55-node
gke-zecluster-d6cc7a55-vms 10.240.0.0/16 tcp:1-65535; udp:1-65535; icmp gke-zecluster-d6cc7a55-node
k8s-fw-a1a92183fb18e11e5be3442010af0001 0.0.0.0/0 tcp:80,443 gke-zecluster-d6cc7a55-node
k8s-fw-a1aa3fe95b18e11e5be3442010af0001 0.0.0.0/0 tcp:2003 gke-zecluster-d6cc7a55-node
Name Destination IP ranges Priority Instance tags Next hop
default-route-3eed071cad0670e8 0.0.0.0/0 1000 None Default internet gateway
default-route-7a9ddc4457c714a0 10.240.0.0/16 1000 None Virtual network
gke-zecluster-d6cc7a55-7b61213c-b187-11e5-be34-42010af00015 10.248.0.0/24 1000 None gke-zecluster-d6cc7a55-node-j4jx (Zone ze-zone-1)
gke-zecluster-d6cc7a55-7ec5f7a9-b187-11e5-be34-42010af00015 10.248.1.0/24 1000 None gke-zecluster-d6cc7a55-node-rluf (Zone ze-zone-1)
vpn-1-tunnel-1-route-1 10.99.0.0/16 1000 None
Есть ли какие-то журналы, которые я могу включить, чтобы увидеть, что происходит? Насколько я понимаю, VPN ничего не говорит об этом трафике, а только:
15:24:51.058 sending DPD request
15:24:51.058 generating INFORMATIONAL_V1 request 3069408857 [ HASH N(DPD) ]
15:24:51.058 sending packet: from <gce-vpn-ip>[500] to <asa-ip>[500] (92 bytes)
15:24:51.092 received packet: from <asa-ip>[500] to <gce-vpn-ip>[500] (92 bytes)
15:24:51.092 parsed INFORMATIONAL_V1 request 146600869 [ HASH N(DPD_ACK) ]
Если я изменю VPN-туннель (GCE VPN, ASA), чтобы иметь сеть по умолчанию 10.240.0.0/16 на конце GCE, трафик проходит правильно в обоих направлениях.
Я предполагаю, что это проблема маршрутизации, но что? Разве маршрут 10.248.0.0/24 не должен отправлять трафик обратно на узел GKE? Или надо как-то объявить сеть GKE сетью?
Если IP-адрес 10.248.0.26
принадлежит узлу GKE, то для выполнения ping
между узлом GKE и вашим удаленным узлом вам нужно будет добавить правило брандмауэра на 10.248.0.26/24
network, чтобы разрешить входящий трафик на узел GKE или все цели в этой сети из удаленного источника.
В конце концов, пришлось выбрать другой вариант. Установка опции spec.hostNetwork помещает модуль в адресное пространство узла 10.240.0.0/16, для которого VPN работает нормально.
Насколько я могу судить, когда вы создаете кластер GKE, для адресного пространства модуля настраивается некоторая "волшебная" сеть, которая, похоже, не имеет правильной маршрутизации в отношении VPN. Возможно, что Карман прав, но я не могу найти способ объявить явную виртуальную сеть для модулей, чтобы придерживаться правил брандмауэра. Простое подключение их к сети по умолчанию, похоже, не помогает.
Создание новой не унаследованной сети не помогает, поскольку GKE отказывается создавать кластер с адресом модуля в существующей виртуальной сети, а GCE SDN отказывается создавать виртуальные подсети для адресного пространства, которое GKE уже заявило.