我试图在RHEL 8机器上将木星中心(Zero to Hero)部署到我的本地Kubernetes上。经过几个小时的尝试,基本服务现在正在运行。我为主服务创建了一个pv,它运行得很好。
Name: hub-db-dir
Labels: <none>
Annotations: pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pv-protection]
StorageClass: local-storage
Status: Bound
Claim: jupyter/hub-db-dir
Reclaim Policy: Retain
Access Modes: RWO
VolumeMode: Filesystem
Capacity: 5Gi
Node Affinity:
Required Terms:
Term 0: kubernetes.io/hostname in [host]
Message:
Source:
Type: LocalVolume (a persistent volume backed by local storage on a node)
Path: /temp
Events: <none>但是,一旦登录,我就会收到以下消息:屏幕截图
我发现K8不会自己创建一个新的pv。即使我创建了一个(具有适当名称),它也会失败。
有人有办法解决这个问题吗?
我的StorageClass:
Name: local-storage
IsDefaultClass: Yes
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"},"name":"local-storage"},"provisioner":"kubernetes.io/no-provisioner","volumeBindingMode":"WaitForFirstConsumer"}
,storageclass.kubernetes.io/is-default-class=true
Provisioner: kubernetes.io/no-provisioner
Parameters: <none>
AllowVolumeExpansion: <unset>
MountOptions: <none>
ReclaimPolicy: Delete
VolumeBindingMode: WaitForFirstConsumer
Events: <none>发布于 2021-06-21 14:02:14
根据你提供的信息:
provisioner: kubernetes.io/no-provisioner根据:https://kubernetes.io/docs/concepts/storage/storage-classes/#local
本地卷目前不支持动态配置,但是仍然应该创建一个StorageClass来将卷绑定延迟到Pod调度。这是由WaitForFirstConsumer卷绑定模式指定的。
在云提供商上,我也遇到过类似的问题,即卷不支持配置的某些(标准)部分,因此不按预期提供。替代方法是使用不同的存储方法(云对象存储/S3/etc或数据库)。
另见:
https://kubernetes.io/docs/concepts/storage/volumes/#local
在使用本地卷时,必须设置PersistentVolume nodeAffinity。Kubernetes调度程序使用PersistentVolume nodeAffinity将这些Pods调度到正确的节点。
发布于 2021-06-22 07:34:07
通常,您可以从Kubernetes文档开始。这里,您可以找到存储类概念。您还将找到以某种方式支持哪些解决方案的信息。必须指定此字段。您在RHEL 8机器中使用本地Kubernetes,因此本地卷可以帮助您。
请看下面的例子:
apiVersion: v1
kind: PersistentVolume
metadata:
name: example-pv
spec:
capacity:
storage: 100Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
storageClassName: local-storage
local:
path: /mnt/disks/ssd1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- example-node这个例子显示了一个使用PersistentVolume卷和nodeAffinity的nodeAffinity。在使用PersistentVolume卷时,需要设置local卷。还建议创建一个StorageClass,将volumeBindingMode设置为WaitForFirstConsumer。
本地卷目前不支持动态配置,但是仍然应该创建一个StorageClass来将卷绑定延迟到Pod调度。这是由WaitForFirstConsumer卷绑定模式指定的。
延迟卷绑定允许调度程序在为PersistentVolume选择合适的PersistentVolumeClaim时考虑到Pod的所有调度约束。
如果您正在寻找为裸金属集群配置存储的完整指南,您可以找到它这里。正如我前面提到的,本地卷目前不支持动态配置。但是,您可以通过使用NFS来解决这个问题。
nfs卷允许将现有的NFS (网络文件系统)共享挂载到Pod中。与emptyDir不同的是,当Pod被移除时会被擦除,nfs卷的内容会被保留,而卷只是被卸载。这意味着NFS卷可以预先填充数据,数据可以在荚之间共享。NFS可以由多个写入器同时挂载。注意:您必须有自己的NFS服务器运行,然后才能使用导出的共享。
https://stackoverflow.com/questions/68069226
复制相似问题