【问题标题】:pod has unbound immediate PersistentVolumeClaims ECK (Elasticsearch on Kubernetes)pod 有未绑定的即时 PersistentVolumeClaims ECK(Kubernetes 上的 Elasticsearch)
【发布时间】:2020-11-03 17:56:55
【问题描述】:

我正在尝试在本地 minikube 集群上的 kubernetes https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html 上部署弹性。我已经安装了算子。

当我应用下面的 elasticsearch 集群时,我得到以下 pod 错误:

为 pod "data-es-es-default-0" 运行 "VolumeBinding" 过滤插件: pod 有未绑定的立即 PersistentVolumeClaims

数量/声明:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: elasticsearch-data
  labels:
    type: local
spec:
  storageClassName: standard
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

--

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: elasticsearch-data
spec:
  storageClassName: standard
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

elastic.yml

apiVersion: elasticsearch.k8s.elastic.co/v1beta1
kind: Elasticsearch
metadata:
  name: data-es
spec:
  version: 7.4.2
  nodeSets:
  - name: default
    count: 2
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        storageClassName: standard
        resources:
          requests:
            storage: 10Gi
    config:
      node.master: true
      node.data: true
      node.ingest: true
      node.store.allow_mmap: false
      xpack.security.authc.realms:
        native:
          native1: 
            order: 1
---
apiVersion: kibana.k8s.elastic.co/v1beta1
kind: Kibana
metadata:
  name: data-kibana
spec:
  version: 7.4.2
  count: 1
  elasticsearchRef:
    name: data-es

kubectl 获取 pvc

【问题讨论】:

    标签: elasticsearch kubernetes


    【解决方案1】:

    pod 有未绑定的即时 PersistentVolumeClaims

    以上错误意味着没有persistentVolume可以绑定到PersistentVolumeClaim。默认情况下,local-storage 不会真正动态创建persistentVolume

    要使用local-storage 存储类的动态配置机制,您需要配置local-storage 类,以便它可以配置persistentVolume。检查此讨论Kubernetes: What is the best practice for create dynamic local volume to auto assign PVs for PVCs?

    或者,不使用存储类的动态配置机制,您需要使用hostPath 创建一个persistentVolume,它可以绑定到PersistentVolumeClaim。但这不是生产使用的推荐解决方案。查看本指南here

    PersistentVolumeClaim 将基于弹性 yaml 中的volumeClaimTemplates 自动创建。因此,您不应该创建一个 PersistentVolumeClaim.

    由于 nodeSets 计数为 2,因此创建了两个 PersistentVolumeClaim。所以你需要创建两个persistentVolume

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: elasticsearch-data1
      labels:
        type: local
    spec:
      storageClassName: standard
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    ---
    
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: elasticsearch-data2
      labels:
        type: local
    spec:
      storageClassName: standard
      capacity:
        storage: 10Gi
      accessModes:
        - ReadWriteOnce
      hostPath:
        path: "/mnt/data"
    

    【讨论】:

    • 你能给我一些关于如何在没有动态配置的情况下做到这一点的文档吗?
    • 所以我做到了,但不幸的是我的弹性搜索仍然显示为 pod 有未绑定的即时 PersistentVolumeClaims
    • 更新的问题,即使添加了 PersistantVolume 并声明仍然同样的错误
    • 我不明白为什么,因为弹性会自动创建那些额外的 2 pvc
    • 是的...它正在自动创建 pvc..现在因为您创建了一个彼此绑定的 PV 和 PVC..这两个 PVC 现在正在等待处理。所以删除手动创建的 PVC 并只创建两个 PV
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 2022-10-18
    • 2021-01-06
    • 2020-12-27
    • 2019-03-11
    • 2020-12-19
    • 2021-04-07
    • 2020-08-31
    相关资源
    最近更新 更多