Kubernetes ExternalName,暴露 10.0.2.2

Kubernetes ExternalName, exposing 10.0.2.2

我创建了一个 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% 的包丢失。

我在这里遗漏了什么吗?

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

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

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