【发布时间】:2019-12-06 13:57:12
【问题描述】:
我正在尝试通过 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 是主机接口的别名(找到此信息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
...
知道如何让它正常工作吗?
【问题讨论】:
标签: macos kubernetes dns minikube kube-dns