我有一个Spring启动应用程序,它部署在库伯内特斯本地windows机器上,使用minikube。我也有Elasticsearch在我的本地机器上运行(http://localhost:9200)。我想从这个Spring启动应用程序调用Elasticsearch RESTendpoint。我试图通过创建一个没有选择器的服务来解决这个问题,但不确定我缺少什么。
当使用超文本传输协议访问Spring启动应用程序://#minikube_ip#:#Node_Port#,我得到一个错误"没有路由到主机".
我尝试执行minikube ssh并执行curl命令,从那里我也得到同样的错误。显然我在这里错过了一些东西。
application. yaml
elasticsearch:
hosts:
- http://my-es:80
connectTimeout: 10000
connectionRequestTimeout: 10000
socketTimeout: 10000
maxRetryTimeoutMillis: 60000
部署. yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: kube-es-app
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
run: kube-es-app
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: kube-es-app
spec:
containers:
- image: elastic-search-app:latest
imagePullPolicy: Never
name: kube-es-app
ports:
- containerPort: 8080
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
---
kind: Service
apiVersion: v1
metadata:
name: my-es
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9200
---
kind: Endpoints
apiVersion: v1
metadata:
name: my-es
subsets:
- addresses:
- ip: <MY_LOCAL_MACHINE_IP>
ports:
- port: 9200
我执行的命令
docker build-t弹性搜索应用程序。
kubectl创建-f部署. yaml
Kubectl公开部署/库贝-es-app--type="NodePort"--port 8080
有人能帮忙吗?我卡住了
如果我的描述正确,Windows机器应该有vbox网络适配器连接到MinikubeVM连接到的仅主机网络。
Minikube可以直接访问主机,因为两者都在同一个网络中。
Minikube负责从外部Pod中获取NAT包。您需要的是允许Elasticsearch侦听vbox或所有接口,并在Windows防火墙中启用其端口。然后Elasticsearch应该可以通过仅主机网络中的WindowsIP地址获得。
除此之外,您可以创建一个服务(如果您需要按名称而不是IP),如下所述:
从minikube集群内部连接到本地数据库,
Minikube:在localhost上公开mysql作为服务。