【问题标题】:Getting error 'unknown field hostPath' Kubernetes Elasticsearch using with local volume与本地卷一起使用时出现错误“未知字段 hostPath”Kubernetes Elasticsearch
【发布时间】:2018-07-12 18:49:46
【问题描述】:

我正在尝试使用本地驱动器卷部署 elastic-search in kubernetes,但出现以下错误,请您纠正我。 使用 ubuntu 16.04 Kubernetes v1.11.0 Docker 版本 17.03.2-ce 与本地卷一起使用时出现错误“未知字段 hostPath”Kubernetes Elasticsearch

error: error validating "es-d.yaml": error validating data: ValidationError(StatefulSet.spec.template.spec.containers[1]): unknown field "hostPath" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false

这是statefulSet的yaml文件:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: es-data
  labels:
    component: elasticsearch
    role: data
spec:
  serviceName: elasticsearch-data
  replicas: 1
  template:
    metadata:
      labels:
        component: elasticsearch
        role: data
    spec:
      initContainers:
      - name: init-sysctl
        image: alpine:3.6
        command:
        - sysctl
        - -w
        - vm.max_map_count=262144
        securityContext:
          privileged: true
      containers:
      - name: es-data
        image: quay.io/pires/docker-elasticsearch-kubernetes:6.3.0
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: CLUSTER_NAME
          value: myesdb
        - name: NODE_MASTER
          value: "false"
        - name: NODE_INGEST
          value: "false"
        - name: HTTP_ENABLE
          value: "true"
        - name: ES_JAVA_OPTS
          value: -Xms256m -Xmx256m
        - name: PROCESSORS
          valueFrom:
            resourceFieldRef:
              resource: limits.cpu
        resources:
          requests:
            cpu: 0.25
          limits:
            cpu: 1
        ports:
        - containerPort: 9200
          name: http
        - containerPort: 9300
          name: transport
        livenessProbe:
          tcpSocket:
            port: transport
          initialDelaySeconds: 20
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /_cluster/health
            port: http
          initialDelaySeconds: 20
          timeoutSeconds: 5
        volumeMounts:
        - name: storage
          mountPath: /es
        volumes:
      - name: storage

【问题讨论】:

    标签: elasticsearch kubernetes


    【解决方案1】:

    你有错误的结构。 volumes 必须与containersinitContainers 处于同一级别。

    apiVersion: apps/v1beta1
    kind: StatefulSet
    metadata:
      name: es-data
      labels:
        component: elasticsearch
        role: data
    spec:
      serviceName: elasticsearch-data
      replicas: 1
      template:
        metadata:
          labels:
            component: elasticsearch
            role: data
        spec:
          initContainers:
          - name: init-sysctl
            image: alpine:3.6
            command:
            - sysctl
            - -w
            - vm.max_map_count=262144
            securityContext:
              privileged: true
          containers:
          - name: es-data
            image: quay.io/pires/docker-elasticsearch-kubernetes:6.3.0
            env:
            - name: NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: CLUSTER_NAME
              value: myesdb
            - name: NODE_MASTER
              value: "false"
            - name: NODE_INGEST
              value: "false"
            - name: HTTP_ENABLE
              value: "true"
            - name: ES_JAVA_OPTS
              value: -Xms256m -Xmx256m
            - name: PROCESSORS
              valueFrom:
                resourceFieldRef:
                  resource: limits.cpu
            resources:
              requests:
                cpu: 0.25
              limits:
                cpu: 1
            ports:
            - containerPort: 9200
              name: http
            - containerPort: 9300
              name: transport
            livenessProbe:
              tcpSocket:
                port: transport
              initialDelaySeconds: 20
              periodSeconds: 10
            readinessProbe:
              httpGet:
                path: /_cluster/health
                port: http
              initialDelaySeconds: 20
              timeoutSeconds: 5
            volumeMounts:
            - name: storage
              mountPath: /es
          volumes:
          - name: storage
    

    你可以找到example here

    【讨论】:

    • 但是你确定,一旦容器重启,数据会一样吗?
    • 我需要弹性搜索每次都安全。
    • 您需要配置您的持久卷。详情请见akomljen.com/…。我还看到已经在源代码中配置了 volumeClaimTemplates,您的 yaml 来自:github.com/pires/kubernetes-elasticsearch-cluster/blob/master/…
    • 检查我上面提供的两个网址并根据您的需要配置存储
    • 其实,使用hostPath在节点中存储任何APP的数据 - 真的很糟糕
    【解决方案2】:

    检查你的格式,hostPath 不应该在容器部分,'volume'不在它的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-20
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多