如何限制Kubernetes托管Docker容器允许的存储空间?

8yparm6h  于 2023-04-20  发布在  Kubernetes
关注(0)|答案(1)|浏览(173)

我熟悉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镜像层填充了磁盘空间,但我不确定如何确认这一点,也不确定为什么资源没有被释放。

a64a0gku

a64a0gku1#

如果容器未分配给PVC,则默认情况下将使用假定分配了临时存储。
要确保容器使用的存储空间不超过已分配的存储空间,请设置**memory limits field spec.containers[].resources.limits.memory**。
下面的例子取自这个官方的kubernetes文档,同样你也可以对你的容器设置限制。

containers:

 - name: log-aggregator

   image: images.my-company.example/log-aggregator:v6

   resources:

     requests:

       ephemeral-storage: "2Gi"

     limits:

       ephemeral-storage: "4Gi"

正如@larks所建议的,本文档包含了详细的解释和更多的方法,这些方法将对您有所帮助,您还可以使用存储资源配额来设置限制。
有关更多信息,您还可以参考Pod和容器的资源管理文档。

相关问题