我理解问题的流程如下:
- 当请求一个kubernetes服务(例如通过http)时,我使用端口80。
- 请求被转发到一个pod(仍然是端口80)
- 端口将请求转发到暴露端口80的(docker)容器中
- 容器处理请求
然而我的容器暴露了不同的端口,比如说3000。 如何在第2或第3步中进行端口映射,比如80:3000?
kubernetes文档中有一些令人困惑的选项,比如targetport
和hostport
,它们对我没有帮助。kubectl port-forward
似乎只能将我本地(开发)机器的端口转发到特定的pod以进行调试。
这些是我在谷歌云中设置服务所使用的命令:
kubectl run test-app --image=eu.gcr.io/myproject/my_app --port=80
kubectl expose deployment test-app --type="LoadBalancer"
targetPort
为3001
,但容器暴露的端口是3000
,可能存在一些拼写错误。请修改服务的targetPort
为3000
,以便正确地将流量路由到容器。 - Leo Y