<p>I'm currently working on making a game where the servers need to be replicated on pods inside the Minikube cluster (I'm using Minikube since it's just a school project). However, I cannot seem to figure out how to make these game servers accessible from other networks. I have tried making a NodePort service, that points to the deployment of my server image, and when using the Minikube cluster IP + my service's port I can connect fine.</p>

<p>What would be the best approach to solve this issue?</p>

Neebz
<p>By default, the Pod is only accessible by its internal IP address within the Kubernetes cluster. To make the  your container accessible from outside the Kubernetes virtual network, you have to expose the Pod as a Kubernetes  <a href="https://kubernetes.io/docs/concepts/services-networking/service/" rel="nofollow noreferrer"><em>Service</em></a> in this example as a type <a href="https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-service" rel="nofollow noreferrer">LoadBalancer</a>.</p>

<p>On cloud providers that support load balancers, an external IP address would be provisioned to access the Service. On Minikube, the <code>LoadBalancer</code> type makes the Service accessible through the <code>minikube service</code> command.</p>

<p><strong>Minikube</strong> is great for local setups but not for real clusters. It spins up only a one-node cluster for development and testing.  It is useless if you want to use multiple servers environment.</p>

<p>Taking under consideration that you want to play fast with scalability across the nodes it is useful to create Kubernetes cluster - using <a href="https://github.com/kubernetes-sigs/kubespray" rel="nofollow noreferrer">Kubespray</a> or Kubeadm.
If you want to run an actual local Kubernetes, use a local VM and then create K8s cluster using these tools for automated deployment.</p>

<p><strong>Kubeadm</strong></p>

<p>The  <code>kubeadm</code>  tool is good if you are new in cloud technologies -run k8s cluster  for the first time. You can install and use  <code>kubeadm</code>  on various machines: your laptop, a set of cloud servers and more. Whether you’re deploying into the cloud or on-premises, you can integrate  <code>kubeadm</code>  into provisioning systems such as Ansible or Terraform.
Kubeadm provides domain Knowledge of Kubernetes clusters' life cycle management, including self-hosted layouts, dynamic discovery services and so on.</p>

<p><strong>Kubespray</strong></p>

<p>Kubespray supports deployments on AWS, Google Compute Engine, Microsoft Azure, OpenStack, and bare metal. It enables deployment of Kubernetes highly available clusters. It supports a  <a href="https://github.com/kubernetes-incubator/kubespray/#supported-linux-distributions" rel="nofollow noreferrer">variety of Linux distributions</a> and CI. Kubespray supports <code>kubeadm</code>.</p>
