Я пытаюсь запустить приложение java на кластере aws eks (kubernetes). После успешного извлечения образа из реестра gitlab он пытается запуститься, но через некоторое время отключается. Я спрашиваю, почему имя хоста, которое мне дали в uri mongodb, было неправильно установлено для переменной $ {db_host}. Вот логи контейнера
2020-05-05 13:50:02.520 INFO 1 --- [ main] c.t.s.java-app.Application : Starting Application on java-app-ttzjk with PID 1 (/home/gradle/app.jar started by root in /home/gradle)
2020-05-05 13:50:02.527 INFO 1 --- [ main] c.t.s.java-app.Application : The following profiles are active: docker
2020-05-05 13:50:04.280 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2020-05-05 13:50:04.418 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 124ms. Found 2 MongoDB repository interfaces.
2020-05-05 13:50:05.923 INFO 1 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'asyncConfig' of type [com.taskforce.security.dependency.configuration.AsyncConfig$$EnhancerBySpringCGLIB$$16fd6daa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-05-05 13:50:06.606 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 9000 (http)
2020-05-05 13:50:06.628 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-05-05 13:50:06.633 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.33]
2020-05-05 13:50:06.766 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-05-05 13:50:06.766 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4093 ms
2020-05-05 13:50:07.736 INFO 1 --- [ main] org.mongodb.driver.cluster : Cluster created with settings {hosts=[${db_host}:27017], mode=MULTIPLE, requiredClusterType=REPLICA_SET, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500, requiredReplicaSetName='rs0'}
2020-05-05 13:50:07.744 INFO 1 --- [ main] org.mongodb.driver.cluster : Adding discovered server ${db_host}:27017 to client view of cluster
2020-05-05 13:50:07.848 INFO 1 --- [{db_host}:27017] org.mongodb.driver.cluster : Exception in monitor thread while connecting to server ${db_host}:27017
com.mongodb.MongoSocketException: ${db_host}: Name or service not known
at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:211) ~[mongodb-driver-core-3.11.2.jar!/:na]
at com.mongodb.internal.connection.SocketStream.initializeSocket(SocketStream.java:75) ~[mongodb-driver-core-3.11.2.jar!/:na]
at com.mongodb.internal.connection.SocketStream.open(SocketStream.java:65) ~[mongodb-driver-core-3.11.2.jar!/:na]
at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:128) ~[mongodb-driver-core-3.11.2.jar!/:na]
at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar!/:na]
at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: java.net.UnknownHostException: ${db_host}: Name or service not known
at java.base/java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) ~[na:na]
at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(Unknown Source) ~[na:na]
at java.base/java.net.InetAddress.getAddressesFromNameService(Unknown Source) ~[na:na]
at java.base/java.net.InetAddress$NameServiceAddresses.get(Unknown Source) ~[na:na]
at java.base/java.net.InetAddress.getAllByName0(Unknown Source) ~[na:na]
at java.base/java.net.InetAddress.getAllByName(Unknown Source) ~[na:na]
at java.base/java.net.InetAddress.getAllByName(Unknown Source) ~[na:na]
at com.mongodb.ServerAddress.getSocketAddresses(ServerAddress.java:203) ~[mongodb-driver-core-3.11.2.jar!/:na]
... 5 common frames omitted
Вот код yaml. локально работает, но на кубернетах, к сожалению, нет
debug: false
server.port: 9000
logging:
level:
root: INFO
org.springframework.web: INFO
org.springframework.boot.autoconfigure: INFO
spring:
devtools.livereload.enabled: false
boot:
admin:
client:
enabled: true
instance:
name: "xxxxxx-xxxxxx"
datasource:
continue-on-error: true
data:
mongodb:
database: xxxxxxxxxx-xxxxxx
uri: "mongodb://xxxxxxxx:xxxxxx@xxxxxxxxxxxxxxxxxxx.docdb.amazonaws.com:27017/xxxxxx-xxxxxxx?replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false"
app:
scheduler:
threadPoolSize: 0
async:
threadPoolSize: 0