Kubernetes如何将Pod/Deployment暴露给节点网络

82次阅读
没有评论

问题描述

在使用Kubernetes时,有一个需求是希望将Pod/Deployment分配给左侧PC上可访问的IP地址。用户可以根据需要设置路由等,因为这个设置仅用于练习。用户的目标是让每个Pod能够在任何端口上暴露任何服务(HTTP(s)/FTP/…)。例如::22, :22用于SSH。
用户首先考虑为每个Pod创建ClusterIP,并使用ingress为这些服务分配IP地址,但后来发现这不是ingress的预期用途。
用户接下来尝试了LoadBalancer类型的服务,但目前的印象是它们似乎只能与AWS/Google Cloud/其他提供商集成,并且总是将这些选定的服务暴露给互联网,这不是用户的意图。用户只希望它们可以从内部网络访问。
用户希望得到一些建议。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

首先,需要澄清一下,ClusterIP只能在集群内部访问,这不是解决用户问题的正确选择。而LoadBalancer类型的服务取决于与网络的集成(真实或虚拟),以生成正确的资源并分配IP地址。
在这种情况下,一种简单的打开服务端口的方法是使用NodePort类型的服务,它直接在机器上分配一个端口,就像在Linux机器上打开端口一样,但不同之处在于整个过程由Kubernetes管理。在这种情况下,您只需要关心路由器上管理的网络之间的路由。
您可以在官方Kubernetes文档中了解有关NodePort的更多信息。
NodePort官方文档

方案2

根据最后的评论,对于用户的用例,使用NodePort应该可以工作,并且可能是使用一些DNS管理工具(如external-dns)的好选择,以免担心如何设置正确的IP。
external-dns GitHub链接

正文完