Kubernetes 服务无法相互通信



我是Kubernetes的新手,我尝试创建两个可以相互通信的服务。第一个服务是一个简单的静态web (HTML, js),类型为LoadBalancer,第二个服务是express.js后端,类型为ClusterIP。这是我的service.yaml文件:

apiVersion: v1
kind: Service
metadata:
name: number-generator
spec:
selector:
app: number-generator
ports:
- port: 3000
targetPort: 3000
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: number-web
spec:
selector:
app: number-web
ports:
- port: 80
targetPort: 80
type: LoadBalancer

这是我的deployment.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
name: number-generator
spec:
selector:
matchLabels:
app: number-generator
template:
metadata:
labels:
app: number-generator
spec:
containers:
- name: number-generator
image: cantdocpp/number-generator
ports:
- containerPort: 3000
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: number-web
spec:
selector:
matchLabels:
app: number-web
template:
metadata:
labels:
app: number-web
spec:
containers:
- name: number-web
image: cantdocpp/number-web:v5
ports:
- containerPort: 80

因此,在localhost:80中可以访问的number-web服务内部,应该访问number-generatorAPI以获取随机数。我试图使用http://number-generator/http://number-generator:3000/访问它,但它们都返回这样的网络错误:

GET http://number-generator/ net::ERR_NAME_NOT_RESOLVED

无论我调用http://number-generator/还是http://number-generator:3000/,错误应该或多或少相同。那么我怎样才能使这两个服务相互通信呢?

我刚刚发现问题了。

因为我使用静态站点作为前端,所以当我调用后端服务时它实际上是从浏览器中调用的。浏览器不是我们的kubernetes集群,所以当我试图访问数字生成器时使用ajax服务,它会发送这些错误。

当我试图将静态前端更改为express app时,它可以访问后端数字生成器

最新更新