👩💻 Начинаем рабочую неделю с фотоотчёта DevOps Lab и рабочего кейса портала HeyOnCall.
После обновления Kubernetes до версии 1.36 Майк Роббинс заметил проблему на небольшом тестовом кластере.
kubelet постепенно «съедал» всю память. Поды работали нормально, но pprof обнаружил миллион объектов контекста. Проблема возникла из-за небольшого регресса в коде
startPodSync, и при каждом цикле синхронизации создавался новый context.WithCancel(), а старый никогда не освобождался. С Codex Роббинс быстро обнаружил проблемный коммит, подготовил исправление, прошёл ревью и добился включения патча в основную ветку и бэкпорта для релиза 1.36.3.🔵В статье о том, как найти утечку памяти в
kubelet с Go pprof и сократить потребление с 1 ГБ до 110 МБ, почему подобные ошибки сложно поймать на тестировании и какая строка кода может привести к утечке сотен мегабайт памяти на каждой ноде. ➡️А здесь мы оставили фото участников лабы, делимся атмосферой. Отмечайте @DevOps_FM в соц.сетях и расскажите о своих впечатлениях – тут 💙
#kubernetes #devops #kubelet #никсис
