web-dev-qa-db-fra.com

Kubernetes (minikube) pod OOMKilled avec apparemment beaucoup de mémoire restante dans le noeud

J'utilise minikube, en commençant par

minikube start --memory 8192

Pour 8 Go de RAM pour le nœud. J'alloue des pods avec les contraintes de ressources

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

Donc, 256 Mo de RAM pour chaque nœud qui me donnerait, je suppose, 32 pods jusqu'à ce que la limite de mémoire de 8 Go soit atteinte, mais le problème est que chaque fois que j'atteins le 8ème pod à déployer, le Le 9ème ne courra jamais car il est constamment OOMKilled.

Pour le contexte, chaque module est une application Java avec un frolvlad/Alpine-oraclejdk8: un conteneur Docker fin fonctionnait avec -Xmx512m -Xms128m (même si JVM utilisait en effet 512 Mo au lieu de 256 Mo, je le ferais) encore loin de la limite de 16 pods pour atteindre le plafond de 8 Go).

Qu'est-ce que j'oublie ici? Pourquoi les pods sont-ils OOMKilled avec apparemment autant de mémoire allouable disponible?

Merci d'avance

15
DMB3

Vous devez comprendre le fonctionnement des demandes et des limites.

Les demandes sont les exigences relatives à la quantité de ressources allouables requises sur le nœud pour qu'un pod soit planifié sur celui-ci. Ceux-ci n'entraîneront pas de MOO, ils empêcheront le pod d'être programmé.

Les limites de l'autre côté sont des limites strictes pour un pod donné. Le pod sera plafonné à ce niveau. Donc, même si vous avez 16 Go RAM gratuit, mais que vous avez une limite de 256 Mo, dès que votre pod atteindra ce niveau, il subira un kill OOM.

Si vous le souhaitez, vous ne pouvez définir que des demandes. Ensuite, vos pods pourront atteindre la pleine capacité du nœud, sans être plafonnés.

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

28