2017-10-16 52 views
1

我已經成功地在IP(硬編碼地址:端口)上指定我的elasticsearch.yaml文件中的主機,但我被告知這是不好的做法。我正在嘗試切換到僅使用ES羣集的pod名稱,現在沒有發現/使用pod作爲主羣集。我對所有3個吊艙,我安裝具有以下規格一elasticsearch.yml configMap:可以使用IP連接到elasticsearch窗格但不使用窗口名稱

cluster.name: elasticsearch-logs 
    node.name: ${HOSTNAME} 
    node.master: true 
    node.data: true 
    network.host: _local_ 
    transport.tcp.port: 9300 
    http.port: 9200 
    bootstrap.memory_lock: false 
    xpack.security.enabled: false 
    discovery.zen.minimum_master_nodes: 2 
    discovery.zen.ping.unicast.hosts: ["es-0:9300", "es-1:9300", "es-2:9300"] 

隨着這個我有2個服務。一個是無頭服務,另一個是ClusterIP。

apiVersion: v1 
kind: Service 
metadata: 
    name: elasticsearch-svc 
    labels: 
    component: elasticsearch 
    role: master 
spec: 
    selector: 
    component: elasticsearch 
    role: master 
    ports: 
    - name: transport 
    port: 9300 
    targetPort: 9300 
    clusterIP: None 


apiVersion: v1 
kind: Service 
metadata: 
    name: elasticsearch-discovery 
    labels: 
    component: elasticsearch 
    role: master 
spec: 
    selector: 
    component: elasticsearch 
    role: master 
    ports: 
    - name: transport 
    port: 9300 
    protocol: TCP 

而且在創建該ES莢我有口規格主要StatefulSet文件:

ports: 
     - containerPort: 9200 
      name: db 
      protocol: TCP 
     - containerPort: 9300 
      name: transport 
      protocol: TCP 

我試圖讓所有3個莢作爲主(和數據/客戶端)。當我看着吊艙日誌之一(這裏ES-0)創建我的服務/ statefulsets我看到下面的重複錯誤後:

[2017-10-16T15:31:29,078][WARN ][o.e.d.z.UnicastZenPing ] [es-0] timed out after [5s] resolving host [es-1:9300] 
[2017-10-16T15:31:29,079][WARN ][o.e.d.z.UnicastZenPing ] [es-0] timed out after [5s] resolving host [es-2:9300] 
[2017-10-16T15:31:32,080][WARN ][o.e.d.z.ZenDiscovery  ] [es-0] not enough master nodes discovered during pinging (found [[Candidate{node={es-0}{TUE-h8SNR6q7WbWUl2Pm-A}{XrTrBg3ATqSvlB3hTlezpg}{172.17.0.3}{172.17.0.3:9300}{ml.max_open_jobs=10, ml.enabled=true}, clusterStateVersion=-1}]], but needed [2]), pinging again 
[2017-10-16T15:31:36,111][WARN ][o.e.d.z.UnicastZenPing ] [es-0] failed to resolve host [es-1:9300] 
java.net.UnknownHostException: es-1 
    at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[?:1.8.0_141] 
    at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[?:1.8.0_141] 
    at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[?:1.8.0_141] 
    at org.elasticsearch.transport.TcpTransport.parse(TcpTransport.java:908) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at org.elasticsearch.transport.TcpTransport.addressesFromString(TcpTransport.java:863) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at org.elasticsearch.transport.TransportService.addressesFromString(TransportService.java:691) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at org.elasticsearch.discovery.zen.UnicastZenPing.lambda$null$0(UnicastZenPing.java:212) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_141] 
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) [elasticsearch-5.6.3.jar:5.6.3] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_141] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_141] 
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141] 
[2017-10-16T15:31:36,116][WARN ][o.e.d.z.UnicastZenPing ] [es-0] failed to resolve host [es-2:9300] 
java.net.UnknownHostException: es-2 
    at java.net.InetAddress.getAllByName0(InetAddress.java:1280) ~[?:1.8.0_141] 
    at java.net.InetAddress.getAllByName(InetAddress.java:1192) ~[?:1.8.0_141] 
    at java.net.InetAddress.getAllByName(InetAddress.java:1126) ~[?:1.8.0_141] 
    at org.elasticsearch.transport.TcpTransport.parse(TcpTransport.java:908) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at org.elasticsearch.transport.TcpTransport.addressesFromString(TcpTransport.java:863) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at org.elasticsearch.transport.TransportService.addressesFromString(TransportService.java:691) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at org.elasticsearch.discovery.zen.UnicastZenPing.lambda$null$0(UnicastZenPing.java:212) ~[elasticsearch-5.6.3.jar:5.6.3] 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_141] 
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:569) [elasticsearch-5.6.3.jar:5.6.3] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_141] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_141] 
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141] 
[2017-10-16T15:31:39,120][WARN ][o.e.d.z.ZenDiscovery  ] [es-0] not enough master nodes discovered during pinging (found [[Candidate{node={es-0}{TUE-h8SNR6q7WbWUl2Pm-A}{XrTrBg3ATqSvlB3hTlezpg}{172.17.0.3}{172.17.0.3:9300}{ml.max_open_jobs=10, ml.enabled=true}, clusterStateVersion=-1}]], but needed [2]), pinging again 

我仍然能夠在node-ip:node-port達到通過瀏覽器elasticsearch但我得到503錯誤一旦我嘗試做/_cluster/state

我相信我有一個端口的「網絡」端的錯誤,但我不確定在哪裏。我應該看什麼?謝謝!

StatefulSet

apiVersion: apps/v1beta1 
kind: StatefulSet 
metadata: 
    name: es 
    labels: 
    component: elasticsearch 
    role: master 
spec: 
    serviceName: elasticsearch 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     component: elasticsearch 
     role: master 
     annotations: 
     pod.alpha.kubernetes.io/init-containers: '[ 
     { 
      "name": "init-sysctl", 
      "image": "alpine:3.4", 
      "imagePullPolicy": "IfNotPresent", 
      "command": ["sysctl", "-w", "vm.max_map_count=262144"], 
      "securityContext": { 
      "privileged": true 
      } 
     } 
     ]' 
    spec: 
     subdomain: elasticsearch-svc 
     containers: 
     - name: es-master 
     securityContext: 
      privileged: true 
      capabilities: 
      add: 
       - IPC_LOCK 
     image: docker.elastic.co/elasticsearch/elasticsearch:5.6.3 
     imagePullPolicy: Always 
     env: 
     - name: "ES_JAVA_OPTS" 
      value: "-Xms512m -Xmx512m" 
     ports: 
     - containerPort: 9200 
      name: http 
      protocol: TCP 
     - containerPort: 9300 
      name: transport 
      protocol: TCP 
     volumeMounts: 
     - name: storage 
      mountPath: /data 
     - name: config-volume 
      mountPath: /usr/share/elasticsearch/config/elasticsearch.yml 
      subPath: elasticsearch.yml 
     volumes: 
     - name: config-volume 
     configMap: 
      name: elasticsearch-config 
    volumeClaimTemplates: 
    - metadata: 
     name: storage 
     annotations: 
     volume.beta.kubernetes.io/storage-class: standard 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 12Gi 

回答

1

您需要使用完整的DNS名稱連接:

es-0.elasticsearch-internal:9300 
+0

我試過了,它也沒有工作:(會在羣集中是一個minikube集羣已任。影響,因爲這意味着它是一個節點集羣的主節點? – appdap1

+1

您是否在statefulset對象上設置了「serviceName」和標籤? – vascop

+0

是的,我有'serviceName:elasticsearch'和組件/角色標籤。將規範添加到我的文章) – appdap1

相關問題