Библиотека девопса | DevOps, SRE, Sysadmin
10.2K subscribers
1.55K photos
75 videos
4 files
2.78K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
🧹 Kubernetes housekeeping

Kubernetes по умолчанию не удаляет завершённые поды автоматически. И это имеет смысл — логи можно посмотреть, причину падения изучить, отладить проблему.

Но когда таких подов сотни или тысячи, кластер превращается в свалку:
$ kubectl get pods -A | grep -E 'Completed|Error|Evicted' | wc -l
847


Как почистить кластер

Удалить все Completed поды:
kubectl get pods -A --field-selector=status.phase==Succeeded \
-o json | jq -r '.items[] | "\(.metadata.namespace) \(.metadata.name)"' \
| xargs -n2 bash -c 'kubectl delete pod -n $0 $1'


Или проще, если у вас kubectl 1.24+:
kubectl delete pods --all-namespaces \
--field-selector=status.phase==Succeeded


Удалить все Failed поды:
kubectl delete pods --all-namespaces \
--field-selector=status.phase==Failed


Удалить Evicted поды
Тут хитрее, потому что Evicted — это не phase, а reason:
kubectl get pods -A -o json | \
jq -r '.items[] | select(.status.reason=="Evicted") | "\(.metadata.namespace) \(.metadata.name)"' | \
xargs -n2 bash -c 'kubectl delete pod -n $0 $1'


Удалить всё разом:
kubectl get pods -A -o json | \
jq -r '.items[] |
select(.status.phase=="Succeeded" or .status.phase=="Failed" or .status.reason=="Evicted") |
"\(.metadata.namespace) \(.metadata.name)"' | \
xargs -n2 bash -c 'kubectl delete pod -n $0 $1 --ignore-not-found=true'


Чистый кластер — счастливый кластер.

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍1
🐋 Отладка Docker-сборок в Visual Studio Code

Теперь вы можете отлаживать Dockerfile прямо в VS Code, как обычный код.

Что умеет новый отладчик

• Ставьте брейкпоинты на любую инструкцию RUN в Dockerfile и останавливайте сборку именно в этом месте.

• Смотрите все переменные окружения, аргументы сборки, рабочую директорию и другие параметры прямо в панели Variables.

• Исследуйте структуру файлов внутри образа на любом этапе сборки. Видите, что скопировалось, что нет, и даже можете просматривать содержимое текстовых файлов.

• Когда сборка приостановлена на брейкпоинте, введите команду exec в Debug Console — и вы получите живой shell внутри образа, который сейчас собирается.

➡️ Попробовать фишки

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10
📎 Запустил и забыл

screen — это программа, которая не даёт вашим командам на сервере прерваться, если интернет пропал или вы закрыли терминал.

Как пользоваться

Создать новую сессию:
screen -S my-task


Теперь вы внутри screen. Запускайте команды как обычно.

Выйти из сессии (она продолжит работать):
Нажмите Ctrl+A, отпустите, потом нажмите D

Посмотреть все запущенные сессии:
screen -ls


Вернуться в сессию:
screen -r my-task


Открыть ещё одну вкладку внутри screen:
Ctrl+A, потом C

Переключаться между вкладками:

Ctrl+A, потом N — следующая вкладка
Ctrl+A, потом P — предыдущая вкладка
Ctrl+A, потом цифра (0, 1, 2...) — конкретная вкладка

Убить конкретную сессию:
screen -X -S 12345 quit


Лайфхак: всегда давайте сессиям понятные имена (-S backup, -S deploy), а не оставляйте автоматические номера — так проще найти нужную.

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71
📊 Структурированное логирование ошибок: практическое руководство

Неинформативные логи типа «Error!» затрудняют отладку. В проде поиск проблемы занимает часы.

Решение: 6-значная система кодирования
01 01 03
│ │ └─ Тип ошибки
│ └──── Сервис
└─────── Модуль


Первые 2 цифры — модуль:

01 — User
02 — Shipping
03 — Order
04 — Payment
05 — Notification

Средние 2 цифры — сервис:

01 — Database
02 — External API
03 — Payment Gateway
04 — Cache
05 — Queue

Последние 2 цифры — тип:

01 — Configuration
02 — Authentication
03 — Timeout
04 — Validation
05 — Not Found

Уровни серьёзности:

Low — информационные сообщения, не требуют действий
Medium — влияют на UX, требуют исправления
High — нарушают работу функционала
Critical — полный отказ системы, требуют немедленной реакции

Как выглядит лог в Json:
{
code: '010103', // Код ошибки
level: 'Medium', // Уровень
message: 'Clear text', // Описание
timestamp: '2025-10-29T...',

// Контекст
userId: 12345,
requestId: 'req-abc-123',
service: 'UserService',

// Технические детали
stack: error.stack,
duration: 3450
}


Минимальный старт

1. Определите 3-5 основных модулей
2. Создайте таблицу кодов
3. Добавьте структурированное логирование в критичные места
4. Настройте алерты на Critical
5. Постепенно расширяйте покрытие

Наши курсы построены по тому же принципу: чёткая структура, конкретные практические примеры, измеримые результаты. 3 дня до конца скидок!

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM