【发布时间】:2021-04-12 15:05:42
【问题描述】:
我正在尝试在 kubernetes 中运行 nginx 转发代理,但我遇到了一些问题。
我的配置:
- nginx 配置为带有 http 连接模块的转发代理,在 docker 上运行:Dockerfile - 监听 8888
- K8S with istio 1.4 Deployment, service, gateway and virtual service configuration,主机暴露于 36088
- 用于测试的 Firefox
我的步骤:
-
对于本地测试,我将Firefox 中的连接设置配置为指向在
localhost:8888上在Docker 中运行的nginx 实例。使用此配置,代理按预期运行,根据nginx.conf拒绝和允许流量。 -
为了在 K8S 中测试我的 pod,我可以运行
kubectl port-forward name-of-my-pod 8888:8080并将 Firefox 配置为使用在localhost:8080上转发的代理。根据第 1 点,代理按预期工作,我可以在日志中看到访问我的 pod 的流量。 -
最后,为了测试我的 istio/AKS 配置,我可以使用 Web 浏览器点击
https://proxy.mydomain.net:36088(在网关中定义)。 url 响应很好,我可以看到 pod 输出了一些日志。
但遗憾的是,当我将 Firefox 配置为使用 proxy.mydomain.net:36088 时,我收到了 connection timeout,我可以看到流量实际上并没有到达我的 pod,而且我没有收到任何日志。
换句话说,当我将其用作代理时,代理似乎无法正常工作,但当我访问其 URL 时,它响应正常。
基于流量似乎没有到达我的 pod 的事实,我想我需要在 istio/aks 中配置其他东西以确保我的服务/pod 作为代理工作,但我不知道如果我的猜测是正确的。我有什么明显的遗漏吗?
【问题讨论】:
-
你好。您是否尝试过使用
LoadBalancer类型的服务(没有Istio)直接公开您的代理?你有没有设法让它以这种方式工作?它可以揭示实际问题所在,具体取决于它是否有效。
标签: docker nginx kubernetes proxy istio