0

我有一個需要處理作業的Kubernetes集羣。這些作業的定義如下:Kubernetes pod在寫入卷安裝時內存不足

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

/tmp文件系統通常支持tmpfs,它將文件存儲在內存中而不是磁盤上。我的猜測是,你的節點就是這種情況,並且內存正在正確地向容器充電。你可以使用emptydir體積嗎?

+0

這實際上可以解釋它。我的應用程序在很大程度上依賴於創建臨時文件,有任何改變它的機會,所以它使用磁盤呢?我不認爲使用'emptydir'會是一個問題。 – Xocoatzin