代码之家  ›  专栏  ›  技术社区  ›  Trace

Kubernetes ExternalName,公开10.0.2.2

  •  0
  • Trace  · 技术社区  · 7 年前

    我创建了一个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 DB实例。

    然而,当登录到pod并尝试ping 10.0.2.2时,我会经历100%的包丢失。

    这里有我遗漏的东西吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alexz    7 年前

    因此,如果您试图将MongoDB公开为一个外部服务,并且基本上将MongoSVC映射到10.0.2.2,那么

    第一个问题是,根据Kubernetes文档,ExtnalName必须是实际服务的完全限定域名: ExternalName接受IPv4地址字符串,但接受由数字组成的DNS名称,而不是IP地址。CoreDNS或ingress nginx不会解析与IPv4地址相似的外部名称。。

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

    推荐文章