You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OpenShiftClient或oc CLI获取PVC的Used列数据?

获取OpenShift PVC的已用空间(Used)值

用oc CLI提取已用空间

OCP界面的「Used」列数据,多数情况下可通过PVC的status.usedCapacity字段直接获取,用自定义列输出即可:

oc get pvc -o custom-columns=NAME:.metadata.name,STATUS:.status.phase,CAPACITY:.spec.resources.requests.storage,USED:.status.usedCapacity

若你的OCP版本中PVC无usedCapacity字段,可通过PVC绑定的PV获取已用空间——PV的status.used字段会存储对应数据,用脚本批量查询:

oc get pvc -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.resources.requests.storage}{"\t"}{.status.phase}{"\t"}{.status.volumeName}{"\n"}{end}' | while read pvc_name capacity phase pv_name; do
  used=$(oc get pv "$pv_name" -o jsonpath='{.status.used}' 2>/dev/null)
  echo "PVC: $pvc_name | Status: $phase | Capacity: $capacity | Used: ${used:-N/A}"
done

用OpenShiftClient获取已用空间

以Java版OpenShiftClient为例,获取逻辑和CLI一致:优先从PVC本身读取,若字段不存在则关联查询绑定的PV:

import io.fabric8.openshift.client.OpenShiftClient;
import io.fabric8.kubernetes.api.model.PersistentVolumeClaim;
import io.fabric8.kubernetes.api.model.PersistentVolume;
import java.util.List;

public class PvcUsedQuery {
    public static void main(String[] args) {
        try (OpenShiftClient openshiftClient = new OpenShiftClient()) {
            List<PersistentVolumeClaim> pvcs = openshiftClient.persistentVolumeClaims().list().getItems();
            
            for (PersistentVolumeClaim pvc : pvcs) {
                String pvcName = pvc.getMetadata().getName();
                String status = pvc.getStatus().getPhase();
                String capacity = pvc.getSpec().getResources().getRequests().get("storage").toString();
                String used = "N/A";
                
                // 尝试从PVC直接获取已用空间
                if (pvc.getStatus() != null && pvc.getStatus().getUsedCapacity() != null) {
                    used = pvc.getStatus().getUsedCapacity().toString();
                } else {
                    // 关联查询绑定的PV
                    String pvName = pvc.getStatus().getVolumeName();
                    if (pvName != null) {
                        PersistentVolume pv = openshiftClient.persistentVolumes().withName(pvName).get();
                        if (pv != null && pv.getStatus() != null && pv.getStatus().getUsed() != null) {
                            used = pv.getStatus().getUsed().toString();
                        }
                    }
                }
                
                System.out.printf("PVC: %s | Status: %s | Capacity: %s | Used: %s%n", pvcName, status, capacity, used);
            }
        }
    }
}

注意:已用空间数据的可用性取决于存储类是否支持容量监控,部分存储后端可能无法返回该值,此时会显示N/A。

内容的提问来源于stack exchange,提问作者alm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:17:40