【问题标题】:elasticsearch on kubernetes - discovery of nodesKubernetes上的elasticsearch - 节点的发现
【发布时间】:2015-09-24 16:05:17
【问题描述】:

我们正在尝试在 kubernetes / flannel / coreos 集群上运行 Elasticsearch。

作为 flanneldoes not support multicast,我们不能使用 Zen 组播发现来让节点相互发现,形成集群并进行通信。

除了将所有 kubernetes 节点的 IP 地址硬编码到 ES-config-file 中之外,还有其他方法可以帮助我们发现吗?可能使用 etcd2 或其他一些与 kubernetes 兼容的发现服务?

【问题讨论】:

  • Short of hard-coding the IP addresses: 你具体有多少个节点? kubernetes-elasticsearch-cluster 有帮助吗?
  • 啊目前只有两个节点,但我们希望能够在必要时进行扩展。我确实看过那个引用的项目,但我不确定如何在这种类型的配置中管理持久存储..

标签: elasticsearch kubernetes consul


【解决方案1】:

6.2.0 版本支持 Kubernetes 自动发现

如下更新你的 elasticsearch.yml

discovery.zen.ping.unicast.hosts: "kubernetes 服务名称"

【讨论】:

  • 我应该在服务或容器上打开 9200 还是两者兼而有之?
【解决方案2】:

有一个发现插件使用 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

【讨论】:

    【解决方案3】:

    将容器放入 Kubernetes 服务中。 Kubernetes API 提供了一个“端点”API,它列出了服务所有成员的 IP 地址。此端点集将随着您扩展 pod 数量而动态收缩和增长。

    您可以通过以下方式访问端点:

    kubectl get endpoints <service-name>
    

    或直接通过 Kubernetes API,请参阅:

    https://github.com/kubernetes/kubernetes/blob/master/examples/cassandra/java/src/io/k8s/cassandra/KubernetesSeedProvider.java#L106

    有关如何为 Cassandra 完成此操作的示例。

    【讨论】:

      【解决方案4】:

      仅在此配置中对我有用。
      重要的! flannel 必须使用 vxlan 启用。

      cluster.yaml

      network:
        plugin: flannel
        options:
          flannel_backend_type: vxlan
      

      elasticsearch.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
      

      【讨论】:

        猜你喜欢
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-18
        • 2014-01-20
        • 2015-11-15
        • 1970-01-01
        • 2019-01-22
        相关资源
        最近更新 更多