DevOps Ready | IT
8.08K subscribers
903 photos
78 videos
523 links
Авторский канал по DevOps разработке.
Ресурсы, обучения, задачи, шпаргалки.
Ежедневно информация пополняется!

Cотрудничество: @energy_c
Download Telegram
Памятка по диагностике OOM в Linux!

Сообщение OOM означает, что ядро завершило процесс из-за нехватки памяти или достижения лимита cgroup. Для поиска причины важно сопоставить запись ядра, давление памяти и лимиты конкретного сервиса.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍5❤2
Знали, как обработать фоновые задачи по мере их завершения?

Если запускать wait для PID по очереди, shell будет ждать именно выбранный процесс, даже когда другой уже закончил работу. В Bash 5.1 и новее wait -n возвращает статус первой завершившейся задачи, а -p записывает её PID в переменную:
./build-api.sh &
./build-web.sh &


Запускаем обе команды в фоне. После этого можно дождаться любой из них, не привязываясь к порядку запуска:
if wait -n -p finished; then
    printf 'PID %s: ok\n' "$finished"
fi


Переменная finished содержит PID завершившегося дочернего процесса. Проверка через if важна при включённом set -e, потому что ненулевой код дочерней команды не должен прервать обработку раньше времени.

Чтобы дождаться обеих задач и сохранить общий статус ошибки, повторяем ожидание ровно столько раз, сколько процессов запустили:
failed=0
for _ in 1 2; do
    if wait -n -p finished; then
        printf '%s ok\n' "$finished"
    else
        failed=1
    fi
done


Так ошибка первой команды не скрывает результат второй. Для другого числа задач меняется число повторов, а wait -n -p требует Bash 5.1 или новее.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥4
Шпаргалка по основным командам Terraform!

На картинке собраны init, validate, plan, apply и destroy. Схема показывает, на каком шаге Terraform подготавливает рабочую папку, проверяет конфигурацию, показывает будущие изменения и действительно меняет инфраструктуру.

Сохрани, чтобы не потерять!

➡️ DevOps Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
На Stepik вышла программа «DevOps с нуля в эпоху AI: от Linux до Kubernetes [2026]»

Это комплексная программа из 5 практических курсов по ключевым технологиям DevOps: Linux, Git, Docker, GitLab CI/CD, Kubernetes

Полный путь от основ до продакшена: вы научитесь настраивать Linux, упаковывать приложения в Docker, автоматизировать деплой через GitLab CI/CD и управлять контейнерами в Kubernetes.

Что вы изучите:
• работу с Linux и командной строкой
• Git и контроль версий в реальных проектах
• создание Docker-образов и запуск контейнеров
• автоматизацию сборки, тестирования и деплоя в GitLab CI/CD
• развёртывание и управление приложениями в Kubernetes
• сети, хранилища, конфигурации и секреты
• диагностику инфраструктуры и автоматизацию рутинных задач
... и многое другое

Все знания закрепляются на практике с помощью заданий с автопроверкой.

Материал подаётся последовательно и понятным языком: с примерами, схемами и демонстрациями. Во время обучения можно задавать вопросы по урокам и заданиям, получать обратную связь и помощь при возникновении сложностей.

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

Скидка 20% на 48 часов: по промокоду READY20 стоимость всей программы составит 10 392 ₽.

Открыть программу на Stepik
👎5👍3❤1😁1
Готовим Kubernetes-ноду к обслуживанию!

Перед обновлением ядра или заменой диска сначала проверяем размещённые Pod и доступность реплик. Затем запрещаем новые назначения, эвакуируем рабочие нагрузки через Eviction API и только после завершения drain начинаем обслуживание.

Смотрим ноду и Pod, которые на ней размещены:
kubectl get node worker-3
kubectl get pods -A -o wide --field-selector spec.nodeName=worker-3


Проверка помогает заметить одиночные экземпляры и Pod без контроллера до остановки ноды.

Снимаем ноду с планирования новых Pod:
kubectl cordon worker-3
kubectl get node worker-3


Существующие Pod продолжают работать, а новые на эту ноду не назначаются. Перед drain дополнительно проверяем PodDisruptionBudget и запас ёмкости на остальных узлах.

Запускаем штатное выселение с ограничением по времени:
kubectl drain worker-3 \
--ignore-daemonsets --timeout=10m


После обслуживания возвращаем узел в планирование:
kubectl uncordon worker-3
kubectl get node worker-3


Нода должна быть Ready, а системные и прикладные Pod должны восстановиться. Проверяем распределение реплик и события кластера.

➡️ DevOps Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
Собираем нужный сетевой трафик через tcpdump!

Команда помогает проверить соединения прямо на Linux-хосте и сохранить пакеты для повторного разбора. В шпоре собраны фильтры по интерфейсу, адресу, порту и протоколу, а также ограничение объёма захвата.

➡️ DevOps Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2❤1
🖥 0nix - место встречи тех, кто в IT

Пишешь код, изучаешь информационную безопасность или только выбираешь своё направление? На 0nix.cc есть место и новичкам, и опытным специалистам.

🛡 ИБ и приватность — пентест, OSINT, защита данных и разбор инструментов.
⚙️ Разработка — обсуждение задач, поиск специалистов и предложения своих услуг.
📕 Обучение — статьи, гайды и разборы, к которым удобно возвращаться.
💡 Возможности — работа, партнёры и проекты в профильных разделах.

Задавай вопросы, делись опытом и находи своих.
Твоя следующая полезная тема — на 0nix.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Знали, почему find и xargs нужно соединять через NUL-разделитель?

Имена файлов могут содержать пробелы, табуляцию и даже перенос строки. Обычный список, разделённый переводами строк, теряет границы имён и может передать команде неверные аргументы.

В GNU find используем print0, чтобы завершать каждое имя нулевым байтом:
find /srv/uploads -type f -print0


xargs -0 читает тот же формат и сохраняет каждое имя целиком. Например, так безопасно передаём найденные файлы на проверку контрольной суммы:
find /srv/uploads -type f -print0 | \
  xargs -0 -r sha256sum --


Ключ -r у GNU xargs не запускает sha256sum, если find ничего не нашёл. Завершающий -- отделяет параметры команды от имён файлов, которые могут начинаться с дефиса.

Для независимых файлов можно ограниченно распараллелить обработку:
find /srv/uploads -type f -print0 | \
  xargs -0 -r -n 1 -P 4 sha256sum --


Здесь одновременно работают не более четырёх процессов, а -n 1 передаёт каждому ровно один путь. Число процессов подбирают по нагрузке и возможностям команды.

➡️ DevOps Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1👍1