首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为K8S中的Elasticsearch集群中的不同pod配置不同的存储挂载?

如何为K8S中的Elasticsearch集群中的不同pod配置不同的存储挂载?
EN

Stack Overflow用户
提问于 2021-09-21 07:02:30
回答 1查看 608关注 0票数 0

我正在将Elasticsearch集群部署到带有nodegroup的EKS上的K8S。我为集群的存储申请了一个EBS。当我启动集群时,只有一个吊舱成功运行,但对于其他吊舱,我得到了以下错误:

代码语言:javascript
复制
 Warning  FailedAttachVolume  3m33s                  attachdetach-controller  Multi-Attach error for volume "pvc-4870bd46-2f1e-402a-acf7-005de83e4588" Volume is already used by pod(s) es-0
  Warning  FailedMount         90s                    kubelet                  Unable to attach or mount volumes: unmounted volumes=[persistent-storage], unattached volumes=[es-config persistent-storage default-token-pqzkp]: timed out waiting for the condition

这意味着储藏室已经在使用。我知道这卷书是由第一舱使用,所以其他豆荚不能使用它。但我不知道如何使用不同的挂载路径,为不同的吊舱,当他们使用相同的EBS音量。

下面是集群的完整规范。

代码语言:javascript
复制
apiVersion: v1
kind: ConfigMap
metadata:
  name: es-config
data:
  elasticsearch.yml: |
    cluster.name: elk-cluster
    network.host: "0.0.0.0"
    bootstrap.memory_lock: false
    # discovery.zen.minimum_master_nodes: 2
    node.max_local_storage_nodes: 9
    discovery.seed_hosts:
      - es-0.es-entrypoint.default.svc.cluster.local
      - es-1.es-entrypoint.default.svc.cluster.local
      - es-2.es-entrypoint.default.svc.cluster.local
  ES_JAVA_OPTS: -Xms4g -Xmx8g
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: es
  namespace: default
spec:
  serviceName: es-entrypoint
  replicas: 3
  selector:
    matchLabels:
      name: es
  template:
    metadata:
      labels:
        name: es
    spec:
      volumes:
        - name: es-config
          configMap:
            name: es-config
            items:
              - key: elasticsearch.yml
                path: elasticsearch.yml
        - name: persistent-storage
          persistentVolumeClaim:
            claimName: ebs-claim
      initContainers:
        - name: permissions-fix
          image: busybox
          volumeMounts:
            - name: persistent-storage
              mountPath: /usr/share/elasticsearch/data
          command: [ 'chown' ]
          args: [ '1000:1000', '/usr/share/elasticsearch/data' ]
      containers:
        - name: es
          image: elasticsearch:7.10.1
          resources:
            requests:
              cpu: 2
              memory: 8Gi
          ports:
            - name: http
              containerPort: 9200
            - containerPort: 9300
              name: inter-node
          volumeMounts:
            - name: es-config
              mountPath: /usr/share/elasticsearch/config/elasticsearch.yml
              subPath: elasticsearch.yml
            - name: persistent-storage
              mountPath: /usr/share/elasticsearch/data
---
apiVersion: v1
kind: Service
metadata:
  name: es-entrypoint
spec:
  selector:
    name: es
  ports:
    - port: 9200
      targetPort: 9200
      protocol: TCP
  clusterIP: None
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-21 07:09:09

您应该使用状态集的volumeClaimTemplates,以便每个吊舱都有自己的音量。详细信息

代码语言:javascript
复制
volumeClaimTemplates:
- metadata:
    name: es
  spec:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 5Gi
    # storageClassName: <omit to use default StorageClass or specify>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69264664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档