処理のためにジョブを取る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
は私が間違って何をしているのですか?間違いなく私のコンテナにいくつかの制限があるので、私は限界を落とすことはできません。
それは実際にそれを説明するでしょう。私のアプリケーションは、一時ファイルの作成に大きく依存しています。私は 'emptydir 'の使用は問題になるとは思わない。 – Xocoatzin