Поскольку
etcd является критически важным «сердцем» Kubernetes (хранилищем состояния кластера), это обновление напрямую влияет на производительность и стабильность будущих версий. Разбираем самое важное из релиза.1️⃣ Киллер-фича: RangeStream
Раньше, если клиент запрашивал огромный объем данных, etcd полностью собирал весь результат в буфер памяти, а затем отправлял его целиком. Это вызывало непредсказуемые скачки памяти и задержки как на сервере, так и на клиенте.
Что изменилось: добавлен метод RangeStream RPC. Теперь большие выборки данных отправляются клиенту частями (чанками/стримом). Это сделает работу тяжелых контроллеров в больших кластерах гораздо более стабильной.
2️⃣ Серьезные улучшения производительности
Команда заявляет о заметном снижении потребления CPU процессами etcd по сравнению с версией 3.6.
При запросах ключей без их значений (например,
etcdctl get --keys-only), etcd теперь читает данные только из своей инкрементальной памяти. Больше нет нужды читать и десериализовать тяжелые значения из дискового хранилища bbolt (за исключением случаев сортировки по значению). Работа с механизмами аренды ключей стала быстрее и надежнее.3️⃣ Чистка легаси
etcd теперь загружается полностью из v3store. Из кодовой базы убрали последние остатки старого движка хранения V2 API, что сильно очистило архитектуру.Завершен масштабный оверхол библиотек Protobuf, устаревшие зависимости заменены на современные и полностью поддерживаемые.
4️⃣ Другие полезные фичи
- Поддержка Unix-сокетов
- Управление AuthStatus. Теперь можно запрашивать статус аутентификации кластера без предварительной авторизации
- Новые метрики для Watch
etcd v3.7 принесет долгожданное облегчение для master-нод. Кластеры с огромным количеством объектов станут потреблять меньше процессора, а API-сервер будет тратить меньше памяти.
@DevOpsKaz 😛
