所以我有一个问题,当我试图从我的前端进行呼叫时,我得到了ERR_CONNECTION_REFUSED,它被设置为入口。我的后端express服务器在5000端口上运行,并被设置为ClusterIP。我已经阅读了mac本地集群的docker,ip与localhost是相同的,所以我就是这样设置的。
我确信我有正确的文件和网络。我只是不确定将API调用指向后端的位置。它也是localhost吗?我将在下面包含这些文件。
前端部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend-deployment
spec:
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend-container
image: mrich6347/vue-frontend:5
resources:
requests:
memory: "32Mi"
cpu: "100m"
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
前端服务
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
type: ClusterIP
selector:
app: frontend
ports:
- port: 8080
targetPort: 8080
Express服务器部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: express-server-deployment
spec:
selector:
matchLabels:
app: express-server
template:
metadata:
labels:
app: express-server
spec:
containers:
- name: express-server
image: mrich6347/express-server:5
resources:
requests:
memory: "32Mi"
cpu: "100m"
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 5000
Express服务器服务
apiVersion: v1
kind: Service
metadata:
name: express-server-service
spec:
type: ClusterIP
selector:
app: express-server
ports:
- port: 5000
targetPort: 5000
下面是我从vue发出的api调用
export default {
name: 'app',
components: {
HelloWorld
},
created: async () => {
console.log("SERVER IS UP")
let res = await axios.get("http://127.0.0.1:5000/test");
console.log(res)
}
}
最后是我的简单的express API
const app = require('express')();
var cors = require('cors')
app.use(cors())
app.get("/test", (req, res) => {
res.send("WORKING!")
})
app.listen(5000, () => {
console.log("Server is up on 5000")
})
入口控制器
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traffic-router
annotations:
ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: frontend-service
servicePort: 8080
发布于 2019-05-23 08:14:42
我读过mac本地集群的docker,ip和localhost是一样的,所以我就是这么设置的。
Docker for Mac Kubernetes中的服务不能直接用于您的桌面。有许多集群IP,但只有一个localhost
,所以如果它们都暴露了,你会很快在本地主机上遇到端口冲突。
Docker for Mac将自动在localhost
上公开LoadBalancer
类型的服务。其概念类似于运行docker run -p 80:30843 ...
。请参阅此入口控制器上的EXTERNAL-IP
。
$ kubectl get service m-nginx-nginx-ingress-controller
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
m-nginx-nginx-ingress-controller LoadBalancer 10.108.201.47 localhost 80:30843/TCP,443:31419/TCP 22h
$ curl http://localhost:80
default backend - 404
因为听起来您已经有了前端服务的入口控制器,所以重用该入口并将另一个主机名或URI路径映射到您的后端服务是最容易的。
https://stackoverflow.com/questions/56262861
复制相似问题