我正在尝试监控Kubernetes PVC磁盘使用情况。我需要用于持久卷声明的内存。我找到了命令:
kubectl get --raw /API/v1/persistentvolumeclaims| JQ
返回:
"status":{
"phase":"Bound",
"accessModes":[
"ReadWriteOnce"
],
"capacity":{
"storage":"1Gi"
}
}
字符串
但它只给我带来了磁盘的全部容量,就像我说的,我需要用过的
有谁知道哪个命令可以返回此信息给我?
2条答案
按热度按时间l3zydbqr1#
我没有一个明确的答案,但我希望这将帮助你。此外,我会很感兴趣,如果有人有一个更好的答案。
获取当前使用情况
PersistentVolume子系统为用户和管理员提供了一个API,该API可以从存储的使用方式中抽象出如何提供存储的详细信息。
--持久卷|Kubernetes
正如Kubernetes文档中所述,PV(PersistentVolume)和PVC(PersistentVolumeClaim)是对存储的抽象。因此,我认为您不能检查PV或PVC,但您可以检查存储介质。
要获取使用情况,请创建一个调试pod,它将使用您的PVC,您将从中检查使用情况。这应该取决于您的存储提供商。
字符串
使用
kubectl apply -f volume-size-debugger.yaml
应用上面的清单,并在其中使用kubectl exec -it volume-size-debugger sh
运行shell。在shell中运行du -sh
以获得人类可读格式的用法。监控
我相信你已经注意到了,这对监控并不是特别有用。它可能对偶尔的一次性检查有用,但对监控或磁盘空间不足警报没有帮助。
设置监控的一种方法是使用类似于我们上面的sidecar pod,并从那里收集我们的指标。
另一种方法是使用CSI(容器存储接口)。我没有使用过CSI,对它的了解不足以真正解释更多。但这里有一些相关的问题和相关的Kubernetes文档:
kq0g1dla2#
+1到touchmarine's的答案,但我想扩大它一点,并添加我的三美分。
但它只给我带来了磁盘的全部容量,就像我说的,我需要用过的
PVC
是一个抽象,它表示对存储的请求,只是不存储磁盘使用情况等信息。作为一个更高级别的抽象,它根本不关心底层存储如何被其消费者使用。@touchmarine,而不是使用一个
Pod
,其唯一的功能是sleep
,每次你需要检查磁盘使用情况,你需要附加到它maually,我建议使用这样的东西:字符串
当然,它可以是一个单一的容器
busybox
Pod
,就像@touchmarine的例子一样,但在这里我决定展示如何将它用作一个sidecar,在一个单一的Pod
中运行在nginx
容器旁边。当它运行一个简单的bash脚本时-一个无限的while循环,它将当前的磁盘使用情况打印到标准输出中,它可以用
kubectl logs
读取,而不需要使用kubectl exec
并附加到Pod
:型
我想它也可以更有效地用于配置某种磁盘使用情况的监控。