elasticsearch - 如何在Kubernetes上编辑path.data和path.log以进行Elasticsearch?

标签 elasticsearch kubernetes

我制作了一个es-deploy.yml文件,然后键入了path.logpath.data值。

创建Pod之后,我检查了该目录,然后什么也没有。

设置无效!

如何在Kubernetes上编辑path.datapath.log进行Elasticsearch!

我也尝试使用PATH_DATA

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: es
  labels:
    component: elasticsearch
spec:
  replicas: 1
  template:
    metadata:
      labels:
        component: elasticsearch
    spec:
      serviceAccount: elasticsearch
      initContainers:
        - name: init-sysctl
          image: busybox
          imagePullPolicy: IfNotPresent
          command: ["sysctl", "-w", "vm.max_map_count=262144"]
          securityContext:
            privileged: true
      containers:
        - name: es
          securityContext:
            capabilities:
              add:
                - IPC_LOCK
          image: docker.elastic.co/elasticsearch/elasticsearch:7.3.0
          env:
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: "CLUSTER_NAME"
              value: "myesdb"
            - name: "DISCOVERY_SERVICE"
              value: "elasticsearch"
            - name: NODE_MASTER
              value: "true"
            - name: NODE_DATA
              value: "true"
            - name: HTTP_ENABLE
              value: "true"
            - name: ES_JAVA_OPTS
              value: "-Xms256m -Xmx256m"
            - name: "path.data"
              value: "/data/elk/data"
            - name: "path.logs"
              value: "/data/elk/log"
          ports:
            - containerPort: 9200
              name: http
              protocol: TCP
            - containerPort: 9300
              name: transport
              protocol: TCP
          volumeMounts:
            - mountPath: /data/elk/

最佳答案

这些值path.datapath.logs不是环境变量。它们是config options

官方elasticsearch图像的默认path.data/usr/share/elasticsearch/data,基于ES_HOME=/usr/share/elasticsearch/的默认值。如果您不想使用该路径,则必须在elasticsearch.yaml配置中覆盖它。

您将必须创建一个ConfigMap,其中包含带有以下内容的elasticsearch.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: elasticsearch-config
  namespace: es
data:
  elasticsearch.yml: |
    cluster:
      name: ${CLUSTER_NAME:elasticsearch-default}

    node:
      master: ${NODE_MASTER:true}
      data: ${NODE_DATA:true}
      name: ${NODE_NAME}
      ingest: ${NODE_INGEST:true}
      max_local_storage_nodes: ${MAX_LOCAL_STORAGE_NODES:1}

    processors: ${PROCESSORS:1}

    network.host: ${NETWORK_HOST:_site_}

    path:
      data: ${DATA_PATH:"/data/elk"}
      repo: ${REPO_LOCATIONS:[]}

    bootstrap:
      memory_lock: ${MEMORY_LOCK:false}

    http:
      enabled: ${HTTP_ENABLE:true}
      compression: true
      cors:
        enabled: true
        allow-origin: "*"

    discovery:
      zen:
        ping.unicast.hosts: ${DISCOVERY_SERVICE:elasticsearch-discovery}
        minimum_master_nodes: ${NUMBER_OF_MASTERS:1}

    xpack:
      license.self_generated.type: basic

(请注意,上面的ConfigMap也将允许您使用DATA_PATH环境变量)

然后使用以下方法将卷装入Pod:
    volumeMounts:
        - name: storage
          mountPath: /data/elk
        - name: config-volume
          mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
          subPath: elasticsearch.yml

  volumes:
  - name: config-volume
    configMap:
      name: elasticsearch-config
  - name: storage
    <add-whatever-volume-you-are-using-for-data>

关于elasticsearch - 如何在Kubernetes上编辑path.data和path.log以进行Elasticsearch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57719710/

相关文章:

python - django-haystack 自动完成功能无法正常工作

java - Elasticsearch - Junit 测试(模拟或填充 SearchResponse)

docker - 通过docker、kubernetes和google云平台部署应用的步骤

amazon-web-services - 通过 AWS 上的 ELB 在 Kubernetes 上公开单个 Kafka 代理

Elasticsearch 排除对字段值的最高命中

c# - 如何通过使用日期作为 Elasticsearch 的字符串比较来获取文档?

docker - Kibana 容器到 elasticsearch 云身份验证错误

ssl - 隔离 Azure Kubernetes 服务 (AKS) SSL 错误

kubernetes - 如何在 Kubernetes 上使用 WebRTC 和 RTCPeerConnection?

mysql - Kubernetes:如何运行 MySQL 命令?