提问者:小点点

从minikube/kubernetes访问Elasticsearch


我有一个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

有人能帮忙吗?我卡住了


共1个答案

匿名用户

如果我的描述正确,Windows机器应该有vbox网络适配器连接到MinikubeVM连接到的仅主机网络。

Minikube可以直接访问主机,因为两者都在同一个网络中。

Minikube负责从外部Pod中获取NAT包。您需要的是允许Elasticsearch侦听vbox或所有接口,并在Windows防火墙中启用其端口。然后Elasticsearch应该可以通过仅主机网络中的WindowsIP地址获得。

除此之外,您可以创建一个服务(如果您需要按名称而不是IP),如下所述:

从minikube集群内部连接到本地数据库,

Minikube:在localhost上公开mysql作为服务。