如何解决监控Kubernetes PVC磁盘使用情况
我正在尝试监视Kubernetes PVC磁盘的使用情况。我需要用于永久卷声明的内存。我找到了命令:
kubectl get --raw / api / v1 / persistentvolumeclaims
返回:
"status":{
"phase":"Bound","accessModes":[
"ReadWriteOnce"
],"capacity":{
"storage":"1Gi"
}
}
但这只会带给我磁盘的全部容量,正如我所说,我需要用过的磁盘
有人知道哪个命令可以将此信息返回给我吗?
解决方法
+1到touchmarine's的答案,但是我想将其扩大一点,并加上我的三分钱。
但这只会带给我磁盘的全部容量,正如我所说的那样 需要用过的那个
PVC
是一种抽象,表示对存储的请求,并且根本不存储磁盘使用情况之类的信息。作为更高级别的抽象,它根本不关心其使用者如何使用基础存储。
@touchmarine,而不是使用仅用于Pod
的{{1}},并且每次需要检查需要手工连接的磁盘使用量时,我建议使用类似这个:
sleep
与@touchmarine的示例一样,它当然可以是单个容器apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
volumes:
- name: media
persistentVolumeClaim:
claimName: media
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/data"
name: media
- name: busybox
image: busybox
command: ["/bin/sh"]
args: ["-c","while true; do du -sh /data; sleep 10;done"]
volumeMounts:
- mountPath: "/data"
name: media
busybox
,但在这里,我决定展示如何将其用作{{1}旁边的小客车}放在单个Pod
中。
由于它运行一个简单的bash脚本-无限while循环,该循环将当前磁盘使用情况输出到标准输出,因此可以使用nginx
进行读取,而无需使用Pod
并将其附加到kubectl logs
:
kubectl exec
我想它也可以更有效地用于配置某种磁盘使用情况监视。
,我没有确切的答案,但是我希望这会为您提供帮助。另外,如果有人有更好的答案,我也会很感兴趣。
获取当前使用情况
PersistentVolume子系统为用户和管理员提供了一个API,用于从如何使用存储中抽象出如何提供存储的详细信息。
如Kubernetes文档中所述,PV(PersistentVolume)和PVC(PersistentVolumeClaim)是存储之上的抽象。因此,我认为您不能检查PV或PVC,但可以检查存储介质。
要获取用法,请创建一个调试容器,该调试容器将使用您的PVC,并从中检查用法。这应该可以工作,具体取决于您的存储提供商。
# volume-size-debugger.yaml
kind: Pod
apiVersion: v1
metadata:
name: volume-size-debugger
spec:
volumes:
- name: debug-pv
persistentVolumeClaim:
claimName: <pvc-name>
containers:
- name: debugger
image: busybox
command: ["sleep","3600"]
volumeMounts:
- mountPath: "/data"
name: debug-pv
将上述清单与kubectl apply -f volume-size-debugger.yaml
一起应用,并在kubectl exec -it volume-size-debugger sh
中运行一个shell。在外壳中运行du -sh
,以使格式易于理解。
监控
我相信您已经注意到,这对于监视不是特别有用。对于不时进行一次检查可能很有用,但对于监视或磁盘空间不足警报则无济于事。
一种设置监控的方法是拥有一个类似于我们上面的类似的sidecar pod,并从那里收集我们的指标。 node_exporter就是一个这样的例子。
另一种方法是使用CSI(容器存储接口)。我还没有使用过CSI,并且对其了解还不足以真正解释更多信息。但是这里有一些相关的问题和相关的Kubernetes文档:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。