简体   繁体   中英

Setting up elastic search cluster on kubernetes pods can't talk to each other by hostname

Trying to setup elasticsearch cluster on kube, the problem i am having is that each pod isn't able to talk to the others by the respective hostnames, but the ip address works.

So for example i'm trying to currently setup 3 master nodes, es-master-0, es-master-1 and es-master-2 , if i log into one of the containers and ping another based on the pod ip it's fine, but ii try to ping say es-master-1 from es-master-0 based on the hostname it can't find it.

Clearly missing something here. Currently launching this config to try get it working:

apiVersion: v1
kind: Service
metadata:
  name: ed
  labels:
    component: elasticsearch
    role: master
spec:
  selector:
    component: elasticsearch
    role: master
  ports:
    - name: transport1
      port: 9300
      protocol: TCP
  clusterIP: None
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: es-master
  labels:
    component: elasticsearch
    role: master
spec:
  selector:
    matchLabels:
      component: elasticsearch
      role: master
  serviceName: ed
  replicas: 3
  template:
    metadata:
      labels:
        component: elasticsearch
        role: master
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - { key: es-master, operator: In, values: [ "true" ] }
      initContainers:
        - name: init-sysctl
          image: busybox:1.27.2
          command:
            - sysctl
            - -w
            - vm.max_map_count=262144
          securityContext:
            privileged: true
      dnsPolicy: "None"
      dnsConfig:
        options:
          - name: ndots
            value: "6"
        nameservers:
          - 10.85.0.10
        searches:
          - ed.es.svc.cluster.local
          - es.svc.cluster.local
          - svc.cluster.local
          - cluster.local
          - home
          - node1
      containers:
        - name: es-master
          image: docker.elastic.co/elasticsearch/elasticsearch:7.17.5
          imagePullPolicy: Always
          securityContext:
            privileged: true
          env:
            - name: ES_JAVA_OPTS
              value: -Xms2048m -Xmx2048m
         
          resources:
            requests:
              cpu: "0.25"
            limits:
              cpu: "2"
          ports:
            - containerPort: 9300
              name: transport1
          livenessProbe:
            tcpSocket:
              port: transport1
            initialDelaySeconds: 60
            periodSeconds: 10
          volumeMounts:
            - name: storage
              mountPath: /data
            - name: config
              mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
              subPath: elasticsearch.yml
      volumes:
        - name: config
          configMap:
            name: es-master-config
  volumeClaimTemplates:
    - metadata:
        name: storage
      spec:
        storageClassName: "local-path"
        accessModes: [ ReadWriteOnce ]
        resources:
          requests:
            storage: 2Gi

It's clearly somehow not resolving the hostnames

对于 pod 到 pod 的通信,您可以使用您定义的 k8s 服务

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM