我有一个后端pod,与它相关的服务“backend-service”,另一个前端pod试图访问urlhttp://backend-service:8000上的后端。我端口转发我的前端,打开浏览器中的网址,我可以看到后端网址上的网络选项卡,但没有请求来我的后端。但是当端口转发我的后端并使用URL“http://localhost:8000"时,事情就正常了
0ejtzxu11#
需要检查的几件事:您是否正在为后端部署Service?如果没有Service,您将无法从任何地方访问后端的端口,除非您手动进行端口转发。这可能就是为什么没有端口转发就无法访问后端的原因。第二:你的服务是否在不同的命名空间中?如果你在不同的命名空间中部署,你不能像在docker中那样只使用服务名来连接。要连接到Kubernetes中的服务,格式为<serviceName>.<namespace>.svc.cluster.local。所以对你来说可能是backend-server.backend.svc.cluster.local。检查您的服务和名称空间,并更新连接字符串以使用k8s格式。
Service
<serviceName>.<namespace>.svc.cluster.local
backend-server.backend.svc.cluster.local
avwztpqn2#
由于前端试图通过后端API端点调用后端服务,因此我必须实际传递URL格式,如“local.example.com/backend"。在url中,应该有一个入口路径(这里是**/backend**)指向你的后端服务。当我们尝试在基于浏览器的设置上访问后端时,实际上需要传递的URL不是“serviceName.namespace”
2条答案
按热度按时间0ejtzxu11#
需要检查的几件事:
您是否正在为后端部署
Service
?如果没有Service
,您将无法从任何地方访问后端的端口,除非您手动进行端口转发。这可能就是为什么没有端口转发就无法访问后端的原因。第二:你的服务是否在不同的命名空间中?如果你在不同的命名空间中部署,你不能像在docker中那样只使用服务名来连接。要连接到Kubernetes中的服务,格式为
<serviceName>.<namespace>.svc.cluster.local
。所以对你来说可能是backend-server.backend.svc.cluster.local
。检查您的服务和名称空间,并更新连接字符串以使用k8s格式。avwztpqn2#
由于前端试图通过后端API端点调用后端服务,因此我必须实际传递URL格式,如“local.example.com/backend"。在url中,应该有一个入口路径(这里是**/backend**)指向你的后端服务。
当我们尝试在基于浏览器的设置上访问后端时,实际上需要传递的URL不是“serviceName.namespace”