同一个节点的pod之间的Kubernetes通信

问题描述 投票:0回答:1

我尝试从前端向后端发出http请求

我想在 kubernetes 中同一节点的 pod 之间创建通信。 我以这种方式创建了部署:

文件 yaml:

后端(Spring-boot)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tool-be
spec:
  replicas: 1  # imposta il numero desiderato di repliche
  selector:
    matchLabels:
      app: tool-be
  template:
    metadata:
      labels:
        app: tool-be
        tier: tool-be
    spec:
      containers:
      - name: tool-be
        image:  localhost:5000/tool-be:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
        env:
        - name: db-pass
          value: "#####"
        - name: db-username
          value: "#####"
        - name: spring.profiles.active
          value: "kube"
---
apiVersion: v1
kind: Service
metadata:
  name: tool-be-service
spec:
  selector:
    app: tool-be
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

前端(角度)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tool-fe
spec:
  replicas: 1  # imposta il numero desiderato di repliche
  selector:
    matchLabels:
      app: tool-fe
  template:
    metadata:
      labels:
        app: tool-fe
        tier: tool-fe
    spec:
      containers:
      - name: tool-fe
        image:  localhost:5000/tool-fe:latest 
        ports:
        - containerPort: 4200
---
apiVersion: v1
kind: Service
metadata:
  name: tool-fe-service
spec:
  selector:
    app: tool-fe
  ports:
    - protocol: TCP
      port: 4200
      targetPort: 4200
  type: LoadBalancer

我已经创建了 Pod 并且它们可以工作,但是当我尝试从前端到后端发出 hhtp 请求时(使用服务名称:http://tool-be-service:8080/....)我找到一个错误(net::ERR_NAME_NOT_RESOLVED),就好像地址错误(我不认为这可能是一个cors错误)。 但如果尝试使用以下命令连接到前端终端:

kubectl exec -it tool-fe-68... -- /bin/sh

end 然后在终端尝试执行:

wget http://tool-be-service:8080/...

它有效! (我发现一个 unatorize 错误,但我可以到达后端,如果我查看日志,我会发现请求尝试)

有人能告诉我问题所在吗? 为什么http请求从前端到后端无法连接?

kubernetes httprequest kubernetes-service kubernetes-networking
1个回答
0
投票

问题解决了。

关键是这条评论:

“Angular 应用程序大概运行在最终用户的浏览器中。这不在 Kubernetes 集群内部,并且无法访问服务名称等内容。您可能需要设置一个 Ingress 来代理前端代码和后端 API 端点。- 大卫迷宫”

我在 kubernetes 的前端环境中更改了 url,使用 localhost 代替服务名称,我还暴露了后端服务,现在它可以工作了!!

© www.soinside.com 2019 - 2024. All rights reserved.