我想将vuejs应用程序集成到minikube集群中。
我将VueJs教程中的Dockerfile用于Nginx Web服务器和第一个选项localhost:8080
here的生产中。我相应地将yml文件中的端口更改为localhost,将其更改为8080,将nginx版本(如下所示)更改为80
然后在我的config/index.js
dev: {
[...]
host: 'localhost', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,
notifyOnErrors: true,
poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
[...]
},
我已经设置了默认的8080端口。对于我的minikube部署和服务,我添加了
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
name: vuejs
spec:
selector:
matchLabels:
app: vuejs
tier: frontend
replicas: 1
template:
metadata:
labels:
app: vuejs
tier: frontend
spec:
imagePullSecrets:
- name: regcred
containers:
- name: vuejs
image: <secret registry>
ports:
- containerPort: 80
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
---
apiVersion: v1
kind: Service
metadata:
name: vuejs
labels:
app: vuejs
tier: frontend
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
# Replace with the IP of your minikube java / master java
# externalIPs:
# - 192.168.99.105
selector:
app: vuejs
tier: frontend
如何连接到vuejs / nginx Web服务器。此外,由于我将后端的DNS名称设置为java
,因此如何在vuejs中设置Java REST API地址?
我将地址设置为'http://java:8080/'
,但没有任何响应。 Java REST后端已与this yml集成到minikube中。
古玩问题是,启动vuejs部署后,我可以在127.0.0.1:8080
上访问vuejs应用程序。当我正确理解时,我认为kubernetes集群开放了自己的网络,并且只能通过外部IP进行访问
看看我的kubectl get all
,我会说vuejs应该可以访问192.168.99.105:8080
-当使用没有nginx的dockerimage时。
NAME READY STATUS RESTARTS AGE
pod/java-fbf949cbc-rqstq 0/1 Error 4 2d
pod/maria-7b67c8ddf-xp8xx 1/1 Running 2 2d
pod/private-reg 1/1 Running 5 5d
pod/vuejs-5f4c657d74-885j9 1/1 Running 1 18h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/java LoadBalancer 10.101.207.98 192.168.99.100 8080:31011/TCP 2d
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5d
service/maria ClusterIP 10.99.177.228 <none> 3306/TCP 2d
service/vuejs NodePort 10.104.108.44 192.168.99.105 8080:30001/TCP 17h
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deployment.apps/java 1 1 1 0 2d
deployment.apps/maria 1 1 1 1 2d
deployment.apps/vuejs 1 1 1 1 18h
NAME DESIRED CURRENT READY AGE
replicaset.apps/java-fbf949cbc 1 1 0 2d
replicaset.apps/maria-7b67c8ddf 1 1 1 2d
replicaset.apps/vuejs-5f4c657d74 1 1 1 18h
答案 0 :(得分:1)
您可以使用minikube service
命令将URL公开给您自己的主机。对于您的部署,请尝试:
minikube service vuejs --url
它将显示一个IP,其中添加了NodePort。复制该命令的结果并将其粘贴到浏览器中。
Minikube使用单节点Kubernetes集群在主机(笔记本电脑)中启动虚拟机,并分配一个可以使用minikube ip
命令获得的本地IP。这就是Kubernetes节点的IP。
当您在Kubernetes中公开“ NodePort”服务时,它会分配一个范围为30000-32767(默认)的静态端口,以便您可以使用<NodeIP>:<NodePort>
答案 1 :(得分:0)