【问题标题】:REST api call between two pods in minikubeminikube 中两个 pod 之间的 REST api 调用
【发布时间】:2020-10-28 18:01:56
【问题描述】:

我正在一个 minikube 集群上运行一个 REACT 应用程序,该集群包括同一命名空间 default 中的前端和后端。当前端向后端发送请求时,请求不会到达后端。通过ingress-nginx 进行负载平衡。

前端服务...

apiVersion: v1
kind: Service
metadata:
  name: frontend-service
spec:
  type: ClusterIP
  selector:
    app: frontend-panel
  ports:
  - port: 3000
    targetPort: 3000

后端服务

apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  type: ClusterIP
  selector:
    app: backend-panel
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080

前端是一个反应应用程序,它调用在同一个 minikube 集群中运行的不同服务.., react的配置文件。

window.config = {
  backend: {
    backend_service: "http://backend-service:8080/"
  }
}

kubectl describe svc backend-service 的结果。

Name:              backend-service
Namespace:         default
Labels:            <none>
Annotations:       Selector:  app=backend-panel
Type:              ClusterIP
IP:                10.106.135.236
Port:              <unset>  8080/TCP
TargetPort:        8080/TCP
Endpoints:         172.17.0.10:8080
Session Affinity:  None
Events:            <none>

除了"http://backend-service:8080/",我试过"http://backend-service.default.svc.cluster.local:8080/"。但在没有失败请求的情况下,它会挂起很长时间。

【问题讨论】:

  • 分享 kubectl describe svc backend-service 的输出。如果您使用PODIP:8080,它是否有效?
  • 如果您使用172.17.0.10:8080,它可以工作吗?你可以使用kubectl port forward 转发到 pod 吗?
  • 端口转发是为了从 localhost 访问 Pod 对吧?但在这里,pod 需要在集群内部进行通信。
  • 是否能够从集群中的另一个 pod 卷曲 172.17.0.10:8080?前端和后端之间有入口吗?
  • 前后端没有入口

标签: reactjs kubernetes devops minikube


【解决方案1】:

服务看起来不错,因为它的 POD IP 和 PORT 为 Endpoints。验证您是否能够使用集群中另一个 pod 中的 curl 172.17.0.10:8080 直接通过 PODIP 和 PORT 访问该 pod。如果这不起作用,那么可能有两个原因

  1. 应用程序未侦听端口 8080。仅在 pod yaml 中指定 containerPort: 8080 不会使应用程序侦听端口 8080

  2. 应用程序正在侦听 127.0.0.1 而不是 0.0.0.0

【讨论】:

  • 我可以毫无问题地卷曲到172.17.0.10:8080 前端到后端。但问题是当调用通过反应发生时
猜你喜欢
  • 2018-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 2016-04-25
  • 2019-01-15
  • 1970-01-01
  • 2021-03-05
相关资源
最近更新 更多