【发布时间】:2020-01-12 12:09:18
【问题描述】:
我正在使用 Docker for Windows (docker-desktop),它附带一个小型单节点 kubernetes 实例。我有一个场景,我的 pod 需要与运行在同一 localhost(windwos 10 机器)上但在 k8s 集群之外的一些外部服务进行通信。
我知道我可以使用集群内的kubernetes.docker.internal 来联系我的node/localhost。但不幸的是,Pod 在图像中有一些我不想更改的默认连接字符串 - 假设 Pod 默认尝试连接到 dns 字符串 - “my-server”。因此,在我的场景中,我想定义一个名为“my-server”的 K8s 服务,该服务具有对 kubernetes.docker.internal 的端点引用,以便 kube-proxy 将其正确路由到我的本地主机,即我的 windows 10 机器。
这有可能吗?我已经检查了this 解决方案,但它谈到了在其他节点或云上运行的外部服务。我也在考虑将本地计算机主机名作为外部名称,但这在我的用例的 dns 解析中并不完全可靠。所以我真的很想使用kubernetes.docker.internal 作为服务端点。有什么想法吗?
【问题讨论】:
-
最好在代码中使服务器主机名可配置,而不是在 Kubernetes 层尝试破解它。
-
嗨@DavidMaze,感谢您的回复,是的,这就是我要向我们的团队提出的建议。但是此时我们正在使用已经以这种方式构建的 docker 映像,我现在不想更改它。因此,我问了这个问题,以重用“我的服务器”作为服务别名,用于在主机上本地运行的实际服务。这是否意味着我们不能定义一个可以指向“kubernetes.docker.internal”作为后端的服务?
标签: docker kubernetes docker-for-windows kubernetes-service kube-proxy