spring-boot - Kubernetes - 从 minikube 中的 springboot 应用程序连接弹性搜索
问题描述
我正在尝试使用 minikube 在本地更近地运行 kubernetes。这是我第一次尝试 Kubernetes。因此,我并不熟悉它的所有方面。我正在尝试部署一个连接到弹性搜索服务器的 spring boot 应用程序。
springboot 部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp1:latest
imagePullPolicy: Never
弹性搜索服务器 部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch
spec:
selector:
matchLabels:
run: elasticsearch
replicas: 1
template:
metadata:
labels:
run: elasticsearch
spec:
containers:
- image: docker.elastic.co/elasticsearch/elasticsearch:6.6.1
name: elasticsearch
imagePullPolicy: IfNotPresent
env:
- name: discovery.type
value: single-node
- name: cluster.name
value: elasticsearch
ports:
- containerPort: 9300
name: nodes
- containerPort: 9200
name: client
暴露弹性搜索服务如下
apiVersion: v1
kind: Service
metadata:
name: elasticsearch
labels:
service: elasticsearch
spec:
ports:
- name: client
port: 9200
protocol: TCP
targetPort: 9200
- name: nodes
port: 9300
protocol: TCP
targetPort: 9300
type: NodePort
selector:
run: elasticsearch
同样,我也暴露了 springboot 应用程序的服务。现在我想知道如何从 springboot 服务连接到弹性搜索服务。
当 springbbot 和弹性搜索在同一台机器上正常部署时(不在 kubernetes 中),我使用 as 连接
RestClient.builder(new HttpHost("localhost", 9200))
.build();
从 kubernetes 中的 springboot 连接到弹性搜索的最佳方法是什么?
将elasticsearch服务的ip保存在环境变量中,在springboot中使用还是使用elasticsearch服务的服务名?
请指教
解决方案
您应该能够使用以下方法从集群中访问该服务:
http://servicename.servicenamespace:serviceport
集群内部的 Kubernetes dns 会将服务名称解析为主机名。如果它们在同一个命名空间中,您可能不需要服务命名空间
鉴于上面的 yaml,并且如果您对 elasticsearch 和 myapp 都使用了默认命名空间,那么 myapp 进程可以通过以下方式连接:
http://elasticsearch:9200
推荐阅读
- nginx - 剂量 nginx server_name 如何工作
- sonarqube - sonarqube 中的卸载插件:只能作为 SonarSource 版本的一部分卸载
- css - 为什么我在背景图像上看不到我的线性渐变?
- javascript - 当我单击 p-autocomplete (prime-ng) 中的下拉按钮时,会有微调器出现
- c++ - 在 Visual Studio 中链接 Kim Walisch Primes 库
- visual-studio - 安装和配置 react-native-fbsdk 后构建失败
- html - 带有 colspan 的 HTML 表无法正常工作
- angular - 如何将来自多个 HTTP 请求的 HTTPErrorResponse 对象存储在一个数组中?
- java - 将数据从一个类存储到另一个类
- angular - 预期 0 类型参数,但得到 1 - 角度 7