kubernetes之限制临时存储容量

Local限制

Kubernetes版本1.8引入了新资源_ephemeral-storage_,用于管理本地临时存储。 在每个Kubernetes节点中,kubelet的根目录(默认为 /var/lib/kubelet)和日志目录( /var/log )存储在节点的根分区上。 Pods还通过emptyDir卷,容器日志,镜像层和容器可写层共享和使用此分区。

Pod的每个容器可以指定以下一项或多项
spec.containers[].resources.limits.ephemeral-storage
spce.containers[].resources.requests.ephemeral-storage

对“临时存储”的限制和请求以字节为单位。您可以使用以下后缀之一将存储表示为纯整数或小数形式:E,P,T,G,M,K。您还可以使用2的幂次方:Ei,Pi,Ti,Gi,Mi,Ki。例如,以下内容表示的值其实大致相同:

128974848, 129e6, 129M, 123Mi

示例如下:
kubernetes之限制临时存储容量_第1张图片

测试: dd if=/dev/zero of=/test bs=4096 count=102400

运行一段时间后发现pod状态为Evicted 。并重新启动另一个Pod。

:设置的local ephemeralstorage requests在evict manager处理过程中没有用到。但是它不是没用的。
创建Pod后,scheduler会将该Pod调度到集群中某个node上。由于每个node所能承载的local ephemeral storage是有上限的,所以scheduler会保证该node上所有Pod的 local ephemeralstorage requests 总和不会超过node的根分区容量。

限制emptydir

emptyDir也是一种临时存储,因此也需要限制使用。
在Pod级别检查临时存储使用量时,也会将emptyDir的使用量计算在内,因此如果对emptyDir使用过量后,也会导致该Pod被kubelet Evict。
另外,emptyDir本身也可以设置容量上限。如下所摘录编排文件片段,我指定了emptyDir使用内存作为存储介质。示例如下

    volumeMounts:
    - mountPath: /cache
      name: test
  volumes:
  - emptyDir:
      medium: Memory
      sizeLimit: 30M
    name: test

你可能感兴趣的:(k8s)