Elasticsearch群集Kubernetes启动时的红色状态

我试着按照这里的教程: https ://vichargrave.github.io/articles/2016-10/running-elasticsearch-on-kubernetes在Kubernetes上创build一个Elasticsearch集群。

为了简化问题,我只创build了一个主节点,一个客户机节点和一个数据节点。

创build并运行pod和部署,但启动时集群运行状况为红色,而我甚至没有创build任何索引。 用我得到的集群健康命令:

{ "cluster_name" : "dev-es-cluster", "status" : "red", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 1, "active_primary_shards" : 0, "active_shards" : 0, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : "NaN" } 

我确切地说,我可以显示节点,因为我得到:

 ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 10.108.9.42 5 45 11 0.25 0.08 0.03 di - yCCa4Wy 10.108.11.40 5 60 11 0.47 0.19 0.09 i - 2CDtId8 10.108.10.31 5 46 13 0.22 0.11 0.03 mi * hDEIzTz 

但是当我尝试创build索引时,我得到:

 { "error":{ "root_cause":[ { "type":"cluster_block_exception", "reason":"blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];" } ], "type":"master_not_discovered_exception", "reason":"ClusterBlockException[blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];]", "caused_by":{ "type":"cluster_block_exception", "reason":"blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];" } }, "status":503 } 

这是我的configuration文件:

elasticsearch.yml:

 # settings elasticsearch.yml cluster: name: ${CLUSTER_NAME} node: master: ${NODE_MASTER} data: ${NODE_DATA} network.host: 0.0.0.0 http.port: 9200 transport.tcp.port: 9300 xpack.security.enabled: false xpack.watcher.enabled: false xpack.monitoring.enabled: false xpack.ml.enabled: false http: enabled: ${HTTP_ENABLE} compression: true cloud: kubernetes: service: elasticsearch-discovery namespace: ${NAMESPACE} discovery.zen.hosts_provider: kubernetes gateway.recover_after_nodes: ${NUMBER_OF_NODES} 

Dockerfile:

 FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.0 RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install io.fabric8:elasticsearch-cloud-kubernetes:5.5.0 ADD ./Dockerfiles/elasticsearch/prod/elasticsearch.yml /usr/share/elasticsearch/config/ ADD ./search/elastic/analysis /usr/share/elasticsearch/config/analysis USER root RUN chown elasticsearch:elasticsearch config/elasticsearch.yml USER elasticsearch EXPOSE 9200 

es-svc.yaml:

 apiVersion: v1 kind: Service metadata: name: elasticsearch namespace: dev-indexation labels: component: elasticsearch role: client spec: type: LoadBalancer selector: component: elasticsearch role: client ports: - name: http port: 9200 protocol: TCP 

es-discovery-svc.yaml:

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

es-client.yaml:

 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: es-client namespace: dev-indexation labels: component: elasticsearch role: client spec: template: metadata: labels: component: elasticsearch role: client spec: containers: - name: es-client securityContext: privileged: true capabilities: add: - IPC_LOCK # Set this to your own image if desired. image: gcr.io/cbien-1328/github-cbien-cbien-indexation/elastic:PR_57_v15_5.4.3 imagePullPolicy: Always env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: CLUSTER_NAME value: "dev-es-cluster" - name: NODE_MASTER value: "false" - name: NODE_DATA value: "false" - name: HTTP_ENABLE value: "true" - name: NUMBER_OF_NODES value: "9" ports: - containerPort: 9200 name: http protocol: TCP - containerPort: 9300 name: transport protocol: TCP resources: requests: memory: 2Gi volumeMounts: - name: storage mountPath: /data volumes: - emptyDir: medium: "" name: "storage" nodeSelector: cloud.google.com/gke-nodepool: dev-es-cluster 

es-master.yaml:

 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: es-master namespace: dev-indexation labels: component: elasticsearch role: master spec: template: metadata: labels: component: elasticsearch role: master spec: containers: - name: es-master securityContext: privileged: true capabilities: add: - IPC_LOCK # Set this to your own image if desired. image: gcr.io/cbien-1328/github-cbien-cbien-indexation/elastic:PR_57_v15_5.4.3 imagePullPolicy: Always env: - name: NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: "CLUSTER_NAME" value: "dev-es-cluster" - name: NODE_MASTER value: "true" - name: NODE_DATA value: "false" - name: HTTP_ENABLE value: "false" - name: NUMBER_OF_NODES value: "9" ports: - containerPort: 9300 name: transport protocol: TCP resources: requests: memory: 2Gi volumeMounts: - name: storage mountPath: /data volumes: - emptyDir: medium: "" name: "storage" nodeSelector: cloud.google.com/gke-nodepool: dev-es-cluster 

我确切地说我使用GCE。 我的Elasticsearch集群分布在4个物理机器的集群上,每个物理机器上有13个RAM,每个在debian上运行。 由于我的Elasticsearch映像包含XPack,因此我怀疑集群创build时观察者XPack索引出了问题。 这就是我禁用所有XPackfunction的原因。 但是我的集群在启动时仍然是红色的。

任何想法? 提前致谢!