我们正在尝试在 kubernetes / flannel / coreos 集群上运行 Elasticsearch。
由于 flannel不支持多播,我们无法使用 Zen 多播发现来让节点相互发现、组成集群并进行通信。
除了将所有 kubernetes 节点的 IP 地址硬编码到 ES-config-file 中之外,还有其他方法可以用来帮助发现吗?可能使用 etcd2 或其他一些与 kubernetes 兼容的发现服务?
我们正在尝试在 kubernetes / flannel / coreos 集群上运行 Elasticsearch。
由于 flannel不支持多播,我们无法使用 Zen 多播发现来让节点相互发现、组成集群并进行通信。
除了将所有 kubernetes 节点的 IP 地址硬编码到 ES-config-file 中之外,还有其他方法可以用来帮助发现吗?可能使用 etcd2 或其他一些与 kubernetes 兼容的发现服务?
6.2.0 版本支持 Kubernetes 自动发现
更新您的 elasticsearch.yml 如下
discovery.zen.ping.unicast.hosts: "kubernetes 服务名称"
有一个发现插件使用 kubernetes API 进行集群发现:
https://github.com/fabric8io/elasticsearch-cloud-kubernetes
安装插件:
/usr/share/elasticsearch/bin/plugin -i io.fabric8/elasticsearch-cloud-kubernetes/1.3.0 --verbose
创建一个用于发现的 Kubernetes 服务:
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-cluster
spec:
ports:
- port: 9300
selector:
app: elasticsearch
还有一个elasticsearch.yml
:
cloud.k8s.servicedns: elasticsearch-cluster
discovery.type: io.fabric8.elasticsearch.discovery.k8s.K8sDiscoveryModule
将容器放入 Kubernetes 服务中。Kubernetes API 提供了一个“端点”API,它列出了服务所有成员的 IP 地址。随着您扩展 pod 的数量,此端点集将动态收缩和增长。
您可以通过以下方式访问端点:
kubectl get endpoints <service-name>
或直接通过 Kubernetes API,请参阅:
有关如何为 Cassandra 完成此操作的示例。
它仅在此配置中对我有用。
重要的!flannel 必须使用 vxlan 启用。
集群.yaml
network:
plugin: flannel
options:
flannel_backend_type: vxlan
弹性搜索.yaml
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: elastic-cluster
spec:
version: 7.0.1
nodeSets:
- name: node
count: 3
config:
node.master: true
node.data: true
node.ingest: true
xpack.ml.enabled: true
node.store.allow_mmap: true
indices.query.bool.max_clause_count: 100000
# Fixed flannel kubernetes network plugin
discovery.seed_hosts:
{{ range $i, $e := until (3 | int) }}
- elastic-cluster-es-node-{{ $i }}
{{ end }}
podTemplate:
spec:
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: "-Xms4g -Xmx4g"
- name: READINESS_PROBE_TIMEOUT
value: "60"
resources:
requests:
memory: 5Gi
# cpu: 1
limits:
memory: 6Gi
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
storageClassName: local-elasticsearch-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5G