Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Cómo evitar los errores de OOM
Windows no tiene un eliminador de procesos por falta de memoria como Linux. Windows siempre trata todas las asignaciones de memoria en modo usuario como virtuales y los archivos de paginación son obligatorios. El efecto neto es que Windows no se quedará sin memoria de la misma manera que lo hace Linux. Los procesos se archivarán en el disco en lugar de quedar sujetos a la terminación del agotamiento de la memoria (OOM). Si la memoria está sobreaprovisionada y toda la memoria física está agotada, la paginación puede reducir el rendimiento.
Reserva de memoria del sistema y del kubelet
A diferencia de Linux, donde se --kubelet-reserve captura la reserva de recursos para los demonios del sistema Kubernetes, como Kubelet, el tiempo de ejecución de contenedores, etc., y se --system-reserve captura la reserva de recursos para los demonios del sistema operativo, como sshd, udev, etc. En Windows, estos indicadores no capturan ni establecen límites de memoria en kubelet ni en los procesos que se ejecutan en el nodo.
Sin embargo, puedes combinar estos indicadores NodeAllocatable para reducir la capacidad del nodo con el límite de recursos de memoria de manifiesto del pod para controlar la asignación de memoria por pod. Con esta estrategia, tienes un mejor control de la asignación de memoria, así como un mecanismo para minimizar la falta de memoria (OOM) en los nodos de Windows.
En los nodos de Windows, se recomienda reservar al menos 2 GB de memoria para el sistema operativo y el proceso. --kubelet-reserve and/or --system-reserveUtilízalo para reducir NodeAllocatable.
Siguiendo la documentación sobre los nodos de Self-managed Windows de Amazon EKS, utilice la CloudFormation plantilla para lanzar un nuevo grupo de nodos de Windows con personalizaciones en la configuración de kubelet. CloudFormation Tiene un elemento llamado BootstrapArguments que es el mismo que. KubeletExtraArgs Utilícelo con los siguientes indicadores y valores:
--kube-reserved memory=0.5Gi,ephemeral-storage=1Gi --system-reserved memory=1.5Gi,ephemeral-storage=1Gi --eviction-hard memory.available<200Mi,nodefs.available<10%"
Si eksctl es la herramienta de despliegue, consulta la siguiente documentación para personalizar la configuración de kubelet https://eksctl.io/usage/customizing-the-kubelet/
Requisitos de memoria del contenedor de Windows
Según la documentación de Microsoft
Es fundamental que conozca la cantidad mínima de memoria que necesita la imagen del contenedor de Windows, es decir, la imagen base más sus capas de aplicación, y que la defina como la del contenedor resources/requests en la especificación del pod. También debes establecer un límite para evitar que los pods consuman toda la memoria de nodo disponible en caso de que se produzca un problema con la aplicación.
En el siguiente ejemplo, cuando el programador de Kubernetes intenta colocar un pod en un nodo, las solicitudes del pod se utilizan para determinar qué nodo tiene suficientes recursos disponibles para la programación.
spec: - name: iis image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019 resources: limits: cpu: 1 memory: 800Mi requests: cpu: .1 memory: 128Mi
Conclusión
El uso de este enfoque minimiza los riesgos de agotamiento de la memoria, pero no evita que ocurra. Con Amazon CloudWatch Metrics, puede configurar alertas y soluciones en caso de que se agote la memoria.