<p>My environment is that the ignite client is on kubernetes and the ignite server is running on a normal server.
In such an environment, TCP connections are not allowed from the server to the client.
For this reason, CommunicationSpi(server -> client) cannot be allowed.
What I'm curious about is what issues can occur in situations where Communication Spi is not available?
In this environment, Is there a way to make a CommunicationSpi(server -> client) connection?</p>

Lee Changmyung
<p>In Kubernetes, the <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer">service</a>  is used to communicate with pods.</p>
<p>The default service type in Kubernetes is ClusterIP</p>
<p>ClusterIP is an <strong>internal</strong> IP address reachable from inside of the Kubernetes cluster only. The ClusterIP enables the applications running within the pods to access the service.</p>
<p>To expose the pods outside the kubernetes cluster, you will need  k8s service of <a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport" rel="nofollow noreferrer"><code>NodePort</code></a> or <a href="https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer" rel="nofollow noreferrer"><code>LoadBalancer</code></a> type.</p>
<ul>
<li><p>NodePort: Exposes the Service on each Node’s IP at a static port (the NodePort). A <code>ClusterIP</code> Service, to which the <code>NodePort</code> Service routes, is automatically created. You’ll be able to contact the NodePort Service, from outside the cluster, by requesting <code>&lt;NodeIP&gt;:&lt;NodePort&gt;</code> .</p>
<p>Please note that it is needed to have <strong>external</strong> IP address assigned to one of the nodes in cluster and a Firewall rule that allows ingress traffic to that port. As a result kubeproxy on Kubernetes node (the external IP address is attached to) will proxy that port to the pods selected by the service.</p>
</li>
<li><p>LoadBalancer: Exposes the Service externally using a cloud provider’s load balancer. <code>NodePort</code> and <code>ClusterIP</code> Services, to which the external load balancer routes, are automatically created.</p>
</li>
</ul>
<p>Alternatively it is possible to use <a href="https://kubernetes.io/docs/concepts/services-networking/ingress/" rel="nofollow noreferrer"><code>Ingress</code></a></p>
<p>There is a very good article on <a href="http://alesnosek.com/blog/2017/02/14/accessing-kubernetes-pods-from-outside-of-the-cluster/" rel="nofollow noreferrer">acessing Kubernetes Pods from Outside of cluster</a> .</p>
<p>Hope that helps.</p>
<p>Edited on 09-Dec-2019</p>
<p>upon your comment I recall that it's possible to use hostNetwork and hostPort methods.</p>
<h3>hostNetwork</h3>
<p>The <code>hostNetwork</code> setting applies to the Kubernetes pods. When a pod is configured with <code>hostNetwork: true</code>, the applications running in such a pod can directly see the network interfaces of the host machine where the pod was started. An application that is configured to listen on all network interfaces will in turn be accessible on all network interfaces of the host machine.
Example:</p>
<pre><code>apiVersion: v1 
kind: Pod 
metadata: 
  name: nginx 
spec: 
  hostNetwork: true 
  containers: 
    - name: nginx 
      image: nginx
</code></pre>
<p>You can check that the application is running with: <code>curl -v http://kubenode01.example.com</code></p>
<p>Note that every time the pod is restarted Kubernetes can reschedule the pod onto a different node and so the application will change its IP address. Besides that two applications requiring the same port cannot run on the same node. This can lead to port conflicts when the number of applications running on the cluster grows.</p>
<p>What is the host networking good for? For cases where a direct access to the host networking is required.</p>
<h3>hostPort</h3>
<p>The  <code>hostPort</code>  setting applies to the Kubernetes containers. The container port will be exposed to the external network at  <em>:</em>, where the  <em>hostIP</em>  is the IP address of the Kubernetes node where the container is running and the  <em>hostPort</em>  is the port requested by the user.</p>
<pre><code>apiVersion: v1 
kind: Pod 
metadata: 
  name: nginx 
spec: 
  containers: 
    - name: nginx 
      image: nginx 
      ports: 
        - containerPort: 8086 
          hostPort: 443
</code></pre>
<p>The hostPort feature allows to expose a single container port on the host IP. Using the hostPort to expose an application to the outside of the Kubernetes cluster has the same drawbacks as the hostNetwork approach discussed in the previous section. The host IP can change when the container is restarted, two containers using the same hostPort cannot be scheduled on the same node.</p>
<p>What is the hostPort used for? For example, the nginx based <a href="https://github.com/kubernetes/ingress/tree/master/controllers/nginx" rel="nofollow noreferrer">Ingress controller</a> is deployed as a set of containers running on top of Kubernetes. These containers are configured to use hostPorts 80 and 443 to allow the inbound traffic on these ports from the outside of the Kubernetes cluster.</p>
