pod и service dns разрешение
У меня есть кластер Kubernetes, на котором я развернул поды и службы. Один из модулей должен подключиться к службе через имя службы, указанное в ее манифесте.
Все службы и модули развертываются в пространстве имен по умолчанию.
При просмотре журналов модуля возникает следующая ошибка:
cassandra cluster ['cassandra'] not reachable: [Errno -8] Unrecognized service
Caused by: java.net.UnknownHostException: cassandra: Name does not resolve
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
at com.datastax.driver.core.Cluster$Builder.addContactPoint(Cluster.java:884)
У меня развернута служба под названием cassandra.
Когда я запускаю nslookup внутри модуля, вот результат:
kubectl exec -it pod/kairosdb -- nslookup cassandra
nslookup: can't resolve '(null)': Name does not resolve
Name: cassandra
Address 1: <ip> cassandra.default.svc.cluster.local
Нужна помощь по устранению этой проблемы.
2 ответа
Если модуль пытается получить доступ к службе, которая находится в другом пространстве имен, вам необходимо указать пространство имен службы.
cassandra.namespacename
См. Это для получения дополнительной помощи по отладке.
Для локального поиска используйте полное имя службы. В этом случае cassandra.deployed-namespace-name.svc.cluster.local.