Что изменилось в работе с данными
В новой версии Kubernetes 1.37 реализована функция EtcdRangeStream, которая теперь находится в статусе бета и включена по умолчанию. Основная задача этого механизма — оптимизировать процесс чтения крупных наборов данных (коллекций) из хранилища etcd.
Ранее API-сервер при запросе большого количества объектов пытался загрузить их целиком в оперативную память за один раз. Это приводило к значительным скачкам потребления RAM на управляющих узлах кластера, особенно если количество подов, сервисов или конфигурационных карт исчислялось тысячами. При достижении определённого порога такие операции могли вызывать нехватку памяти и нестабильность control plane.
Теперь взаимодействие строится иначе. Благодаря поддержке потоковой передачи чанков на уровне протокола gRPC (используется функционал RangeStream в etcd v3.7), данные передаются не единым блоком, а последовательными фрагментами фиксированного размера. Сервер получает часть данных, обрабатывает её, освобождает буфер и запрашивает следующую порцию. Такой подход позволяет держать использование памяти на стабильно низком уровне вне зависимости от общего объёма коллекции.