0

処理のためにジョブを取るKubernetesクラスタがあります。私はコンテナ(workspace)にホストのフォルダをマウントしようとしているボリュームへの書き込み時に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にいくつかのファイルがダウンロードされています(GCSからgsutilでダウンロードされますが、あまり重要ではないと思われます)。

ダウンロードしたファイルがメモリの制限を超えた場合、私のコードは「デバイスが空き容量がありません」というエラーで壊れます。これは完全に意味をなさない。なぜなら、私はファイルをマウントに格納しているからだ。それは十分なものであるホストのストレージによって支えられているからだ。 docsには、memoryの制限は、ストレージではなくコンテナで使用可能なRAMの量であることも記載されています。それでも、私がXGiに制限を設定すると、それはXGiのダウンロードをかなり一貫して壊してしまいます。

私の容器にはUbuntuのに基づいている:14.04、このような行でシェルスクリプトを実行している:

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

は私が間違って何をしているのですか?間違いなく私のコンテナにいくつかの制限があるので、私は限界を落とすことはできません。

答えて

1

/tmpファイルシステムは、多くの場合、ディスクではなくメモリにファイルを格納するtmpfsによってバックアップされています。私の推測では、あなたのノードの場合であり、メモリがコンテナに正しく充電されているということです。代わりにemptydirボリュームを使用できますか?

+0

それは実際にそれを説明するでしょう。私のアプリケーションは、一時ファイルの作成に大きく依存しています。私は 'emptydir 'の使用は問題になるとは思わない。 – Xocoatzin

関連する問題