1

我正在尝试将存储类附加到由单个用户 pod 为 kubeflow 中的 jupyter 笔记本创建的所有 PVC 请求。

我尝试编辑一些值并指定 storage_class。但它都不起作用,每当出现新的 pvc 时,它都没有存储类名称。

期望的结果是,每当一个 pvc 的用户 pod 出现时,它应该附有存储类的名称。请帮助解决这个问题。我从最后一天就被困住了

4

2 回答 2

3

您需要在集群中有一个默认存储类,因此如果 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"}}}'

这是更改默认存储类的详细步骤

于 2019-09-17T08:46:41.567 回答
0

基于文档

虽然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
于 2019-09-17T12:09:27.637 回答