Kubernetes外部名称,公开10.0.2.2

时间:2018-12-23 15:22:27

标签: kubernetes minikube

我创建了如下的mongo服务:

apiVersion: v1
kind: Service
metadata:
  name: mongo-svc
spec:
  type: ExternalName
  externalName: 10.0.2.2
  ports:
  - port: 27017

使用以下命令启动集群时:

minikube start --vm-driver=virtualbox

我希望将Virtualbox回送地址(10.0.2.2)映射到在我的本地主机上运行的本地Mongo数据库实例。

但是,登录到Pod并尝试ping 10.0.2.2时,我遇到了100%的包裹丢失的情况。

我这里缺少什么吗?

1 个答案:

答案 0 :(得分:0)

因此,如果您尝试将MongoDB公开为外部服务,并且基本上将mongo-svc映射到10.0.2.2,则

第一个问题是,根据Kubernetes文档,ExtrnalName必须是实际服务的标准域名: “ ExternalName接受IPv4地址字符串,但作为包含数字的DNS名称,而不是IP地址。类似于IPv4地址的外部名称不会由CoreDNS或ingress-nginx解析。”

第二个问题是外部服务的全部要点是通过创建ExternalName服务来抽象外部服务,以便Pod可以通过mongo-svc.default.svc.cluster.local连接到外部服务(如果您使用默认名称空间中的mongo-svc,这似乎是基于您的YAML的情况),并且不使用外部服务名称及其位置,以便您可以修改服务定义并在需要时指向另一个服务。