我正在尝试将存储类附加到由单个用户 pod 为 kubeflow 中的 jupyter 笔记本创建的所有 PVC 请求。
我尝试编辑一些值并指定 storage_class。但它都不起作用,每当出现新的 pvc 时,它都没有存储类名称。
期望的结果是,每当一个 pvc 的用户 pod 出现时,它应该附有存储类的名称。请帮助解决这个问题。我从最后一天就被困住了
我正在尝试将存储类附加到由单个用户 pod 为 kubeflow 中的 jupyter 笔记本创建的所有 PVC 请求。
我尝试编辑一些值并指定 storage_class。但它都不起作用,每当出现新的 pvc 时,它都没有存储类名称。
期望的结果是,每当一个 pvc 的用户 pod 出现时,它应该附有存储类的名称。请帮助解决这个问题。我从最后一天就被困住了
您需要在集群中有一个默认存储类,因此如果 pvc 未指定任何存储类,则将选择默认存储类。
列出集群中的 StorageClasses:
kubectl get storageclass
将 StorageClass 标记为默认值:设置注解 storageclass.kubernetes.io/is-default-class=true。
kubectl patch storageclass <your-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
这是更改默认存储类的详细步骤
基于文档
虽然PersistentVolumeClaims允许用户使用抽象存储资源,但对于不同的问题,用户通常需要具有不同属性(例如性能)的PersistentVolume 。集群管理员需要能够提供各种不同的PersistentVolume,而不仅仅是大小和访问模式,而不是让用户了解这些卷是如何实现的细节。对于这些需求,有StorageClass资源。
PersistentVolume (PV) 是集群中的一块存储,由管理员配置或使用存储类动态配置。
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: <name_of_your_StorageClass>
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
PersistentVolumeClaim (PVC) 是用户的存储请求。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: <name_of_your_StorageClass>
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
然后你可以创建一个使用你的 PVC 作为卷的 Pod(它使用 PV 和 storageClass)
apiVersion: v1
kind: Pod
metadata:
name: task-pv-pod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
containers:
- name: task-pv-container
image: nginx
ports:
- containerPort: 80
name: "http-server"
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: task-pv-storage
在您要创建 PV 之前,PVC StorageClass必须已经存在,如果它不是默认的,则将使用它来代替。
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: <name_of_your_StorageClass>
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
reclaimPolicy: Retain
allowVolumeExpansion: true
mountOptions:
- debug
volumeBindingMode: Immediate
您可以使用以下命令检查您的 StorageClasses:
kubectl get sc