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 的情况)并且不使用外部服务名称及其位置,以便您可以修改服务定义并指向另一个需要时提供服务。
我创建了一个 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 的情况)并且不使用外部服务名称及其位置,以便您可以修改服务定义并指向另一个需要时提供服务。