因此,当我尝试从设置为Ingress的前端拨打电话时,出现了ERR_CONNECTION_REFUSED的问题。我的后端快速服务器在端口5000上运行,并设置为ClusterIP。我已经阅读了Mac本地群集ip的docker与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
快速服务器部署
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
答案 0 :(得分:0)
我已经阅读了mac本地群集ip的docker与localhost相同的内容,所以我如何设置它
Docker for Mac Kubernetes内部的服务无法直接在您的桌面上使用。群集IP有很多,只有一个localhost
,因此,如果它们全部公开,您将很快在localhost上遇到端口冲突。
适用于Mac的Docker将自动在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路径映射到后端服务。