访问 Aurora DB 时 Kubernetes 中的容器出现 UnknownHostException

UnknownHostException from container in Kubernetes when accessing Aurora DB

我已经使用 EKS 创建了一个 kubernetes 集群,并在那里部署了我的应用程序和 3 个副本。我的应用程序连接到可通过 public URL 访问的 aurora 数据库实例。由于某种原因,今天早上(第一次使用该应用程序)我的 pod 日志中出现如下所示的 UnknownHostException:

2019-01-30 08:34:47.352  WARN 5 --- [onnection adder] unknown.jul.logger                       : IOException occurred while connecting to my-database-aurora-psql.cc3ft0tcxorz.eu-north-1.rds.amazonaws.com:5999

java.net.UnknownHostException: my-database-aurora-psql.cc3ft0tcxorz.eu-north-1.rds.amazonaws.com
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_181]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_181]
at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_181]
at org.postgresql.core.PGStream.<init>(PGStream.java:69) ~[postgresql-42.2.1.jar!/:42.2.1]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:158) ~[postgresql-42.2.1.jar!/:42.2.1]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) [postgresql-42.2.1.jar!/:42.2.1]
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) [postgresql-42.2.1.jar!/:42.2.1]
at org.postgresql.Driver.makeConnection(Driver.java:452) [postgresql-42.2.1.jar!/:42.2.1]
at org.postgresql.Driver.connect(Driver.java:254) [postgresql-42.2.1.jar!/:42.2.1]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117) [HikariCP-2.7.8.jar!/:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365) [HikariCP-2.7.8.jar!/:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194) [HikariCP-2.7.8.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460) [HikariCP-2.7.8.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.access0(HikariPool.java:71) [HikariCP-2.7.8.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:697) [HikariCP-2.7.8.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool$PoolEntryCreator.call(HikariPool.java:683) [HikariCP-2.7.8.jar!/:na]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]

我有另一个应用程序使用这个数据库,访问这个数据库没有任何问题Url。我还可以从控制台看到数据库从未关闭。 Aurora 数据库 运行 位于与 EKS Kubernetes 集群相同的 AWS 区域中。这与某些内部网络问题有什么关系吗?在这种情况下,EKS 是否使用内部路由?我在想,也许某些内部路由不起作用,因为此集群中不 运行 的其他应用程序(根本不在 AWS 中)没有这个问题。

这主要看起来像是在路由 53 端(这可以解释为什么您的其他应用程序没有受到影响)或在客户端的临时 DNS 解析失败。很难追查到这一点,除非您可以再次重现它,并在问题发生时获得更多 logs/netstats。