3.4. 持久性卷声明 (PVC)


每个 PersistentVolumeClaim 对象都会包括一个 specstatus,它们分别代表了声明的规格和状态。例如:

PersistentVolumeClaim 对象定义示例

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: myclaim 
1

spec:
  accessModes:
    - ReadWriteOnce 
2

  resources:
    requests:
      storage: 8Gi 
3

  storageClassName: gold 
4

status:
  ...
Copy to Clipboard Toggle word wrap

1
PVC 的名称。
2
访问模式,用来指定读写权限及挂载权限。
3
PVC 可用的存储量。
4
声明所需的 StorageClass 的名称。

3.4.1. 存储类

另外,通过在 storageClassName 属性中指定存储类的名称,声明可以请求一个特定的存储类。只有具有请求的类的 PV( storageClassName的值与 PVC 中的值相同)才会与 PVC 绑定。集群管理员可配置动态置备程序为一个或多个存储类提供服务。集群管理员可根据需要创建与 PVC 的规格匹配的 PV。

重要

根据使用的平台,Cluster Storage Operator 可能会安装一个默认的存储类。此存储类由 Operator 拥有和控制。不能在定义注解和标签之外将其删除或修改。如果需要实现不同的行为,则必须定义自定义存储类。

集群管理员也可以为所有 PVC 设置默认存储类。当配置了默认存储类时, PVC 必须明确要求将存储类 StorageClassstorageClassName设为 "", 以便绑定到没有存储类的 PV。

注意

如果一个以上的存储类被标记为默认,则只能在 storageClassName 被显式指定时才能创建 PVC。因此,应只有一个存储类被设置为默认值。

3.4.2. 访问模式

声明在请求带有特定访问权限的存储时,使用与卷相同的格式。

3.4.3. Resources

象 pod 一样,声明可以请求具体数量的资源。在这种情况下,请求用于存储。同样的资源模型适用于卷和声明。

3.4.4. 声明作为卷

pod 通过将声明作为卷来访问存储。在使用声明时,声明需要和 pod 位于同一个命名空间。集群在 pod 的命名空间中找到声明,并使用它来使用这个声明后台的PersistentVolume。卷被挂载到主机和 pod 中,例如:

挂载卷到主机和 pod 示例

kind: Pod
apiVersion: v1
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: dockerfile/nginx
      volumeMounts:
      - mountPath: "/var/www/html" 
1

        name: mypd 
2

  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim 
3
Copy to Clipboard Toggle word wrap

1
在 pod 中挂载卷的路径。
2
要挂载的卷的名称。不要挂载到容器 root、/ 或主机和容器中相同的任何路径。如果容器有足够权限,可能会损坏您的主机系统(如主机的 /dev/pts 文件)。使用 /host 挂载主机是安全的。
3
要使用的 PVC 名称(存在于同一命名空间中)。

3.4.5. 查看 PVC 用量统计

您可以查看持久性卷声明 (PVC) 的用量统计。

重要

PVC usage statistics 命令只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

3.4.5.1. 查看 PVC 用量统计所需的用户权限

要查看 PVC 用量统计,您必须具有所需的权限。

使用所需权限登录:

  • 如果您有 admin 特权,请以 admin 身份登录。
  • 如果您没有 admin 权限:

    1. 运行以下命令,创建并向用户添加集群角色:

      $ oc create clusterrole routes-view --verb=get,list --resource=routes
      $ oc adm policy add-cluster-role-to-user routes-view <user-name> 
      1
      
      $ oc adm policy add-cluster-role-to-user cluster-monitoring-view <user-name> 
      2
      Copy to Clipboard Toggle word wrap
      1 2
      用户名称。

3.4.5.2. 查看 PVC 用量统计

  • 要查看集群中的统计信息,请运行以下命令:

    $ oc adm top pvc -A
    Copy to Clipboard Toggle word wrap

    命令输出示例

    NAMESPACE     NAME         USAGE(%)
    namespace-1   data-etcd-1  3.82%
    namespace-1   data-etcd-0  3.81%
    namespace-1   data-etcd-2  3.81%
    namespace-2   mypvc-fs-gp3 0.00%
    default       mypvc-fs     98.36%
    Copy to Clipboard Toggle word wrap

  • 要查看指定命名空间的 PVC 用量统计,请运行以下命令:

    $ oc adm top pvc -n <namespace-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    其中 <namespace-name> 是指定命名空间的名称。

    命令输出示例

    NAMESPACE     NAME        USAGE(%)
    namespace-1   data-etcd-2 3.81% 
    1
    
    namespace-1   data-etcd-0 3.81%
    namespace-1   data-etcd-1 3.82%
    Copy to Clipboard Toggle word wrap

    1
    在本例中,指定的命名空间是 namespace-1
  • 要查看指定 PVC 和指定命名空间的用量统计,请运行以下命令:

    $ oc adm top pvc <pvc-name> -n <namespace-name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    其中 <pvc-name> 是指定的 PVC 的名称,<namespace-name> 是指定命名空间的名称。

    命令输出示例

    NAMESPACE   NAME        USAGE(%)
    namespace-1 data-etcd-0 3.81% 
    1
    Copy to Clipboard Toggle word wrap

    1
    在本例中,指定的命名空间是 namespace-1,指定的 PVC 是 data-etcd-0
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat