gpt4 book ai didi

macos - Mac 上 Minikube 中 ExternalName 的 DNS 解析

转载 作者:行者123 更新时间:2023-12-02 12:15:28 25 4
gpt4 key购买 nike

我正在尝试从我在 virtualbox 中的 minikube 设置连接到我的 mac 上的 docker 中运行的 postgres 容器。但是我遇到了dns解决问题。

我在 docker 上将 postgres 作为容器运行

> docker ps                                                                                                                                                                                                                                                                                   
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a794aca3a6dc postgres "docker-entrypoint.s…" 3 days ago Up 3 days 0.0.0.0:5432->5432/tcp postgres

在我的 Mac/VirtualBox/Minikube 设置上,我创建了一个服务
kind: Service
apiVersion: v1
metadata:
name: postgres-svc
spec:
type: ExternalName
externalName: 10.0.2.2
ports:
- port: 5432
10.0.2.2是主机接口(interface)的别名(找到此信息 here )
> kubectl get service --all-namespaces
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21d
hazelnut postgres-svc ExternalName <none> 10.0.2.2 5432/TCP 27m
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 21d
kube-system kubernetes-dashboard ClusterIP 10.108.181.235 <none> 80/TCP 19d
kube-system tiller-deploy ClusterIP 10.101.218.56 <none> 44134/TCP 20d

(我们的命名空间是 hazelnut ,不要问:-)

在我的部署中,如果我直接连接到 10.0.2.2,它会毫无问题地连接到 postgres,但是如果我尝试解析 kubernetes 服务的主机名,它就不起作用。
所以这不是防火墙或路由问题,纯 dns。

我试过 postgres-svc.hazelnut.cluster.local , postgres-svc , postgres-svc.hazelnut.svc.cluster.local , postgres-svc.hazelnut所有导致 NXDOMAIN
kubernetes.default虽然有效。
> nslookup kubernetes.default
Server: 10.96.0.10
Address: 10.96.0.10#53

Name: kubernetes.default.svc.cluster.local
Address: 10.96.0.1

在这个 post他们提到使用 kube-dns 应该可以解决它,但我正在使用它但无济于事
> kubectl get svc --namespace=kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 21d
...

知道如何让它正常工作吗?

最佳答案

对于ExternalName service type externalName应该是 FQDN,而不是 IP 地址,例如

kind: Service
...
metadata:
name: postgres-svc
spec:
type: ExternalName
externalName: mydb.mytestdomain

主机应该能够解析该 FQDN 的名称。您可以在 /etc/hosts 中添加一条记录。在 Mac 主机上实现:
10.0.0.2    mydb.mytestdomain

实际上,coredns 使用 /etc/resolv.conf 中配置的名称解析器。在 Minikube 虚拟机中。它指向 VirtualBox NAT 网络 (10.0.2.3) 中的名称解析器。反过来,VirtualBox 依赖于查看本地 /etc/hosts 的主机名解析机制。文件。

测试:
macOS 10.14.3,
VBox 6.0.10,
Kubernetes 1.15.0,
minikube 1.2.0,
核心

关于macos - Mac 上 Minikube 中 ExternalName 的 DNS 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com