【发布时间】:2021-10-11 20:32:31
【问题描述】:
我已经为 ingress-nginx 配置了特定于主机的入口资源,那么如何从我的桌面浏览器以及集群内的其他 pod 中访问http://appX.my.example.com,这也需要访问http://appX.my.example.com?
我在 Windows 上的 docker 容器中使用 kind 在本地运行 kubernetes。我猜同样的问题也适用于 minicube、k3s 或其他任何东西。我在 Windows 上使用 Docker for-win 和 WSL2 运行它(这可能无关紧要)。
我找到的一个解决方案是查看 IP 地址 host.docker.internal 解析为什么(当前为 192.168.1.100),然后在 C:\Windows\System32\drivers\etc\hosts 中创建这样的条目:
192.168.1.100 appx.my.example.com
192.168.1.100 appy.my.example.com
现在http://appX.my.example.com 在桌面浏览器和appY 中都能正确解析。一切正常。这有两个问题:
- 例如重启后、启动 VPN 后以及其他黑魔法原因,
host.docker.internal“有时”会更改 IP 地址 - 无法在
C:\Windows\System32\drivers\etc\hosts(或linux/etc/hosts)中创建*.my.example.com条目。
这导致需要维护容易出错且烦人的hosts 文件。
有没有更好的方法?如果我们想在入口规则中使用命名主机,那么在 localhost 上使用 kubernetes 进行开发的最简单方法是什么?
【问题讨论】:
-
您使用的是哪个版本的 Kubernetes?您是什么意思 host.docker.internal “有时”更改 IP 地址?你看到this page了吗?
-
kind 当前安装的是 1.21 版。我认为
host.docker.internal在 docker 运行时是不变的(请记住:“kind”代表“Docker 中的 Kubernetes”)。但是,如果我在启用/禁用 VPN 或重新启动后重新启动 docker(以及因此 kind/kubernetes),host.docker.internal很容易获得新的 IP 地址。
标签: kubernetes dns localhost kubernetes-ingress