首页 > 解决方案 > Kubernetes 临时存储容器

问题描述

Kubernetes 具有临时存储的概念,可以通过部署将其应用于容器,如下所示:

limits:
  cpu: 500m
  memory: 512Mi
  ephemeral-storage: 100Mi
requests:
  cpu: 50m
  memory: 256Mi
  ephemeral-storage: 50Mi

现在,将其应用于 k8s 1.18 集群(IBM Cloud 托管的 k8s)时,当我查看正在运行的容器时,我看不到任何更改:

kubectl exec -it <pod> -n <namespace> -c nginx -- /bin/df

我希望看到那里的变化。我错了吗?

标签: kubernetesresourcesstorage

解决方案


kubectl describe node <insert-node-name-here>您可以通过在运行部署的 pod 的节点上使用来查看分配的资源。

您应该看到如下内容:

Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                       Requests      Limits
  --------                       --------      ------
  cpu                            1130m (59%)   3750m (197%)
  memory                         4836Mi (90%)  7988Mi (148%)
  ephemeral-storage              0 (0%)        0 (0%)
  hugepages-1Gi                  0 (0%)        0 (0%)
  hugepages-2Mi                  0 (0%)        0 (0%)
  attachable-volumes-azure-disk  0             0

当您请求 50Mi 的临时存储时,它应该显示在Requests. 当您的 Pod 尝试使用超过限制 (100Mi) 时,Pod 将被驱逐并重新启动。

在节点方面,任何使用超过其请求资源的 pod 都会在节点耗尽资源时被驱逐。换句话说,除了 Pod 的请求之外,Kubernetes 从不提供任何资源可用性保证。

在 kubernetes 文档中,您可以在此处找到更多关于临时存储消耗管理工作原理详细信息。

请注意,将 kubectl exec 与df命令一起使用可能不会显示存储的实际使用情况。

根据 kubernetes文档

kubelet 可以测量它使用了多少本地存储。它这样做的前提是:

  • LocalStorageCapacityIsolation 功能门已启用(该 功能默认开启),并且
  • 您已使用本地临时存储支持的配置之一设置了节点。

如果您有不同的配置,则 kubelet 不会对临时本地存储应用资源限制。

注意: kubelet 跟踪 tmpfs emptyDir 卷作为容器内存使用,而不是作为本地临时存储。


推荐阅读