Kubernetes v1.37 вывел Memory QoS в бета-версию, включив его по умолчанию. Это важное обновление оптимизирует управление памятью для контейнеров, обеспечивая большую стабильность и производительность.
Эволюция Memory QoS
Memory QoS впервые был представлен в версии v1.22 как альфа-функция, а затем расширен в версии v1.36 с поддержкой секторальной памяти. Теперь, с переходом в бета-версию, он становится доступным для всех пользователей Kubernetes без необходимости дополнительной настройки, что существенно упрощает его внедрение.
Ключевые изменения в v1.37
В новой версии MemoryQoS включен по умолчанию, что значит, что каждый kubelet версии v1.37 активирует эту функцию без дополнительных усилий от пользователей. Для обеспечения надёжности и предотвращения непредвиденных ограничений производительности, по умолчанию не активированы ограничители памяти, такие как memory.high.
На старых альфа-версиях memoryThrottlingFactor по умолчанию был установлен на 0.9. Теперь этот параметр выставлен в null, что предотвращает нежелательную нагрузку на контейнеры, которые ранее работали без ограничений. Если конфигурация kubelet содержит значение memoryThrottlingFactor, оно сохраняется, и работа продолжается в том же режиме, что и раньше.
Конфигурация MemoryQoS в v1.37
Для настройки Memory QoS доступны ключевые параметры. Один из них — memoryThrottlingFactor, который регулирует параметры для контейнеров Burstable и BestEffort. Для полной настройки будут доступны значения от 0 до 1. При активации секторального резервирования через memoryReservationPolicy, вы сможете обеспечить более гибкое управление памятью для ваших приложений.
Если вы хотите полностью отключить Memory QoS, необходимо изменить значении featureGates на false в конфигурации kubelet, что применяется для прекращения работы функции.
Что это значит для разработчиков
Для разработчиков на российском рынке это обновление существенно упрощает работу с Kubernetes, позволяя более точно настраивать параметры памяти контейнеров. Внедряя данное обновление, можно оптимизировать ресурсы, что критично для крупных приложений с высокой нагрузкой. Знание о новых функциях поможет избежать потенциальных проблем с производительностью и обеспечить больший контроль над ресурсами, что важно в условиях растущей конкуренции на рынке.
В дальнейших обновлениях стоит ожидать улучшений в управлении ресурсами и интеграции с новыми инструментами мониторинга в кластерах Kubernetes.