如何访问本地集群中的Kubernetes吊舱?

如何访问本地集群中的Kubernetes吊舱?,kubernetes,microservices,kube-proxy,Kubernetes,Microservices,Kube Proxy,我已经建立了一个实验性的本地Kubernetes集群,其中有一个主节点和三个从节点。我已经为侦听端口10001的自定义服务创建了一个部署。目标是使用稳定的IP/主机名访问示例性端点/hello,例如http://:10001/hello 部署部署后,POD将被创建,并且可以通过其集群IP访问 我知道云提供商的解决方案是为部署创建负载平衡器服务,这样您就可以公开服务了。但是,本地集群显然不支持这一点。为此目的设置似乎有些过分。不是吗 看起来更像是kube-proxy是一条路要走。但是,当我在主节点

我已经建立了一个实验性的本地Kubernetes集群,其中有一个主节点和三个从节点。我已经为侦听端口10001的自定义服务创建了一个部署。目标是使用稳定的IP/主机名访问示例性端点
/hello
,例如
http://:10001/hello

部署部署后,POD将被创建,并且可以通过其集群IP访问

我知道云提供商的解决方案是为部署创建负载平衡器服务,这样您就可以公开服务了。但是,本地集群显然不支持这一点。为此目的设置似乎有些过分。不是吗

看起来更像是
kube-proxy
是一条路要走。但是,当我在主节点上运行
kube proxy--port
时,我可以访问
http://:/api/…
,但不能访问实际的pod

有许多相关问题(例如),但没有(被接受的)答案。上的Kubernetes也是相当稀疏的,所以我甚至不确定概念上什么是正确的方法


因此,我正在寻找一个直接的解决方案和/或一个好的教程。这似乎是一个非常典型的用例,缺乏清晰的路径。

入口可能是最简单的赌注

您可以非常简单地安排Nginx入口控制器的创建;这是给你的。请注意,此设置使用守护程序集,因此每个节点上都有一个入口控制器。它还使用hostPort配置选项,因此IngressController将侦听节点的IP,而不是不稳定的虚拟服务IP

现在,您只需要将HTTP通信量发送到任何一个节点。您可能需要为每个服务定义一个外部DNS条目,每个条目都指向节点的IP(即多个A/AAAA记录)。入口将使用HTTP主机名消除歧义并在集群内路由


如果您需要公开非HTTP服务,这会涉及更多内容,但您可以在nginx ingress文档中查找更多示例(例如)。

如果ingress控制器在您的场景中使用过度,您可能需要尝试使用类型为
NodePort
的服务。您可以指定端口,或者让系统自动为您分配一个端口

NodePort
服务在集群中所有节点的同一端口公开您的服务。如果对节点具有网络访问权限,则可以在配置中指定的节点IP和端口访问服务


显然,这并没有实现节点之间的负载平衡。如果您想模拟真正的负载平衡器的功能,可以添加一个外部服务来帮助您完成这项工作。一个简单的选择是运行这样的东西。

已经有了用于负载平衡的外部HAProxy,这似乎是我的场景中最平滑的解决方案。但是,即使添加了iptables规则,节点仍然被外部请求阻止(尽管我可以从机器内部通过其外部IP访问它们):
iptables-A INPUT-p tcp--dport-j ACCEPT
有什么线索吗?