Kubernetes

时间:2017-04-01 00:52:22

标签: mongodb cluster-computing kubernetes kubectl minikube

我有一个用无头服务公开的MongoDB实例集群

k get svc
NAME         CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
hello        10.0.0.90    <nodes>       8080:32361/TCP   7h
kubernetes   10.0.0.1     <none>        443/TCP          7h
mongo        None         <none>        27017/TCP        7h

所以有多个MongoDB端点:

k get ep
NAME         ENDPOINTS                           AGE
hello        172.17.0.4:8080                     7h
kubernetes   10.0.2.15:8443                      7h
mongo        172.17.0.5:27017,172.17.0.6:27017   7h

我的其他服务(称为hello)如何找到1个IP或1个DNS条目进行通信?如何才能有效地发现IP列表呢?

对于Mongo,是否可以自动查找主副本(或可写/可读副本)?

1 个答案:

答案 0 :(得分:0)

应通过DNS名称访问服务。在您的情况下,如果您指定了命名空间,则为“mongo”或“mongo.my-namespace”。 您还应该检查部署文件中是否设置了“spec.clusterIP = None”。如果是这种情况,您告诉kubernetes您不想使用标准的服务发现方式,并且会提供您自己的服务。

有多种标准方法可以公开服务:

  1. 您可以使用“spec.clusterIP”字段为服务添加固定的内部群集IP。

  2. 为您的服务添加“NodePort”类型。这允许您定义每个节点上可用的端口。因此,当您在服务前面有一个负载均衡器时,您可以转发到每个节点上的此端口。

  3. 可以在k8s docs

    找到更多信息