写入卷装

时间:2017-03-22 21:52:18

标签: ubuntu docker kubernetes google-cloud-platform google-kubernetes-engine

我有一个Kubernetes集群,可以处理作业。这些工作定义如下:

apiVersion: batch/v1
kind: Job
metadata:
  name: process-item-014
  labels:
    jobgroup: JOB_XXX
spec:
  template:
    metadata:
      name: JOB_XXX
      labels:
        jobgroup: JOB_XXX
    spec:
      restartPolicy: OnFailure
      containers:
      - name: worker
        image: gcr.io/.../worker
        volumeMounts: 
        - mountPath: /workspace
          name: workspace
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 500m
            memory: 512Mi  
      volumes: 
        - name: workspace 
          hostPath:
            path: /tmp/client-workspace

请注意,我尝试将主机中的文件夹装入容器(workspace)。另请注意定义的内存限制。 在我的容器上,我将一些文件下载到workspace,其中一些文件非常大(它们是从GCS下载的gsutil下载的,但不要认为它太重要了)。

当我下载的文件超出内存限制时,我的代码会因为空间超出"设备而中断。错误。这并不完全有意义,因为我将文件存储到一个由主机存储支持的装载中,这已经足够了。它还在docs中提到memory限制了容器可用的RAM数量,而不是存储容量。不过,当我将限制设置为XGi时,它会在XGi下载后非常一致地中断。

我的容器基于ubuntu:14.04,运行带有这样一行的shell脚本:

gsutil -m cp -r gs://some/cloud/location/*  /workspace/files

我做错了什么?肯定需要对我的容器有一些限制,所以我不能放弃限制。

1 个答案:

答案 0 :(得分:1)

/tmp文件系统通常由tmpfs支持,它将文件存储在内存中而不是磁盘上。我猜你的节点就是这种情况,内存正在向容器正确收费。您可以使用emptydir卷吗?