【发布时间】:2020-03-10 18:05:36
【问题描述】:
我正在尝试在 kubernetes 上的 Spring Boot 应用程序中启动一个简单的嵌入式 hazelcast 服务器。 我正在使用 hazelcast-kubernetes 插件并遵循文档here。 我尝试了 LoadBalancer 和 NodePort 服务类型。
我还尝试使用this example(使用相同的 docker 映像)部署示例应用程序,并尝试了 LoadBalancer 和 NodePort 服务类型。
在这两种情况下,我在重试 10 次以连接到 Kubernetes Master 后都会收到以下错误。 其中 a.b.c.d 是 Kubernetes 主节点的 IP 地址。
2020-03-09 18:20:57.322 INFO 1 --- [ main] c.h.c.LifecycleService : [a.b.c.d]:5701 [dev] [3.12] [a.b.c.d]:5701 is STARTING
2020-03-09 18:20:57.820 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [1] retrying in 1 seconds...
2020-03-09 18:20:59.339 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [2] retrying in 2 seconds...
2020-03-09 18:21:01.713 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [3] retrying in 3 seconds...
2020-03-09 18:21:05.113 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [4] retrying in 5 seconds...
2020-03-09 18:21:10.198 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [5] retrying in 7 seconds...
2020-03-09 18:21:17.807 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [6] retrying in 11 seconds...
2020-03-09 18:21:49.216 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [7] retrying in 17 seconds...
2020-03-09 18:22:06.319 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [8] retrying in 25 seconds...
2020-03-09 18:22:31.963 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [9] retrying in 38 seconds...
2020-03-09 18:23:15.423 WARN 1 --- [ main] c.h.k.RetryUtils : Couldn't connect to the Kubernetes master, [10] retrying in 57 seconds...
2020-03-09 18:24:23.099 ERROR 1 --- [ main] c.h.i.c.i.DiscoveryJoiner : [a.b.c.d]:5701 [dev] [3.12] Failure in KubernetesClient
com.hazelcast.kubernetes.KubernetesClientException: Failure in KubernetesClient
at com.hazelcast.kubernetes.DefaultKubernetesClient.callGet(DefaultKubernetesClient.java:109) ~[hazelcast-kubernetes-1.3.1.jar!/:?]
at com.hazelcast.kubernetes.DefaultKubernetesClient.endpointsByName(DefaultKubernetesClient.java:88) ~[hazelcast-kubernetes-1.3.1.jar!/:?]
.
.
.
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [main.jar:?]
Caused by: java.net.UnknownHostException: kubernetes.default.svc
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[?:1.8.0_111]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_111]
在第二种情况下,我使用 leszko 的 sample,它尝试连接的 ip 地址是 POD 的 IP。
[190.168.1.194]:5701 [dev] [3.11] KubernetesClient 失败
190.168.1.194 是 POD 的 IP 地址
我将以下 env 添加到部署 yaml 中,但看起来它并没有覆盖这个变量。
env:
- name: service-name
value: "hazelcast-embedded"
Kubernetes Discovery properties: { service-dns: null, service-dns-timeout: 5, service-name: null, service-port: 0, service-label: null, service-label-value: true, namespace: default, resolve-not-ready-addresses: false, kubernetes-master: https://kubernetes.default.svc}
【问题讨论】:
-
您可以尝试使用 com.hazelcast:hazelcast:4.0 和 com.hazelcast:hazelcast-kubernetes:2.0.1 吗?您只需启用 Kubernetes 发现并将 DNS 设置为 `service-dns: yourservicename.default.svc.cluster.local'
-
感谢您的评论。我只是尝试你的建议。我收到此错误
Mar 10, 2020 7:54:12 PM com.hazelcast.spi.discovery.integration.DiscoveryService WARNING: [10.224.95.88]:5701 [dev] [4.0] DNS lookup for serviceDns 'haz-server.default.svc.cluster.local' failed javax.naming.CommunicationException: DNS error [Root exception is java.net.SocketTimeoutException: Receive timed out]; remaining name 'haz-server.default.svc.cluster.local' at com.sun.jndi.dns.DnsClient.query(DnsClient.java:309) at com.sun.jndi.dns.Resolver.query(Resolver.java:81) -
您的 kubernetes 集群中是否存在与 DNS 相关的问题? stackoverflow.com/questions/21521309/…
标签: spring-boot kubernetes hazelcast