出于学习目的,我在Google云上的群集中有两项服务:
具有以下k8配置的API服务:
deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: myapp-api
labels:
app: myapp-api
spec:
replicas: 1
template:
metadata:
labels:
app: myapp-api
spec:
containers:
- image: gcr.io/prefab-basis-213412/myapp-api:0.0.1
name: myapp-api
ports:
- containerPort: 3000
service.yaml
kind: Service
apiVersion: v1
metadata:
name: myapp-api
spec:
selector:
app: myapp-api
ports:
- protocol: TCP
port: 80
targetPort: 3000
还有第二项服务,称为前端,该服务已公开:
deployment.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: myappfront-deployment
spec:
replicas: 1
template:
metadata:
labels:
app: myappfront
spec:
containers:
- image: gcr.io/prefab-basis-213412/myappfront:0.0.11
name: myappfront-deployment
ports:
- containerPort: 3000
service.yaml
apiVersion: v1
kind: Service
metadata:
name: myappfront-service
spec:
type: LoadBalancer
selector:
app: myappfront
ports:
- port: 80
targetPort: 3000
前端服务基本上是一个nodejs应用程序,它仅对
问题是呼叫失败,并且无法找到请求的端点。对于API服务,我目前缺少任何其他配置吗?
P.S。两种服务都在运行,我可以通过从本地主机代理连接到它们。
答案 0 :(得分:0)
由于您可以在代理时使用服务,因此听起来好像您已经完成了针对群集内问题的大多数调试步骤(https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/)。这表明问题可能不在群集内。进行HTTP调用时要注意前端。它可能在带有节点的服务器中,但是鉴于您看到了这个问题,建议您在浏览器中。 (如果看到可以在浏览器控制台中看到该调用,则为。)如果在浏览器中进行前端的调用,则它无权访问Kubernetes dns,并且群集内部服务名称将无法解析。为了解决这个问题,您可以使后端服务LoadBalancer并将外部名称传递到前端。