web-dev-qa-db-ja.com

Kubernetes(minikube)ポッドOOMKilledがノードに残っているようです。

私はminikubeを使用しています。

minikube start --memory 8192

RAMの8Gbのノードの場合。リソース制約のあるポッドを割り当てています。

    resources:
      limits:
        memory: 256Mi
      requests:
        memory: 256Mi

したがって、256MbのRAMを与えるノードごとに、8Gbのメモリ制限に達するまで32個のポッドを想定しますが、展開する8番目のポッドに到達するたびに、 9thは常にOOMKilledであるため実行されません。

コンテキストについては、各ポッドはJava frolvlad/Alpine-oraclejdk8:slim Dockerコンテナを備えたアプリケーションが-Xmx512m -Xms128mで実行された場合(JVMが実際に256Mbではなく512Mbを使用している場合でも) 8Gbの上限に達するには、16ポッドの制限からまだ遠い)。

ここで何が欠けていますか?どうしてポッドがOOMKillされているように見えますが、明らかに非常に多くの空き割り当て可能なメモリが残っていますか?

前もって感謝します

15
DMB3

リクエストと制限の仕組みを理解する必要があります。

要求は、ポッドがスケジュールされるためにノードに必要な割り当て可能なリソースの量の要件です。これらはOOMを引き起こさず、ポッドがスケジュールされない原因となります。

反対側の制限は、特定のポッドの厳しい制限です。ポッドはこのレベルで制限されます。したがって、16GB RAM無料であるが256MiBの制限がある場合でも、ポッドがこのレベルに達するとすぐにOOMが強制終了されます。

必要に応じて、リクエストのみを定義できます。その後、ポッドは、上限なしでノードの最大容量まで成長できます。

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/