Unable to create clusters in Hazelcast over the Kubernetes

9/4/2021

I am trying to use Hazelcast on Kubernetes. For that the Docker is installed on Windows and Kubernetes environment is simulate on the Docker. Here is the config file 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>

The problem is that it is unable to create cluster on the simulated environment. According to my deploment file it should create three clusters. Here is the deployment config file

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

The output upon executing the deployment file

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

However the expected output is, it should have three clusters in it as per the deployment file. If anybody can help?

-- nee nee
hazelcast
kubernetes

1 Answer

9/4/2021

Hazelcast's default multicast discovery doesn't work on Kubernetes out-of-the-box. You need an additional plugin for that. Two alternatives are available, Kubernetes API and DNS lookup.

Please check the relevant documentation for more information.

-- Nicolas
Source: StackOverflow