elasticsearch 为什么它抱怨“卷声明模板只能增加其存储请求”?

zpqajqem  于 7个月前  发布在  ElasticSearch
关注(0)|答案(3)|浏览(61)

我正在AWS EKS中的Kubernetes上部署Elasticsearch集群。我的规范是:

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: es
spec:
  version: 7.14.0
  nodeSets:
  - name: node
    count: 2
    config:
      node.store.allow_mmap: false
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: ebs-sc
        resources:
          requests:
            storage: 1024Gi

字符串
当我部署时,我得到了这个错误:
第一个月
规范包括volumeClaimTemplates,它用于声明持久存储。我不明白为什么它说volume claim templates can only have their storage requests increased, if the storage class allows volume expansion
我已经检查了PVC是空的:

$ kubectl get pvc
No resources found in default namespace.


我有下面的存储类规范:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ebs-sc
provisioner: ebs.csi.aws.com
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

jm2pwxwz

jm2pwxwz1#

另一个答案是正确的,K8s不知道如何更改存储类,同时保留数据,因为卷也必须更改。
通过更改nodeset名称,旧的nodeset将消失,而新的nodeset将能够从干净的状态中产生(假设您可以不保留旧pod中的数据)。
您可以首先将节点集重命名为新名称,让K8刷新并生成新的pod,然后将节点集重命名为原始名称并重复。

zpjtge22

zpjtge222#

如果有人点击了这个和其他注意事项:如果你在初始部署时没有为elasticsearch-data添加正确的volumeClaimTemplate到列表中,那么你最终会处于无法增加卷大小的状态。解决方法是通过kubectl简单地增加卷大小,让kubernetes处理它。这个Operator目前仍然有一些限制。

vsdwdz23

vsdwdz233#

第一个月
使用ECK,当您应用了引用了允许卷扩展的RISK Class的spec时,您可以增加存储大小并重新应用spec。除此之外,volumeClaimTemplates部分不允许进行其他更改**。如果您必须更改volumeClaimTemplates(例如引用不同的RISK Class,减少存储大小),您还需要将名称重命名为nodeSets并重新应用spec。示例:

...
spec:
  ...
  nodeSets:
  - name: <CHANGEME!>  # <-- MUST change if not a simple size increase
    ...
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        resources:
          requests:
            storage: <xxxGi>  # <-- Can be increased if StorageClass supports expansion. To decrease the nodeSets name MUST be changed.
        storageClassName:<changeable only if nodeSets name is changed>

字符串

相关问题