Kubernetes错误名称未解决

Kubernetes错误名称未解决,kubernetes,kubectl,minikube,Kubernetes,Kubectl,Minikube,我有两个部署,一个用于后端,一个用于前端,还有两个用于它们的服务。前端服务设置为负载平衡器,并按预期公开(使用minikube隧道)。后端服务不应该暴露在集群之外,因此我没有设置任何类型的服务(默认为ClusterIP,它仅在集群内可用)。现在我想从前端打电话到后端。我打字的时候 kubectl exec -it FRONT_END_POD_NAME -- /bin/sh 然后使用curl我可以获得我期望的所有资源,但是,当我打开我的网站应用程序,它获取与我键入curl相同的资源时,控制台ne

我有两个部署,一个用于后端,一个用于前端,还有两个用于它们的服务。前端服务设置为负载平衡器,并按预期公开(使用minikube隧道)。后端服务不应该暴露在集群之外,因此我没有设置任何类型的服务(默认为ClusterIP,它仅在集群内可用)。现在我想从前端打电话到后端。我打字的时候

kubectl exec -it FRONT_END_POD_NAME -- /bin/sh
然后使用
curl
我可以获得我期望的所有资源,但是,当我打开我的网站应用程序,它获取与我键入curl相同的资源时,控制台
net::ERR\u NAME\u NOT \u RESOLVED
中出现错误。你知道为什么会发生这种情况吗,即使我能从前端卷曲它,一切正常?如何修复它

apiVersion: apps/v1
kind: Deployment
metadata:
  name: backend-deployment
  labels:
    app: backend
spec:
  selector:
    matchLabels:
      app: backend
  replicas: 1
  template:
    metadata:
      labels:
        app: backend
    spec:
      containers:
        - name: backend
          image: ajris/site_backend:pr-kubernetes
          ports:
            - containerPort: 8080
====
apiVersion: v1
kind: Service
metadata:
  name: backend-service
  labels:
    app: backend
spec:
  selector:
    app: backend
  ports:
    - protocol: TCP
      port: 8081
      targetPort: 8080
===
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend-deployment
  labels:
    app: frontend
spec:
  selector:
    matchLabels:
      app: frontend
  replicas: 1
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
        - name: frontend
          image: ajris/site_frontend:travis-66
          ports:
            - containerPort: 3000
          imagePullPolicy: Always
===
apiVersion: v1
kind: Service
metadata:
  name: frontend-service
  labels:
    app: frontend
spec:
  ports:
    - protocol: TCP
      port: 3001
      targetPort: 3000
  selector:
    app: frontend
  type: LoadBalancer


因为这还没有一个章节的答案,所以最好让其他人在将来更容易找到它。提出问题的人在问题的评论中自己回答了这个问题

本质上,这里发生的事情是,React不是在前端pod上执行,而是在客户端的浏览器中执行。因此,如果客户端无法访问任何试图联系后端pod的请求,例如带有ClusterIP服务的后端pod,则该请求将失败


要解决此问题,需要从客户端访问后端服务器。这可以通过将与后端pod关联的服务更改为负载平衡器或使用入口来实现。

您需要提供YAM以了解前端和后端是如何部署的。如果没有这一点,很难提供帮助。嗯,我知道为什么它不能工作。可能,因为它是一个web应用程序,所以不可能从chrome之类的网站发出请求,可能需要涉及ingress controller或类似的东西。还有,我刚刚添加了它们。@Ajris是的,一定是这样。请求很可能来自您的浏览器,而不是集群内部,并且您的浏览器无法访问
http://backend-service:8081
。这意味着,您需要通过
入口
/
负载平衡器
对象等打开internet的后端API。是的,我考虑过这一点,但我认为这是一个坏主意(仅在我看来),因为我给每个人一个访问后端的机会,而我不需要它。我认为我应该做的是将浏览器渲染与react分开,并添加前端,作为后端的代理。因此,只有前端是公开的,后端只在集群内可见。这种类型的微服务是如何创建的?或者应该用另一种方式,比如使用入口?是的,我做了一些研究,并决定改变一下我的架构。如果你愿意的话,我可以在本周末粘贴我的代码,也许在下一周,这样可以解决所有问题并展示整个架构