问题描述
在使用 Kubernetes 中的 Ingress 时遇到了问题。他在执行 “kubectl get ingress” 命令后,得到了下面的输出:
NAME HOSTS ADDRESS PORTS AGE
main * 192.168.39.190 80 46m
然而,当他尝试在 Chrome 中访问该 IP 地址时,却收到了以下错误信息:
无法访问网站。检查是否存在 name.local 的写入错误DNS_PROBE_FINISHED_NXDOMAIN
用户还在评论中提到,直接发送到 IP 地址的请求不应该触发 DNS 探测,所以问题可能出在用户使用的域名是 name.local
。最近他在使用 Chrome 解析 .local 域名时遇到了困难,这可能与安全 DNS 配置有关。用户建议尝试在 Google Chrome 设置中关闭 “secure dns” 选项。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
用户遇到的问题可能有两个主要原因:
情况1 – 未暴露 DNS
如果你的 DNS 没有被暴露,这可能导致问题。在 Linux 下,你可以按以下步骤解决这个问题:
1. 使用命令 minikube ip
获取 Minikube 的 IP 地址。
2. 使用命令 vim /etc/hosts
编辑 hosts 文件。
3. 在文件中添加刚刚获取的 IP 地址以及你想要暴露的主机名,并保存文件。例如:
# 例如
192.168.39.70 elasticsearch-es-http
你无需重启任何服务,就可以直接生效。你可以添加所有需要的主机名。
情况2 – 在 Minikube 上使用 HTTPS
如果问题是第二种情况,即你的应用程序在使用 Minikube 时重定向到了 HTTPS 地址(由于你是在本地机器上工作,很可能没有安全证书),你需要找到一个方法让应用程序在使用 Minikube 时不使用 HTTPS。
示例脚本
以下是一个简单的 Bash 脚本示例,可以在容器A启动后启动容器B:
#!/bin/bash
# 启动容器A
docker run -d --name container_a your_image_a
# 等待容器A完全启动
while ! docker exec container_a echo "Container A is ready"; do
sleep 1
done
# 启动容器B
docker run -d --name container_b your_image_b
在这个示例中,我们首先使用 docker run
命令启动容器A,并将其命名为 container_a
。然后,使用一个循环来等待容器A完全启动(这里是通过在容器内运行 echo
命令来测试)。一旦容器A就绪,我们再使用 docker run
命令启动容器B,并将其命名为 container_b
。
希望这些解决方案能够帮助你解决问题。如果问题仍然存在或需要进一步的帮助,请随时提问。