我目前在 Docker 容器中运行 Envoy,但是在部署到运行 Ubuntu 20.10 的服务器时,我无法访问 Envoy 管理服务器。
当我在运行 Windows 11 的个人计算机上本地运行容器时,我能够毫无问题地访问它。
这是我的特使配置:
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address:
address: 0.0.0.0
port_value: 9901
我的 Dockerfile:FROM envoyproxy/envoy:v1.20-latest
COPY ./envoy.yaml /etc/envoy/envoy.yaml
CMD /usr/local/bin/envoy -c /etc/envoy/envoy.yaml -l debug
以及我如何运行 Docker 容器:sudo docker build -t envoy .
sudo docker run -d -p 9000:9000 -p 9901:9901 envoy
运行容器后,我能够验证 Docker 能够绑定(bind)到端口,如下图所示。我试图通过我的浏览器访问管理门户,尝试访问
123.123.123.123:9901
(其中 123.123.123.123
是一个示例公共(public) IP)。我在端口 80
上提供了一些服务我可以使用服务器的公共(public) IP 访问它,所以看起来问题出在我的 Envoy/Docker 配置上。我究竟做错了什么?最佳答案
原来这是我的疏忽。我使用谷歌计算引擎作为我的服务器虚拟机,当我最初查看防火墙设置时,我看到了一系列已启用的端口,但没有意识到它们只能由虚拟机本身通过 localhost 启用和访问.我以为端口是公开的,但我错了。我意识到情况确实如此,因为我能够 curl
管理员 URL 通过 curl localhost:9901
,但无法访问 server-ip:9901
.暴露端口后9901
在我的 VM 的 GCP 防火墙设置上公开,它工作正常,所以这不是服务器配置问题,而是防火墙配置问题。
关于docker - 无法通过服务器 IP 访问 Envoy Admin 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70666746/