hazelcast-kubernetes 无法启动嵌入式服务器

hazelcast-kubernetes Unable to start Embedded server

我正在尝试在 kubernetes 上的 spring 引导应用程序中启动一个简单的嵌入式 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] Failure in KubernetesClient

190.168.1.194是POD的IP地址

我将下面的环境添加到部署 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}

您的 Kubernetes 集群本身似乎有问题。

  1. 首先您尝试使用 Hazelcast Kubernetes 发现策略 Kubernetes API,它对 Kubernetes master 进行 REST 调用。 Kubernetes master 应该始终可以通过主机名 kubernetes.default.svc 从您的 POD 访问。在你的情况下,它没有找到。

  2. 然后,您尝试使用 Hazelcast Kubernetes 发现策略 DNS Lookup,它使用服务 DNS 来解析 Hazelcast 成员。在您的情况下,正如@Mesut 所提到的,它没有正确解析服务的 DNS。