我熟悉Kubernetes documentation,它描述了如何为PVC设置限制。但是,如果容器没有分配PVC呢?
假设一个Kubernetes容器简单地定义了:
- image: 'redis:7'
name: redis
...我一直在向这个Redis示例写入数据。
- 如何设置配额以确保容器使用的存储不超过分配的存储?
- 如何检查已经使用了多少存储空间?
我尝试为临时资源设置ResourceQuota
,例如:
apiVersion: v1
kind: ResourceQuota
metadata:
labels:
# {{ include "app.resource_labels" . | indent 4 }}
name: '{{ .Release.Name }}'
spec:
hard:
configmaps: 10
limits.cpu: 4
limits.ephemeral-storage: 1Gi
limits.memory: 10Gi
pods: 30
secrets: 5
services: 20
但是,在检查配额时,ephemeral-storage
总是显示为0。
kubectl describe quota
Name: gaia-review-contra-resource-quota-c79e5b3c
Namespace: gaia-review-c79e5b3c
Resource Used Hard
-------- ---- ----
configmaps 2 10
limits.cpu 21 4
limits.ephemeral-storage 0 1Gi
limits.memory 25576Mi 10Gi
pods 16 30
secrets 4 5
services 8 20
因此,我怀疑其他东西没有像它应该的那样工作或者我看错了地方。
与此同时,运行这些Pod的VM正在经历磁盘压力。
我的下一个最好的理论是,实际上是Docker镜像层填充了磁盘空间,但我不确定如何确认这一点,也不确定为什么资源没有被释放。
1条答案
按热度按时间a64a0gku1#
如果容器未分配给PVC,则默认情况下将使用假定分配了临时存储。
要确保容器使用的存储空间不超过已分配的存储空间,请设置**
memory limits field spec.containers[].resources.limits.memory
**。下面的例子取自这个官方的kubernetes文档,同样你也可以对你的容器设置限制。
正如@larks所建议的,本文档包含了详细的解释和更多的方法,这些方法将对您有所帮助,您还可以使用存储资源配额来设置限制。
有关更多信息,您还可以参考Pod和容器的资源管理文档。