Kubernetes: проблемы с VPN-сервером и DNS
Я центрифугировали в docker-openvpn
контейнер в мои (местные) Kubernetes кластер для безопасного доступа к моим службам и отладки зависимые службы локально.
Я могу подключиться к кластеру с помощью сервис OpenVPN сервер. Однако я не могу решить мой услуги via DNS.
мне удалось добраться до точки, где после установки маршрутов на VPN-сервере:
- I может пинг Pod по IP (
subnet 10.2.0.0/16
) - я могу пинговать сервис по IP (
subnet 10.3.0.0/16
как DNS, который находится в10.3.0.10
) - я могу
curl
до услуги по IP и получить данные, которые мне нужны.
но, когда я nslookup kubernetes
и сервис, я:
nslookup kubernetes
;; Got recursion not available from 10.3.0.10, trying next server
;; Got SERVFAIL reply from 10.3.0.10, trying next server
мне все еще не хватает чего-то для возврата данных с DNS-сервера, но не могу понять, что мне нужно делать.
как отладить это SERVFAIL
вопрос ДНС Kubernetes?
EDIT:
вещи, которые я заметил и хочу понять:
-
nslookup
работает для разрешения имени службы в любом pod, кроме OpenVPN Pod - пока
nslookup
работает в других коробочках,ping
нет. - аналогично
traceroute
в тех других стручках ведет к слой фланели10.0.2.2
и на этом останавливается.
из этого я предполагаю, что ICMP должен быть заблокирован на уровне фланели, и это не помогает мне понять, где заблокирован DNS.
EDIT2:
Я, наконец, понял, как заставить nslookup работать: мне пришлось нажать домен поиска DNS клиенту с
push "dhcp-option DOMAIN-SEARCH cluster.local"
push "dhcp-option DOMAIN-SEARCH svc.cluster.local"
push "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"
добавить на docker-openvpn
изображения
так что я в конечном итоге с
docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig
-u udp://192.168.10.152:1194
-n 10.3.0.10
-n 192.168.10.1
-n 8.8.8.8
-n 75.75.75.75
-n 75.75.75.76
-s 10.8.0.0/24
-d
-p "route 10.2.0.0 255.255.0.0"
-p "route 10.3.0.0 255.255.0.0"
-p "dhcp-option DOMAIN cluster.local"
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local"
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"
теперь nslookup
работает, а curl
до сих пор не
2 ответов
наконец, моя конфигурация выглядит так:
docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig \
-u udp://192.168.10.152:1194 \
-n 10.3.0.10 \
-n 192.168.10.1 \
-n 8.8.8.8 \
-n 75.75.75.75 \
-n 75.75.75.76 \
-s 10.8.0.0/24 \
-N \
-p "route 10.2.0.0 255.255.0.0" \
-p "route 10.3.0.0 255.255.0.0" \
-p "dhcp-option DOMAIN-SEARCH cluster.local" \
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local" \
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"
-u
для адреса и порта VPN-сервера
-n
для всех DNS-серверов для использования
-s
определить подсеть VPN (по умолчанию 10.2.0.0, которая уже используется Kubernetes)
-d
чтобы отключить NAT
-p
для нажатия опций на клиент
-N
чтобы включить NAT: это кажется критическим для этой установки на Kubernetes
в последняя часть, подталкивая Домены поиска к клиенту, была ключом к получению nslookup
etc.. работать.
обратите внимание, что curl сначала не работал, но, похоже, начинает работать через несколько секунд. Таким образом, это работает, но для того, чтобы curl смог решить, требуется немного времени.