TGViewer
DevOps 413 DevOps 413 @devops413 · 456 subscribers
Post #24 637
Давно не было постов, так как занималась съемками и монтажом первого подкаста-интервью 😳
Готовьтесь к новым порциям интересного контента, не зря же в названии канала http status 4️⃣1️⃣3️⃣

🛠 Дебаг веб сервиса

Проблема:
nginx не отдает метрики по эндпоинту.
Пререквизиты:
есть под с nginx в кубере, есть сервис, который слушает на порту 9000, по этому порту должны быть доступны прометеус метрики по эндпоинту /metrics.
Симптомы:
curl отдает Connection refused. В данном случае refused отдает ингресс контроллер.

Перед началом диагностики важно в голове иметь общую схему зоны, в рамках которой мы можем определить проблему.
В данном случае это кубернетис кластер, сеть за пределами кластера, само приложение.
В процессе траблшутинга я всегда иду _от общего к частному_, последовательно деля зону поиска на блоки — что-то вроде бинарного поиска в программировании.

Первое, что я проверила, основываясь на опыте, — слушается ли приложением порт.
В манифесте пода порт объявлен:
kubectl get po pod -o yaml | grep 9000
# containerPort: 9000

Я решила проверить доступность порта внутри контейнера, и curl вернул 404.
Тут важно понимать, что если вебсервер (в данном случае nginx) вернул 404, это значит, что он получил запрос, но не смог его обработать, потому что для него нет правила.
И здесь это ключевое: значит, что порт слушается, но по этому эндпоинту приложение ничего не отдает, потому что не сконфигурировано.
Дальше стоит идти в настройки вебсервера. 🔍



💥 Сломанный helm релиз

Проблема:
невозможно установить релиз командой helm upgrade.
Пререквизиты:
разработчик сообщил, что он отменил в гитлабе джоб на раскатку релиза helm upgrade в самый разгар выполнения, чуть позже снова запустил деплой, но теперь helm upgrade каждый раз отдает:
Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress

Для тех, кто работает с кубом, это знакомая ситуация, и я сразу знала, в чем причина.
Но мой коллега инженер столкнулся с таким впервые.
Сразу вопрос: что вы знаете о финалайзерах? 🙂

Проще говоря, это специальные метки, которые означают ожидание дополнительных событий при удалении ресурса.
Если у ресурса есть финалайзер, контроллеры отслеживают такие объекты и выполняют очистку зависимостей, и только потом финалайзер удаляется.
Пока на ресурсе есть финалайзер, он не будет удален. ⏳

В нашем случае процесс установки релиза был прерван и не завершился корректно, так как операция была атомарной и при прерывании операции ресурсы новой версии должны были быть удалены, но этот процесс не завершился корректно.
Поэтому остались ресурс(ы) с финалайзерами, ожидающие удаления.

Чтобы быстро найти тот самый ресурс, я написала простенький однострочный bash-скрипт:
for i in $(kubectl -n ns get all | awk '{print $1}' | grep -v NAME); do if kubectl -n ns get $i -o yaml | grep -q final; then echo $i; fi; done

Команда kubectl -n ns get all даст нам список всех ресурсов в неймспейсе, среди которых мы и будем искать.
Это удобно, когда ищешь иголку в стоге 🙂
В результате выполнения скрипт вернет список ресурсов, в которых нашел финалайзеры.

Ну и как последний шаг — удаляем финалайзер:
kubectl -n ns patch resource --type='json' -p='[{"op": "remove", "path": "/metadata/finalizers"}]'
# вместо resource тут указываете вывод из предыдущей команды

Обычно изучая инструменты и технологии мы узнаем как они должны работать, но не как их чинить. Процесс траблшутинга это то, что развивается только на практике и делает специалиста ценным кадром в команде, к которому идут все за помощью ;)
  • 👍 6
  • ❤ 5
  • 🔥 5
More from @devops413
  1. Oct 10, 2026Мой личный роадмап по DevOps Вчера выступала на SysAdmin conf с докладом про переход в Dev…
  2. Oct 8, 2026Есть такой легендарный человек @kruchkov_alexandr, который известен инженерному комьюнити…
  3. Oct 6, 2026Не знаешь кубер 🖼️ - не инженер Это частое заблуждение. Инженеры бывают разными и в новом…
  4. Sep 9, 2026Post #56
  5. Sep 3, 2026Осень встречает нас большим количеством интересных бесплатных конференций 🍂. Иду на них с…
  6. Sep 2, 2026Уже через неделю в следующую среду 9 сентября я приму участие в круглом столе на тему «Кри…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →