kubernetes - 如何为 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
解决方案
弄清楚了。
首先有一个错字Statefultset.yml
应该是storage
而不是stroage
。
其次,不需要,PersistentVolumeClaim
因为volumeClaimTemplates
与存储类要求的相同。
推荐阅读
- hyperledger-fabric - org1 添加资产需要组织 3 的批准(资产数据应由 ORG3 检查数据是否有效)
- php - 搜索带有部分和完整单词的正则表达式单词边界
- spring - Spring Boot 2.0 或更高版本中的 Spring Boot + Hibernate 集成(不是 spring Data JPA)
- facebook - 对于部署到heroku上的应用程序,我要为“应用程序域”插入什么
- python - 使用 smptlib 登录我的 gmail 帐户时出现身份验证错误
- python - 网格搜索 Keras 时出错
- c# - 在 C# 中,当异常出现在希伯来语中时,它反转了 - 如何解决?
- android - 网页浏览。键盘在表单上自动关闭
- python - Django 1.10 Legacy Database - 无法检索对象
- javascript - 基于按钮单击的标记选择