虽然有人会认为这是一个非常基本的用例,但对于在裸机服务器上运行自己的 kubernetes 集群的人来说,情况并非如此。(您在 VPS 上的方式)。
将应用程序公开给“世界”的推荐方法是使用kubernetes 服务,请参阅这篇关于公开服务的文档。您定义一个 kubernetes 服务,类型为NodePort或Loadbalancer *。
这是一个死的简单服务的样子(提示:它是默认类型NodePort
):
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 9000
targetPort: 9376
这将name: my-service
在您的 VPS 集群中的所有节点上的端口上公开带有标签的服务(在端口 9000 上运行)9376
。
假设您的节点有一个公共 IP(根据您的问题,我认为他们有),您可以安全地执行curl localhost:9376
.
因为这通常不是向用户公开的理想 UX/UI,所以人们使用类型的服务Loadbalancer
。此服务类型为您的每个服务提供唯一 IP,而不是端口。
这些服务是云托管集群上的一等公民,例如 Google 的 GKE,但如果您运行自己的 Kubernetes 集群(使用 say 进行设置kubeadm
),那么您需要部署您的 Loadbalancer 服务提供程序。我使用了出色的MetalLB,一旦设置它就可以完美运行,但你需要自己设置它。如果您还想为您的服务提供 dns 名称,您还应该查看ExternalDNS。
*这里需要注意的是,ExternalIP
如果您可以以某种方式使该 IP 可路由,您也可以使用类型的服务,但除非网络在您的控制范围内,否则这通常不是可行的方法,我建议您改用 LB 提供商.