【发布时间】:2019-12-16 07:40:50
【问题描述】:
我有一个 Spring Boot 应用程序,它使用 minikube 部署在本地 Windows 机器上的 Kubernetes 中。我还在我的本地机器上运行 Elasticsearch (http://localhost:9200)。 我想从这个 Spring Boot 应用程序中调用 Elasticsearch REST 端点。 我尝试通过创建一个没有选择器的服务来解决这个问题,但不确定我错过了什么。
当使用http://#minikube_ip#:#Node_Port# 访问 Spring Boot 应用程序时,我收到错误“No route to host”。
我尝试做 minikube ssh 并执行 curl 命令,从那里我也得到了同样的错误。显然我在这里遗漏了一些东西。
application.yaml
elasticsearch:
hosts:
- http://my-es:80
connectTimeout: 10000
connectionRequestTimeout: 10000
socketTimeout: 10000
maxRetryTimeoutMillis: 60000
deployment.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 elastic-search-app .
kubectl create -f deployment.yaml
kubectl 暴露部署/kube-es-app --type="NodePort" --port 8080
有人可以帮忙吗?我被卡住了
【问题讨论】:
-
您是否尝试从部署在 kubernestes 上的 sping 应用程序访问在 localhost:9200 上运行的 elasticsearch 实例,我正确吗?
-
是的。来自我本地机器上的 minikube
-
禁用 Windows 防火墙后是否有效?
标签: spring spring-boot elasticsearch kubernetes minikube