具有 public 可用 TCP 连接的 Minikube 上的主机服务?

Host service on Minikube with public available TCP connection?

我目前正在制作一款游戏,其中需要在 Minikube 集群内的 pods 上复制服务器(我正在使用 Minikube,因为它只是一个学校项目)。但是,我似乎无法弄清楚如何让这些游戏服务器可以从其他网络访问。我已经尝试制作一个 NodePort 服务,它指向我的服务器映像的部署,当使用 Minikube 集群 IP + 我的服务端口时,我可以正常连接。

解决此问题的最佳方法是什么?

确实没有什么好方法可以做到这一点。 Minikube 用于本地开发。如果你想 运行 一个真正的本地 Kubernetes,直接启动本地 VM 并使用 kubeadm 和 kubespray 之类的东西。

默认情况下,Pod 只能通过其在 Kubernetes 集群中的内部 IP 地址访问。要使您的容器可以从 Kubernetes 虚拟网络外部访问,您必须将 Pod 公开为 Kubernetes Service in this example as a type LoadBalancer.

在支持负载平衡器的云提供商上,将提供外部 IP 地址以访问服务。在 Minikube 上,LoadBalancer 类型使服务可以通过 minikube service 命令访问。

Minikube 非常适合本地设置,但不适用于真正的集群。它仅启动一个单节点集群用于开发和测试。如果你想使用多服务器环境,它是没有用的。

考虑到您想快速发挥跨节点的可扩展性,创建 Kubernetes 集群非常有用 - 使用 Kubespray 或 Kubeadm。 如果您想 运行 一个实际的本地 Kubernetes,请使用本地 VM,然后使用这些工具创建 K8s 集群以进行自动部署。

Kubeadm

如果您是第一次接触云技术-运行 k8s 集群,kubeadm 工具很好用。您可以在各种机器上安装和使用 kubeadm:您的笔记本电脑、一组云服务器等等。无论您是部署到云端还是本地,您都可以将 kubeadm 集成到配置系统中,例如 Ansible 或 Terraform。 Kubeadm 提供 Kubernetes 集群生命周期管理的领域知识,包括自托管布局、动态发现服务等。

Kubespray

Kubespray 支持在 AWS、Google Compute Engine、Microsoft Azure、OpenStack 和裸机上进行部署。它支持部署 Kubernetes 高可用性集群。它支持 variety of Linux distributions 和 CI。 Kubespray 支持 kubeadm.