Kubernetes 如何发现无头服务终结点

Kubernetes 如何发现无头服务终结点,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,是否有一种方法可以从集群外部发现无头服务的所有端点 最好使用DNS或静态IP连接到端点列表: GET /api/v1/watch/namespaces/{namespace}/endpoints DNS插件正是您想要的。从文档中: 例如,如果在Kubernetes中有一个名为“我的服务”的服务 命名空间“my ns”创建了“my service.my ns”的DNS记录。豆荚 存在于“my ns”命名空间中的 只需查找“我的服务”的名称。存在于其他植物中的豆荚 名称空间必须将名称限定为“my

是否有一种方法可以从集群外部发现无头服务的所有端点

最好使用DNS或静态IP连接到端点列表:

GET /api/v1/watch/namespaces/{namespace}/endpoints

DNS插件正是您想要的。从文档中:

例如,如果在Kubernetes中有一个名为“我的服务”的服务 命名空间“my ns”创建了“my service.my ns”的DNS记录。豆荚 存在于“my ns”命名空间中的 只需查找“我的服务”的名称。存在于其他植物中的豆荚 名称空间必须将名称限定为“my service.my ns”。结果 这些名称查找是群集IP

如果是无头服务:

DNS被配置为为返回该服务器的多个A记录(地址) 服务名称,它直接指向支持服务的POD

但是,此服务仅在群集中可用。但KubeDNS只是另一个豆荚:

kubectl get po --namespace=kube-system
kubectl describe po kube-dns-pod-name --namespace=kube-system
这意味着您可以创建一个具有外部可访问地址的服务来公开此服务。只需使用与kube dns pod标签匹配的选择器


无头服务是一组Pod IP。Pod IP(通常)在群集/云提供商之外不可用


您是否正在尝试为无头服务获取外部IP,或者您是否在同一网络中(例如,在GCE项目中),但不在群集中?

不是最佳的,例如,无法在nginx中使用它。有DNS选项吗?@shaylevi2是否有可能澄清您如何不能在nginx中使用它?nginx需要conf文件中的服务器列表,您也可以使用DNS记录,但您不能使用监视更改URL:\我尝试过,但它对我不起作用,您尝试过了吗,它对您起作用了吗?是的,我正在群集中成功使用DNS插件,但是我还没有测试使用DNS服务的想法。在集群内部它可以工作,但我尝试公开服务并在集群外部使用它,但由于某些原因它不起作用。蒂姆,如果我们在同一个网络中,例如在GCE项目中,这将如何改变情况?提前感谢。我遵循了以下步骤:在GKE/集群内创建MongoDB副本,该副本可以工作,但我们也希望从项目中访问它(在移动应用之前安装了应用的实例)。不过,如果我们不使用IP,而是通过帖子中提到的主机名(如mongo-1.mongo)或总是指向pod的东西引用集群,那就太好了。我是GCE,任何虚拟机都可以访问pod IP。服务IP需要到一个或多个节点的静态路由