在 Kubernetes 上部署弹性搜索

Deploy Elastic search on Kubernetes

我已经拉取了一个 ES 镜像,并且 运行 在一个主机中。 效果很好。

 docker pull elasticsearch
 docker run -t  -p 9200:9200 -p 9300:9300 --rm elasticsearch

我需要在 kubernetes 中有相同的 ES 镜像。

我创建了一个 kubernetes 集群如下:

gcloud container clusters create elasticsearch --num-nodes=1

我写了一个清单文件(elasticsearch.yaml)如下:

apiVersion: v1
kind: ReplicationController
metadata:
  name: elasticsearch
spec:
  replicas: 2
  selector:
    app: elasticsearch
  template:
    metadata:
      name: elasticsearch
      labels:
        app: elasticsearch
    spec:
       containers:
         - name: elasticsearch
           image: elasticsearch
           ports:
             - containerPort: 9200
             - containerPort: 9300

创建如下 rc:

kubectl create -f elasticsearch.yaml

kubectl get pods

它显​​示 imagebackoff 错误

kubectl get rc

显示未就绪

如何在一个服务器集群中使用 2 pods 在 Kubernetes 中部署此 ES 映像

嗯,ES 的官方镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.4

如文档所述。 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

如果您只使用 elasticsearch,kubernetes 会假定您使用的是本地注册表,我想您不想那样做。

另外如果你 运行

kubectl describe pods <POD_NAME>

您可以很容易地发现是否存在拉取图像的问题。 如果拉取图像没有问题,则很可能 pods 内部存在问题。我的建议是,使用日志命令检查发生了什么。

在你的清单elasticsearch.yaml中,你需要指定ES镜像的版本:

...
spec:
       containers:
         - name: elasticsearch
           image: elasticsearch:5.6.9