首页 > 解决方案 > 无法通过 kubernetes 在 hazelcast 中创建集群

问题描述

我正在尝试在 kubernetes 上使用 hazelcast。为此,docker 安装在 windows 上,并且 kubernetes 环境是在 docker 上模拟的。这是配置文件

hazelcast.xml

<?xml version="1.0" encoding="UTF-8"?>
<hazelcast
    xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.7.xsd"
    xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">


    <properties>
        <property name="hazelcast.discovery.enabled">true</property>
    </properties>


    <network>
        <join>
            <multicast enabled="false" />
            <tcp-ip enabled="false"/>
                
            <discovery-strategies>
                <discovery-strategy enabled="true"
                    class="com.hazelcast.kubernetes.HazelcastKubernetesDiscoveryStrategy">
                    <!-- 
                <properties>
                    
                    <property name="service-dns">cobrapp.default.endpoints.cluster.local</property>
                    <property name="service-dns-timeout">10</property>
                  </properties>
                  -->
                </discovery-strategy>
              </discovery-strategies>
        </join>
    </network>
</hazelcast>

问题是它无法在模拟环境中创建集群。根据我的部署文件,它应该创建三个集群。这是部署配置文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
  labels:
    app: test
spec:
  replicas: 3
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        imagePullPolicy: Never
        image: testapp:latest
        ports:
        - containerPort: 5701
        - containerPort: 8085

---
apiVersion: v1
kind: Service
metadata:
  name: test-service
spec:
  selector:
    app: test
  type: LoadBalancer
  ports:
    - name: hazelcast
      port: 5701
    - name: test
      protocol: TCP
      port: 8085
      targetPort: 8085

执行部署文件时的输出:

Members [1] {
        Member [10.1.0.124]:5701 this
}

然而,预期的输出是,根据部署文件,它应该包含三个集群。如果有人可以帮忙?

标签: kuberneteshazelcast

解决方案


Hazelcast 的默认多播发现不适用于开箱即用的 Kubernetes。你需要一个额外的插件。有两种选择,Kubernetes API 和 DNS 查找。

请查看相关文档以获取更多信息。


推荐阅读