Как я могу развернуть кластер Elasticsearch в наборе реплик Kubernete?

#elasticsearch #kubernetes

Вопрос:

Я пытаюсь развернуть поиск Elasticsearch в кластере K8S. Ниже приведена моя конфигурация. Это прекрасно работает для replicas: 1 . Но если я изменю его на значение больше 1, в кластере K8S будет развернуто несколько модулей. Но как я могу заставить их работать вместе как один узел кластера Elasticsearch?

Я знаю, что могу вручную добавить узлы в кластер Elasticsearch с помощью API. Но есть ли какой-либо способ позволить кластеру автоматически обнаруживать дополнительные узлы?

 ---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: es
  namespace: default
spec:
  serviceName: es-entrypoint
  replicas: 1
  selector:
    matchLabels:
      name: es
  template:
    metadata:
      labels:
        name: es
    spec:
      volumes:
        - name: es-config
          configMap:
            name: es-config
            items:
              - key: elasticsearch.yml
                path: elasticsearch.yml
        - name: persistent-storage
          persistentVolumeClaim:
            claimName: es-claim
      initContainers:
        - name: permissions-fix
          image: busybox
          volumeMounts:
            - name: persistent-storage
              mountPath: /usr/share/elasticsearch/data
          command: [ 'chown' ]
          args: [ '1000:1000', '/usr/share/elasticsearch/data' ]
      containers:
        - name: es
          image: elasticsearch:7.10.1
          resources:
            requests:
              cpu: 2
              memory: 8
          ports:
            - name: http
              containerPort: 9200
            - containerPort: 9300
              name: inter-node
          volumeMounts:
            - name: es-config
              mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
              subPath: elasticsearch.yml
            - name: persistent-storage
              mountPath: /usr/share/elasticsearch/data
---
apiVersion: v1
kind: Service
metadata:
  name: es-entrypoint
spec:
  selector:
    name: es
  ports:
    - port: 9200
      targetPort: 9200
      protocol: TCP
  type: NodePort