首页 > 解决方案 > 如何为 StateFulSet 使用存储类?我必须创建 PVC 吗?

问题描述

如何为 statefulset 使用存储类?我已经创建了 StorageClass。我还创建了 PVC,但如果需要创建 PVC,我有点困惑,因为 PVC 已经请求存储并且 volumeClaimTemplates 也请求存储。无论哪种方式,它都不能使用或不使用 pvc。

我收到以下错误:

create Pod dbhost001-0 in StatefulSet dbhost001 failed error: failed to create PVC mysql-dev-dbhost001-0: PersistentVolumeClaim "mysql-dev-dbhost001-0" is invalid: spec.resources[storage]: Required value
create Claim mysql-dev-dbhost001-0 for Pod dbhost001-0 in StatefulSet dbhost001 failed error: PersistentVolumeClaim "mysql-dev-dbhost001-0" is invalid: spec.resources[storage]: Required value

storageClass.yml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-sc
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer

Statefultset.yml

apiVersion: apps/v1
kind: StatefulSet
....
....
  volumeClaimTemplates:
  - metadata:
      name: mysql-dev
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: ebs-sc
      resources:
        requests:
          stroage: 2Gi

我不确定是否需要pvc?我将它用于正常的副本集部署。但不确定 Statefulset 是否需要这个。

PersistentVolumeClaim.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-dev
  namespace: test-db-dev
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ebs-sc
  resources:
    requests:
      storage: 2Gi

标签: kuberneteskubernetes-statefulset

解决方案


弄清楚了。

首先有一个错字Statefultset.yml应该是storage而不是stroage

其次,不需要,PersistentVolumeClaim因为volumeClaimTemplates与存储类要求的相同。


推荐阅读