我有一个存储类:
kubectl describe storageclass my-local-storage
Name: my-local-storage
IsDefaultClass: No
Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"my-local-storage"},"provisioner":"kubernetes.io/no-provisioner","volumeBindingMode":"WaitForFirstConsumer"}
Provisioner: kubernetes.io/no-provisioner
Parameters: <none>
AllowVolumeExpansion: <unset>
MountOptions: <none>
ReclaimPolicy: Delete
VolumeBindingMode: WaitForFirstConsumer
Events: <none>
Run Code Online (Sandbox Code Playgroud)
持久卷
kubectl describe pv my-local-pv
Name: my-local-pv
Labels: <none>
Annotations: pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pv-protection]
StorageClass: my-local-storage
Status: Bound
Claim: default/my-claim
Reclaim Policy: Retain
Access Modes: RWO
VolumeMode: Filesystem
Capacity: 1Mi
Node Affinity:
Required Terms:
Term 0: kubernetes.io/hostname in [kubenode2]
Message:
Source:
Type: LocalVolume (a persistent volume backed by local storage on a node)
Path: /home/node/serviceLogsNew
Events: <none>
Run Code Online (Sandbox Code Playgroud)
持久卷声明
node@kubemaster:~/Desktop$ kubectl describe pvc my-claim
Name: my-claim
Namespace: default
StorageClass: my-local-storage
Status: Bound
Volume: my-local-pv
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 1Mi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: podname-deployment-897d6947b-hnvvq
podname-deployment-897d6947b-q4f79
Events: <none>
Run Code Online (Sandbox Code Playgroud)
现在,我创建了一个容量为 1Mi 的持久卷。
我正在运行 2 个使用 PVC 连接到 PV 的豆荚。Pod 正在创建日志文件。用于 PV 的文件夹 (/home/node/serviceLogsNew) 中的文件大小增加到 5 MB。仍然一切正常。
那么,在使用本地 PV / PVC 时会忽略容量吗?可配置吗?
请看一下这个github 问题。我相信这个评论也回答了你的问题:
这是按预期工作的,kube 不能/不会强制执行 PV 的容量,PV 上的容量字段只是一个标签。由“管理员”(即 PV 的创建者)对其进行准确标记,以便当用户创建需要 >= X Gi 的 PVC 时,他们会得到他们想要的。
此建议对您的情况也可能有用:
...如果您想要使用主机路径的硬容量边界,那么您应该创建一个具有您需要的大小的分区,或者使用文件系统配额。
如果这只是临时数据,那么您可以考虑使用 emptyDir 卷。从 1.7 开始,您可以指定容量限制,如果超过限制,kubelet 将驱逐您的 pod。
报告该问题的人实际上使用了hostPath卷类型,但本地工作几乎相同,并且capacity在PV定义中设置时,这里应用了相同的规则。Kubernetes没有任何机制可以在您挂载到Podfrom的目录上强制执行特定的磁盘配额node。
请注意,在您的PV定义中,您可以设置capacity比底层磁盘的实际容量高得多的a 。这样的PV创建不会有任何错误,并且可以使用,允许您将数据写入到其实际最大容量。
虽然capacity在PV定义上只是一个标签,PVC但它是一个有点不同的故事。在此上下文capacity中可以解释为对特定最小容量的请求。如果您的存储供应商能够满足您的请求,则将供应存储。如果它无法为您提供声明中定义的最小容量的存储,则不会对其进行配置。
假设您已经PV根据主机/节点上的特定目录定义了一个容量为150Gi. 如果您定义了PVC您声明的151Gi,则不会像PV声明的那样提供存储capacity(无论它是真实的还是某些虚构的值)将无法满足我们的PVC. 因此,在 的情况下PVC,capacity可以将其解释为一种约束,但它仍然无法强制/限制实际可用底层存储的使用。
不要忘记,一个当地的体积代表了安装本地存储设备,如磁盘,分区或目录,所以它不是唯一的,你可以使用的目录。它可以是例如您的/dev/sdb磁盘或/dev/sda5分区。您还可以决定使用具有严格定义容量的 LVM 分区。
| 归档时间: |
|
| 查看次数: |
467 次 |
| 最近记录: |