Depuis Kubernetes 1.8, il me semble que je dois désactiver le swap sur mes noeuds (ou --fail-swap-on
sur false
).
Je ne trouve pas la raison technique pour laquelle Kubernetes insiste pour que le swap soit désactivé. Est-ce pour des raisons de performance? Raisons de sécurité? Pourquoi la raison de ceci n'est-elle pas documentée?
kubernetes
swap
Jeroen Jacobs
la source
la source
Si j'ai bien compris, la raison en est que le kubelet n'est pas conçu pour gérer les situations d'échange et que l'équipe Kubernetes n'envisage pas de le mettre en œuvre, l'objectif étant que les pods tiennent dans la mémoire de l'hôte.
de ce numéro
la source
TL; DR n’utilise pas correctement le swap n’est qu’un hack paresseux qui démontre une mauvaise compréhension des sous-systèmes de la mémoire et un manque de compétences fondamentales en matière d’administration de systèmes. Concevoir des services d'infrastructure sans comprendre ces systèmes est voué à l'échec.
Donc, j'ai quelques commentaires à ce sujet, cela me semble plus une paresse qu'un trait ou une exigence. Il est absolument possible de gérer correctement le swap, d'analyser la mémoire et de déterminer comment utiliser correctement le sous-système de mémoire sans effectuer de swap. De nombreux outils sont construits autour de cela et vous pouvez garantir qu'un processus n'utilisera pas l'échange très facilement, de sorte que le point de performance est incorrect. C’est tout simplement du codage paresseux pour ne pas utiliser cette instrumentation, et dans l’ensemble, la suppression complète du swap se fera au détriment des performances du système. La clé ici l'utilise correctement. Je conviens que l'échange de modules sur des disques aura une incidence sur les performances. Toutefois, un certain nombre d'éléments doivent être échangés sur un disque.
De plus, le noyau Linux est conçu pour utiliser le swap, et le désactiver complètement aura des conséquences négatives. Une meilleure solution consiste à épingler les pods dans la mémoire principale sans les autoriser à permuter sur le disque, à réduire la pression de la mémoire cache vfs afin qu’elle ne permute pas sauf si cela est absolument nécessaire. échouez MALLOC si la mémoire principale est épuisée.
En fonction des processus dans les conteneurs ayant une défaillance matérielle du conteneur ou son assassinat par le tueur OOM, des résultats assez désastreux pourraient en résulter. Je comprends cependant que les processus exécutés dans ces conteneurs devraient idéalement être apatrides et éphémères, mais en 20 ans de systèmes en fonctionnement, je n’ai jamais vu tout le monde suivre la conception à la lettre à la lettre 100% du temps.
En outre, cela ne prend pas en compte les technologies futures telles que la mémoire non volatile, ni les systèmes de mémoire plus récents, tels que intel xpoint, qui peuvent être utilisés pour étendre considérablement la mémoire principale à l'aide de systèmes de disque / mémoire hybrides. Avec ce type de systèmes, ils peuvent les utiliser directement comme mémoire principale supplémentaire ou utiliser des fichiers d'échange pour étendre la mémoire principale avec un impact négligeable sur les performances.
la source
Il existe un ticket pour l'activer à nouveau, vous obtiendrez plus de perspicacité là-bas
https://github.com/kubernetes/kubernetes/issues/53533
la source