kubernetes-helm:用 xfs 格式格式化 do-block-storage

kubernetes-helm: formating do-block-storage with xfs format

我正在尝试使用 do-block-storage 在 digitalocean 上使用 kubernetes-helm 创建 mongodb-replicaset。由于 mongodb 建议使用 xfs 格式,我尝试使用如下配置使用 xfs 格式化 do-block-storage,但它似乎没有用。你能帮我吗?谢谢。

persistentVolume:
  enabled: true
  ## mongodb-replicaset data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  storageClass: "do-block-storage"
  accessModes:
    - ReadWriteOnce
  size: 10Gi
  parameters:
    fsType: xfs
  annotations: {}

您的自定义参数 (values.yaml) 有两个问题:

  1. MongoDB 稳定的 Helm chart 对用户定义的字段一无所知:"parameters"。这是因为它根本没有在任何模板文件 (mongodb/templates/*.yaml) 中定义。在您的情况下,Helm 将呈现与此类似的文件:

volumeClaimTemplates: - metadata: name: datadir annotations: spec: accessModes: - "ReadWriteOnce" resources: requests: storage: "10Gi" storageClassName: "do-block-storage"

  1. 您不能在 volumeClaimTemplates 中指定 "fsType",尽管它曾经被请求过(参见 this github 问题)。

我可以看到两种可能的解决方法来解决您的问题:

  1. 使用默认 xfs 文件系统格式的单独 StorageClass,然后在 helm chart 的值中引用它的名称,例如创建 do-block-storage-xfs StorageClass 如下:

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: do-block-storage-xfs namespace: kube-system annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: com.digitalocean.csi.dobs parameters: fstype: xfs

  1. 在K8S中预先在DigitalOcean中创建一个xfs fsType & PVC的Persistent Volume,并在Helm chart中将其作为现有PVC引用(参见persistence.existingClaim可配置参数 here)