Hi! We are trying to deploy an ignite cluster(s) into kubernetes and found some issues.
Sample deployed topology into kubernetes (we need each ignite server cluster has different discovery port) Ignite Server(s) cluster to store main data (discoPort 49500) \ Client App with 2 ignite clients (discoPort 49500, discoPort 48500) to talk with both clusters / Ignite Server(s) cluster to store cached data (discoPort 48500) Apparently, client nodes are unable to discover server nodes using kubernetes IpFinder whether non default discovery port, for example 49500, is used on server side ignite configuration. TcpDiscoverySpi local port configuration is ignored on client mode, so port 47500 is always used to connect to ignite servers (we don't want to use forceServerMode=true as it is a deprecated feature and may have negative performance impact) In general seems that any IpFinder implementation that has this behaviour (not provides server port when registered addresses were returned) will have same issue. Fix suggestion, modify org.apache.ignite.spi.discovery.tcp.ClientImpl spiStart, apparently this change has no collateral effects: Original @Override public void spiStart(@Nullable String igniteInstanceName) throws IgniteSpiException { spi.initLocalNode( 0, true); Fix @Override public void spiStart(@Nullable String igniteInstanceName) throws IgniteSpiException { // FIX ignored TcpDiscoverySpi local port configuration on client mode, takes configured one spi.initLocalNode( spi.locPort, true); How to reproduce issue: 1. Deploy a server node with tcp discovery kubernetes IpFinder and non default discovery port 49500 into kubernetes 2. Deploy client nodes with tcp discovery kubernetes IpFinder and non default discovery port 49500 into kubernetes 3. You will see on client nodes logs that will try to connect to servers on port 47500, instead of configured 49500. Ignite configuration for both server and client node(s) [...] <property name="discoverySpi"> <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> <property name="localPort" value="49500" /> <property name="localPortRange" value="1" /> <property name="ipFinder"> <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.kubernetes.TcpDiscoveryKubernetesIpFinder"> <property name="shared" value="true" /> <property name="namespace" value="myNamespace"/> <property name="serviceName" value="server-node"/> <property name="masterUrl" value="https://kubernetes.default.svc.cluster.local:443"/> <property name="accountToken" value="/var/run/secrets/kubernetes.io/serviceaccount/token"/> </bean> </property> </bean> </property> [...] Regards! Manu. -- Sent from: http://apache-ignite-developers.2346864.n4.nabble.com/