🤔 Что такое cherry pick?
Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.
🚩Когда используется
🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям,
🚩Примеры использования
🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
🚩Разрешение конфликтов
1⃣Разрешите конфликты в файлах.
2⃣Добавьте изменения в индекс
3⃣Завершите процесс
🚩Прерывание
Если вы хотите прервать процесс
Ставь 👍 и забирай 📚 Базу знаний
Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.
🚩Когда используется
🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям,
cherry-pick позволяет аккуратно перенести только нужные коммиты.🚩Примеры использования
🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick коммита
git cherry-pick <commit-hash>
🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>
🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch
# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>
🚩Разрешение конфликтов
1⃣Разрешите конфликты в файлах.
2⃣Добавьте изменения в индекс
git add <filename>
3⃣Завершите процесс
cherry-pick git cherry-pick --continue
🚩Прерывание
Если вы хотите прервать процесс
cherry-pick, можно использовать командуgit cherry-pick --abort
Ставь 👍 и забирай 📚 Базу знаний
🔥3
🤔 Как сделать отказоустойчивый кластер Kubernetes?
Чтобы обеспечить отказоустойчивость:
1. Master-ноды в HA:
- Несколько control-plane-нод за балансировщиком (HAProxy, nginx, keepalived).
- etcd кластер в odd-количестве узлов (3+).
2. Worker-ноды:
- Несколько нод в разных зонах (для облаков — Availability Zones).
- Использование PodDisruptionBudget и antiAffinity.
3. Ingress и LoadBalancer:
- Балансировка между ingress-нодами.
- Использование внешнего L4-балансировщика.
4. Мониторинг и алерты:
- Prometheus + Alertmanager.
- Проверка готовности/живости, рестарт в случае сбоев.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
1. Master-ноды в HA:
- Несколько control-plane-нод за балансировщиком (HAProxy, nginx, keepalived).
- etcd кластер в odd-количестве узлов (3+).
2. Worker-ноды:
- Несколько нод в разных зонах (для облаков — Availability Zones).
- Использование PodDisruptionBudget и antiAffinity.
3. Ingress и LoadBalancer:
- Балансировка между ingress-нодами.
- Использование внешнего L4-балансировщика.
4. Мониторинг и алерты:
- Prometheus + Alertmanager.
- Проверка готовности/живости, рестарт в случае сбоев.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🔥6👍1
🤔 Что за протокол http, зачем он нужен?
HTTP (HyperText Transfer Protocol) — это протокол передачи данных в интернете. Он используется для обмена данными между клиентом (браузером) и сервером.
🚩Пример работы HTTP
Браузер отправляет запрос →
Сервер отвечает → HTML-страницей (
Браузер отображает страницу.
🚩Основные принципы HTTP
Клиент-серверная модель → браузер запрашивает, сервер отвечает.
Без состояния (stateless) → каждый запрос независим (нет сессий).
Текстовый протокол → данные передаются в читаемом формате.
🚩Структура HTTP-запроса
Пример запроса от браузера к серверу
Ставь 👍 и забирай 📚 Базу знаний
HTTP (HyperText Transfer Protocol) — это протокол передачи данных в интернете. Он используется для обмена данными между клиентом (браузером) и сервером.
🚩Пример работы HTTP
Браузер отправляет запрос →
"GET /index.html HTTP/1.1". Сервер отвечает → HTML-страницей (
200 OK). Браузер отображает страницу.
🚩Основные принципы HTTP
Клиент-серверная модель → браузер запрашивает, сервер отвечает.
Без состояния (stateless) → каждый запрос независим (нет сессий).
Текстовый протокол → данные передаются в читаемом формате.
🚩Структура HTTP-запроса
Пример запроса от браузера к серверу
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Ставь 👍 и забирай 📚 Базу знаний
🤔 За счёт чего достигается завершение пода с определённой скоростью и по таймингам?
Контролируется через:
- terminationGracePeriodSeconds — время ожидания graceful shutdown перед SIGKILL.
- PreStop Hook — команда, выполняемая перед остановкой.
- Liveness/Readiness Probes — позволяют избежать остановки здоровых подов.
- lifecycle хуки — логика перед/после завершения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- terminationGracePeriodSeconds — время ожидания graceful shutdown перед SIGKILL.
- PreStop Hook — команда, выполняемая перед остановкой.
- Liveness/Readiness Probes — позволяют избежать остановки здоровых подов.
- lifecycle хуки — логика перед/после завершения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как дебажить поды в Kubernetes?
Когда под (Pod) не работает или ведёт себя странно, нужно уметь его дебажить.
🟠Проверить статус пода
Сначала смотрим, работает ли под вообще
🟠Посмотреть логи контейнера
Если под запустился, но работает странно, смотрим логи:
Если в поде несколько контейнеров:
Если под перезапускается, а нам нужны старые логи:
🟠Проверить события (`describe`)
Смотрим подробную информацию о поде:
🟠Зайти внутрь контейнера (`exec`)
Если под запущен, можно подключиться внутрь и посмотреть файлы, процессы:
Если в контейнере есть только
Полезные команды внутри контейнера:
🟠Проверить манифест пода (`get pod -o yaml`)
Если под ведёт себя странно, можно посмотреть его полное описание:
🟠Проверить ресурсы (describe node)
Иногда под не запускается из-за нехватки CPU или памяти. Проверяем узел (
Если проблема с ресурсами, будет что-то вроде:
🟠Проверить сеть (`nslookup`, `ping`, `curl`)
Если под не может достучаться до сервиса, тестируем сеть:
🟠Дебажить с помощью `kubectl debug` (Kubernetes 1.23+)
Если под не стартует, можно запустить дебажный контейнер
Ставь 👍 и забирай 📚 Базу знаний
Когда под (Pod) не работает или ведёт себя странно, нужно уметь его дебажить.
🟠Проверить статус пода
Сначала смотрим, работает ли под вообще
kubectl get pods
🟠Посмотреть логи контейнера
Если под запустился, но работает странно, смотрим логи:
kubectl logs pod-name
Если в поде несколько контейнеров:
kubectl logs pod-name -c container-name
Если под перезапускается, а нам нужны старые логи:
kubectl logs pod-name --previous
🟠Проверить события (`describe`)
Смотрим подробную информацию о поде:
kubectl describe pod pod-name
🟠Зайти внутрь контейнера (`exec`)
Если под запущен, можно подключиться внутрь и посмотреть файлы, процессы:
kubectl exec -it pod-name -- /bin/sh
Если в контейнере есть только
bash: kubectl exec -it pod-name -- /bin/bash
Полезные команды внутри контейнера:
ps aux # Смотрим запущенные процессы
netstat -tulnp # Проверяем открытые порты
env # Проверяем переменные окружения
cat /etc/resolv.conf # Проверяем DNS
🟠Проверить манифест пода (`get pod -o yaml`)
Если под ведёт себя странно, можно посмотреть его полное описание:
kubectl get pod pod-name -o yaml
🟠Проверить ресурсы (describe node)
Иногда под не запускается из-за нехватки CPU или памяти. Проверяем узел (
node): kubectl describe node node-name
Если проблема с ресурсами, будет что-то вроде:
Warning FailedScheduling insufficient memory
🟠Проверить сеть (`nslookup`, `ping`, `curl`)
Если под не может достучаться до сервиса, тестируем сеть:
kubectl exec -it pod-name -- nslookup service-name
kubectl exec -it pod-name -- ping 8.8.8.8
kubectl exec -it pod-name -- curl http://service-name:8080
🟠Дебажить с помощью `kubectl debug` (Kubernetes 1.23+)
Если под не стартует, можно запустить дебажный контейнер
kubectl debug pod-name -it --image=busybox
Ставь 👍 и забирай 📚 Базу знаний
🔥4
🤔 Какие технологии написания есть?
Могут быть:
- Скриптовые: Python, Bash, PowerShell;
- Объектно-ориентированные: Java, C#, C++;
- Функциональные: Scala, Haskell, Elixir;
- Декларативные: YAML, JSON, Terraform, SQL.
Выбор зависит от задачи и среды исполнения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Могут быть:
- Скриптовые: Python, Bash, PowerShell;
- Объектно-ориентированные: Java, C#, C++;
- Функциональные: Scala, Haskell, Elixir;
- Декларативные: YAML, JSON, Terraform, SQL.
Выбор зависит от задачи и среды исполнения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
💊9
🤔 Как linux выбирает, какой из процессов завершить?
Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.
🚩Как работает OOM Killer?
🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).
🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.
🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.
🚩Пример расчета OOM Score
🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)
🚩Настройка OOM Killer
Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге
🚩Логирование и мониторинг
При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно
Ставь 👍 и забирай 📚 Базу знаний
Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.
🚩Как работает OOM Killer?
🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).
🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.
🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.
🚩Пример расчета OOM Score
🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)
🚩Настройка OOM Killer
Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге
/proc. Например, для изменения приоритета процесса:echo -1000 > /proc/<PID>/oom_score_adj
🚩Логирование и мониторинг
При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно
/var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.Ставь 👍 и забирай 📚 Базу знаний
👍2
🤔 Что такое SRE, чем отличается от DevOps?
- SRE (Site Reliability Engineering) — инженерная практика от Google.
- Фокус на доступности, стабильности, SLO, SLA.
- Работает с ошибками, алертами, инцидентами.
- DevOps — культурный подход, объединяющий разработку и эксплуатацию.
SRE — это инженерная реализация DevOps, с акцентом на метрики и надёжность.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- SRE (Site Reliability Engineering) — инженерная практика от Google.
- Фокус на доступности, стабильности, SLO, SLA.
- Работает с ошибками, алертами, инцидентами.
- DevOps — культурный подход, объединяющий разработку и эксплуатацию.
SRE — это инженерная реализация DevOps, с акцентом на метрики и надёжность.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍3🔥3
🤔 Сколько часов живёт один вал Prometeus CICD?
Вал (или "валидность данных") в Prometheus определяется настройками временного диапазона хранения данных. Обычно данные в Prometheus живут столько, сколько задано в параметре
🟠По умолчанию
Если не указать параметр
🟠Как изменить время жизни данных
Вы можете настроить период хранения данных, передав значение параметра при запуске Prometheus:
CLI-параметр:
🟠Конфигурационный файл
Если Prometheus запускается как часть системы CI/CD через Docker Compose, Kubernetes или другой инструмент, параметр указывается в соответствующем разделе.
🚩Почему это важно?
🟠Оптимизация дискового пространства
Большие периоды хранения требуют больше дискового пространства. Если валидация данных больше не нужна, лучше очищать старые временные ряды.
🟠Баланс производительности
Длительное хранение может замедлить обработку запросов, особенно если используемые метрики застарелые или редко запрашиваются.
🟠Потребности CI/CD
Для CI/CD-пайплайнов обычно достаточно короткого периода (например, 7–15 дней), чтобы сохранять данные релевантными и свежими.
🟠Пример настройки в CI/CD контексте
Если вы хотите, чтобы метрики для CI/CD жили 12 часов (подходящий срок для проверки тестов и сборок), настройте
🚩Как проверить текущий срок хранения?
🟠В интерфейсе Prometheus
Перейдите на страницу
🟠Через командную строку
Проверьте журнал запуска Prometheus или конфигурационный файл.
Ставь 👍 и забирай 📚 Базу знаний
Вал (или "валидность данных") в Prometheus определяется настройками временного диапазона хранения данных. Обычно данные в Prometheus живут столько, сколько задано в параметре
--storage.tsdb.retention.time, который устанавливает период хранения временных рядов.🟠По умолчанию
Если не указать параметр
--storage.tsdb.retention.time, данные хранятся 15 дней. Это соответствует 360 часам.🟠Как изменить время жизни данных
Вы можете настроить период хранения данных, передав значение параметра при запуске Prometheus:
CLI-параметр:
prometheus --storage.tsdb.retention.time=30d
🟠Конфигурационный файл
Если Prometheus запускается как часть системы CI/CD через Docker Compose, Kubernetes или другой инструмент, параметр указывается в соответствующем разделе.
services:
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=7d' # 7 дней (168 часов)
🚩Почему это важно?
🟠Оптимизация дискового пространства
Большие периоды хранения требуют больше дискового пространства. Если валидация данных больше не нужна, лучше очищать старые временные ряды.
🟠Баланс производительности
Длительное хранение может замедлить обработку запросов, особенно если используемые метрики застарелые или редко запрашиваются.
🟠Потребности CI/CD
Для CI/CD-пайплайнов обычно достаточно короткого периода (например, 7–15 дней), чтобы сохранять данные релевантными и свежими.
🟠Пример настройки в CI/CD контексте
Если вы хотите, чтобы метрики для CI/CD жили 12 часов (подходящий срок для проверки тестов и сборок), настройте
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=12h'
🚩Как проверить текущий срок хранения?
🟠В интерфейсе Prometheus
Перейдите на страницу
/status → /status/flags, где можно увидеть значение параметра --storage.tsdb.retention.time.🟠Через командную строку
Проверьте журнал запуска Prometheus или конфигурационный файл.
Ставь 👍 и забирай 📚 Базу знаний
💊3🤔1
🤔 Что такое Continuous Deployment?
Это практика, при которой каждая успешная сборка автоматически разворачивается в прод, без ручного вмешательства. Подразумевает высокий уровень автоматизации, покрытие тестами и зрелость процессов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Это практика, при которой каждая успешная сборка автоматически разворачивается в прод, без ручного вмешательства. Подразумевает высокий уровень автоматизации, покрытие тестами и зрелость процессов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В каких случаях используется multi stage?
Multi-stage (многоэтапная сборка) — это метод создания Docker-образов, позволяющий уменьшить их размер и повысить безопасность.
🚩Когда используется?
🟠Оптимизация размера образа
удаляем ненужные зависимости из финального образа.
🟠Безопасность
не включаем инструменты сборки в рабочий контейнер.
🟠Скорость деплоя
меньший образ быстрее скачивается и запускается.
🟠Кросс-компиляция
собираем приложение в одном окружении, а запускаем в другом.
🚩Пример использования Multi-stage в Docker
Допустим, у нас есть приложение на Go. Мы сначала компилируем его в одном контейнере, а затем создаем минимальный образ для запуска.
🚩Использование в React / Angular / Vue
При сборке фронтенда мы можем сначала установить зависимости и собрать проект, а затем развернуть его на
Ставь 👍 и забирай 📚 Базу знаний
Multi-stage (многоэтапная сборка) — это метод создания Docker-образов, позволяющий уменьшить их размер и повысить безопасность.
🚩Когда используется?
🟠Оптимизация размера образа
удаляем ненужные зависимости из финального образа.
🟠Безопасность
не включаем инструменты сборки в рабочий контейнер.
🟠Скорость деплоя
меньший образ быстрее скачивается и запускается.
🟠Кросс-компиляция
собираем приложение в одном окружении, а запускаем в другом.
🚩Пример использования Multi-stage в Docker
Допустим, у нас есть приложение на Go. Мы сначала компилируем его в одном контейнере, а затем создаем минимальный образ для запуска.
# Этап 1: сборка
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Этап 2: минимальный образ для запуска
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]
🚩Использование в React / Angular / Vue
При сборке фронтенда мы можем сначала установить зависимости и собрать проект, а затем развернуть его на
nginx. # Этап 1: сборка приложения
FROM node:18 AS builder
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
# Этап 2: деплой на nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Какие элементы мониторинга вы знаете, из чего он состоит в большинстве своём?
Мониторинг включает:
- Сбор метрик (экспортёры, агенты, SNMP),
- Хранилище данных (TSDB: Prometheus, InfluxDB),
- Визуализацию (Grafana, Zabbix frontend),
- Алерты (Alertmanager, Email, Telegram),
- Логирование (ELK, Loki),
- Проверку доступности (Blackbox exporter, Pingdom),
- Систему трассировки (Jaeger, Zipkin).
Полноценный мониторинг — это не только метрики, но и трассировка, логи, алерты и дашборды.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Мониторинг включает:
- Сбор метрик (экспортёры, агенты, SNMP),
- Хранилище данных (TSDB: Prometheus, InfluxDB),
- Визуализацию (Grafana, Zabbix frontend),
- Алерты (Alertmanager, Email, Telegram),
- Логирование (ELK, Loki),
- Проверку доступности (Blackbox exporter, Pingdom),
- Систему трассировки (Jaeger, Zipkin).
Полноценный мониторинг — это не только метрики, но и трассировка, логи, алерты и дашборды.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍1🔥1
🤔 Какой командой можно показать все работающие процессы на Linux?
Для отображения всех работающих процессов в Linux можно использовать несколько команд. Самые популярные из них:
🚩Команда `ps`
🟠`ps aux`
Показывает все процессы, запущенные в системе, включая пользователей и системные демоны.
🟠`ps -ef`
Альтернативный стиль вывода всех процессов с более детальной информацией.
🚩Команда `top`
Запуск
🚩Команда `htop`
Запуск
🚩Команда `pgrep`
Пример
🚩Команда `systemctl` (для сервисов)
Если вы хотите посмотреть системные службы
🚩Какую команду выбрать?
🟠Для быстрого снимка
🟠Для мониторинга в реальном времени
🟠Для поиска конкретного процесса
Ставь 👍 и забирай 📚 Базу знаний
Для отображения всех работающих процессов в Linux можно использовать несколько команд. Самые популярные из них:
ps, top, htop и pgrep. Каждая из них имеет свои особенности.🚩Команда `ps`
ps выводит снимок (snapshot) текущих процессов в момент выполнения команды.🟠`ps aux`
Показывает все процессы, запущенные в системе, включая пользователей и системные демоны.
ps aux
🟠`ps -ef`
Альтернативный стиль вывода всех процессов с более детальной информацией.
ps -ef
🚩Команда `top`
top — интерактивная утилита для отображения всех запущенных процессов в реальном времени. Вывод обновляется автоматически.Запуск
top
🚩Команда `htop`
htop — более современная и удобная версия top. Требуется предварительная установка:sudo apt install htop # Для Ubuntu/Debian
sudo yum install htop # Для CentOS/RHEL
Запуск
htop
🚩Команда `pgrep`
pgrep используется для поиска процессов по имени, но с дополнительными опциями можно вывести все процессы.Пример
pgrep -a ""
🚩Команда `systemctl` (для сервисов)
Если вы хотите посмотреть системные службы
systemctl list-units --type=service
🚩Какую команду выбрать?
🟠Для быстрого снимка
ps aux. 🟠Для мониторинга в реальном времени
top или htop. 🟠Для поиска конкретного процесса
pgrep <имя процесса>.Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Что происходит в тот момент, когда вы набираете в браузере, например, google.com?
1. Выполняется DNS-запрос для получения IP-адреса сервера.
2. Устанавливается TCP-соединение с сервером.
3. При использовании HTTPS устанавливается TLS-соединение.
4. Браузер отправляет HTTP-запрос, сервер возвращает ответ.
5. Полученные данные рендерятся в браузере.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
2. Устанавливается TCP-соединение с сервером.
3. При использовании HTTPS устанавливается TLS-соединение.
4. Браузер отправляет HTTP-запрос, сервер возвращает ответ.
5. Полученные данные рендерятся в браузере.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍4🤔1
🤔 Как можно визуализировать логи?
Визуализация логов — это процесс представления лог-файлов в удобном графическом виде для более легкого анализа, поиска аномалий и устранения проблем. Для этого используются различные инструменты, которые собирают, агрегируют и отображают логи в виде графиков, дашбордов и диаграмм.
🚩Почему нужна визуализация логов?
🟠Упрощает анализ
вместо просмотра тысяч строк логов можно быстро увидеть тенденции и аномалии.
🟠Помогает в мониторинге
можно отслеживать изменения в режиме реального времени.
🟠Ускоряет диагностику проблем
легче выявить причину ошибки, если видеть всплески или изменения в логах.
🟠Облегчает работу с большими объемами данных
миллионы строк логов можно представить в виде сводных диаграмм.
🚩Какие инструменты используются?
🟠ELK Stack (Elasticsearch + Logstash + Kibana)
Logstash – собирает и обрабатывает логи.
Elasticsearch – хранит и индексирует логи для быстрого поиска.
Kibana – визуализирует данные, строит графики и дашборды.
Пример: Можно создать график с количеством ошибок 500 за последние 24 часа.
🟠Grafana + Loki (альтернатива ELK)
Loki – хранит и обрабатывает логи.
Grafana – строит красивые дашборды с логами и метриками.
Пример: Можно создать панель с последними логами приложений, используя
🟠Graylog
Обрабатывает логи, хранит их в Elasticsearch, строит графики и отправляет алерты.
Пример: Можно отфильтровать логи по уровню
🟠Datadog, Splunk, New Relic
Коммерческие решения с мощными инструментами аналитики логов.
Пример: Автоматическая корреляция логов с метриками системы.
🚩Простой пример работы с ELK
Logstash конфиг (сбор логов из файла)
Ставь 👍 и забирай 📚 Базу знаний
Визуализация логов — это процесс представления лог-файлов в удобном графическом виде для более легкого анализа, поиска аномалий и устранения проблем. Для этого используются различные инструменты, которые собирают, агрегируют и отображают логи в виде графиков, дашбордов и диаграмм.
🚩Почему нужна визуализация логов?
🟠Упрощает анализ
вместо просмотра тысяч строк логов можно быстро увидеть тенденции и аномалии.
🟠Помогает в мониторинге
можно отслеживать изменения в режиме реального времени.
🟠Ускоряет диагностику проблем
легче выявить причину ошибки, если видеть всплески или изменения в логах.
🟠Облегчает работу с большими объемами данных
миллионы строк логов можно представить в виде сводных диаграмм.
🚩Какие инструменты используются?
🟠ELK Stack (Elasticsearch + Logstash + Kibana)
Logstash – собирает и обрабатывает логи.
Elasticsearch – хранит и индексирует логи для быстрого поиска.
Kibana – визуализирует данные, строит графики и дашборды.
Пример: Можно создать график с количеством ошибок 500 за последние 24 часа.
🟠Grafana + Loki (альтернатива ELK)
Loki – хранит и обрабатывает логи.
Grafana – строит красивые дашборды с логами и метриками.
Пример: Можно создать панель с последними логами приложений, используя
tail-подобное обновление. 🟠Graylog
Обрабатывает логи, хранит их в Elasticsearch, строит графики и отправляет алерты.
Пример: Можно отфильтровать логи по уровню
ERROR и вывести их в виде диаграммы. 🟠Datadog, Splunk, New Relic
Коммерческие решения с мощными инструментами аналитики логов.
Пример: Автоматическая корреляция логов с метриками системы.
🚩Простой пример работы с ELK
Logstash конфиг (сбор логов из файла)
input {
file {
path => "/var/log/app.log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
}Ставь 👍 и забирай 📚 Базу знаний
👍1
🤔 Для чего нужны пробы в Kubernetes?
Пробы (probes) используются для определения состояния контейнера.
- Liveness — показывает, жив ли контейнер (если нет — будет перезапущен).
- Readiness — показывает, готов ли контейнер принимать трафик.
- Startup — определяет, когда приложение полностью загрузилось, особенно полезно при долгом старте.
Они помогают Kubernetes принимать решения о перезапуске, маршрутизации и health-чек.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Liveness — показывает, жив ли контейнер (если нет — будет перезапущен).
- Readiness — показывает, готов ли контейнер принимать трафик.
- Startup — определяет, когда приложение полностью загрузилось, особенно полезно при долгом старте.
Они помогают Kubernetes принимать решения о перезапуске, маршрутизации и health-чек.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как сделать донастройку контейнера?
Донастройка контейнера может понадобиться, если:
Нужно изменить файлы конфигурации.
Установить дополнительные пакеты.
Задать переменные среды.
Подключить тома или сети.
Варианты донастройки: через Dockerfile, docker-compose, exec, тома и Entrypoint/CMD.
🟠Донастройка через Dockerfile (Лучший способ)
Если контейнер нужно модифицировать перед запуском, создаем свой
Собираем новый образ
🟠Донастройка через `docker-compose` (Гибкость)
Можно задать окружение, тома, команды.
Запуск
🟠Донастройка запущенного контейнера (`docker exec`)
Если контейнер уже работает, можно внести изменения прямо в него.
🟠Донастройка через тома (Volumes)
Если нужно изменять файлы без пересборки образа, подключаем тома.
🟠Использование `ENTRYPOINT` или `CMD`
Можно задать скрипт донастройки, который выполнится при старте контейнера.
В
Ставь 👍 и забирай 📚 Базу знаний
Донастройка контейнера может понадобиться, если:
Нужно изменить файлы конфигурации.
Установить дополнительные пакеты.
Задать переменные среды.
Подключить тома или сети.
Варианты донастройки: через Dockerfile, docker-compose, exec, тома и Entrypoint/CMD.
🟠Донастройка через Dockerfile (Лучший способ)
Если контейнер нужно модифицировать перед запуском, создаем свой
Dockerfile на основе существующего образа. FROM nginx:latest
COPY my-nginx.conf /etc/nginx/nginx.conf
CMD ["nginx", "-g", "daemon off;"]
Собираем новый образ
docker build -t my-nginx .
docker run -d -p 80:80 my-nginx
🟠Донастройка через `docker-compose` (Гибкость)
Можно задать окружение, тома, команды.
version: '3'
services:
db:
image: postgres:15
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: secret
POSTGRES_DB: mydb
volumes:
- ./custom-postgres.conf:/etc/postgresql/postgresql.conf
command: postgres -c config_file=/etc/postgresql/postgresql.conf
Запуск
docker-compose up -d
🟠Донастройка запущенного контейнера (`docker exec`)
Если контейнер уже работает, можно внести изменения прямо в него.
docker exec -it my-container bash
apt update && apt install -y vim
🟠Донастройка через тома (Volumes)
Если нужно изменять файлы без пересборки образа, подключаем тома.
docker run -d -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf nginx
🟠Использование `ENTRYPOINT` или `CMD`
Можно задать скрипт донастройки, который выполнится при старте контейнера.
FROM postgres:15
COPY setup.sh /docker-entrypoint-initdb.d/setup.sh
RUN chmod +x /docker-entrypoint-initdb.d/setup.sh
В
setup.sh: #!/bin/bash
psql -U postgres -d mydb -c "CREATE TABLE test (id SERIAL PRIMARY KEY);"
Ставь 👍 и забирай 📚 Базу знаний
🤔 Как сирота отличается от зомби процесса?
1. Сирота: процесс, у которого родитель завершился, но сам процесс продолжает работать. Управление сиротой передаётся init.
2. Зомби: процесс завершён, но его запись остаётся в таблице процессов до тех пор, пока родительский процесс не обработает статус завершения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
2. Зомби: процесс завершён, но его запись остаётся в таблице процессов до тех пор, пока родительский процесс не обработает статус завершения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
👍5
🤔 Как в линуксе посмотреть список дескрипторов файлов?
В Linux список дескрипторов файлов можно посмотреть, используя утилиты и команды, которые позволяют работать с процессами и их открытыми файлами. Основным методом является использование файловой системы
🚩Основные способы
🟠Команда `ls` в каталоге `/proc/[PID]/fd`
Каждый процесс в Linux имеет свой подкаталог в
Вывод
🟠Использование `lsof`
Команда
Пример для всех процессов
Вывод
🟠Использование `lsfd`
Утилита
Вывод
🚩Полезные флаги и фильтрация
Список дескрипторов определенного пользователя:
Список файлов определенного типа (например, сокеты):
Фильтрация по определенному файлу или устройству:
🚩Почему важно знать про дескрипторы?
🟠Отладка приложений
Определение, какие файлы, сокеты или устройства использует процесс.
🟠Устранение утечек
Проверка, остаются ли ненужные дескрипторы открытыми.
🟠Администрирование
Диагностика проблем, связанных с блокировкой файлов.
Ставь 👍 и забирай 📚 Базу знаний
В Linux список дескрипторов файлов можно посмотреть, используя утилиты и команды, которые позволяют работать с процессами и их открытыми файлами. Основным методом является использование файловой системы
/proc, которая содержит информацию о процессах, включая их открытые файловые дескрипторы.🚩Основные способы
🟠Команда `ls` в каталоге `/proc/[PID]/fd`
Каждый процесс в Linux имеет свой подкаталог в
/proc с идентификатором процесса (PID). В подкаталоге fd хранятся ссылки на открытые дескрипторы файлов.ls -l /proc/$(pidof <имя_процесса>)/fd
Вывод
lrwx------ 1 user user 64 Dec 23 12:00 0 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 1 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 2 -> /dev/pts/0
🟠Использование `lsof`
Команда
lsof (list open files) отображает список всех открытых файлов в системе.lsof -p <PID>
Пример для всех процессов
lsof
Вывод
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user cwd DIR 8,1 4096 256 /home/user
bash 1234 user rtd DIR 8,1 4096 2 /
bash 1234 user 0u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 1u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 2u CHR 136,0 0 3 /dev/pts/0
🟠Использование `lsfd`
Утилита
lsfd (из пакета util-linux) удобна для просмотра файловых дескрипторов.lsfd
Вывод
PID FD TTY TYPE DEVICE SIZE/OFF NODE NAME
1234 0 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 1 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 2 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
🚩Полезные флаги и фильтрация
Список дескрипторов определенного пользователя:
lsof -u <имя_пользователя>
Список файлов определенного типа (например, сокеты):
lsof -i
Фильтрация по определенному файлу или устройству:
lsof /path/to/file
🚩Почему важно знать про дескрипторы?
🟠Отладка приложений
Определение, какие файлы, сокеты или устройства использует процесс.
🟠Устранение утечек
Проверка, остаются ли ненужные дескрипторы открытыми.
🟠Администрирование
Диагностика проблем, связанных с блокировкой файлов.
Ставь 👍 и забирай 📚 Базу знаний
👍3
🤔 Через что делается создание неймспейсов и запуск деплойментов?
- Всё делается через kube-apiserver, к которому обращаются:
- kubectl
- другие компоненты
- CI/CD пайплайны
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
- Всё делается через kube-apiserver, к которому обращаются:
- kubectl
- другие компоненты
- CI/CD пайплайны
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Поды висят в pending, в чем проблема?
Pod в
Нет свободных ресурсов на нодах (CPU, RAM)
Неподходящие
Нет доступных узлов (все
Проблемы с
Ошибки в CNI (сеть Kubernetes)
🚩Проверяем статус подов (`kubectl get pods`)
Команда
🚩Нет свободных ресурсов на нодах
Команда:
🚩Проблема с `nodeSelector`, `affinity`, `taints`
Если под настроен только на определенные ноды, он может не найти подходящую.
Вывод:
🚩Все ноды в состоянии `NotReady`
Проверяем статус нод
Ставь 👍 и забирай 📚 Базу знаний
Pod в
Pending означает, что он не может быть запущен, потому что Kubernetes не может его назначить (schedule) на ноду. Нет свободных ресурсов на нодах (CPU, RAM)
Неподходящие
nodeSelector, affinity или taints Нет доступных узлов (все
NotReady) Проблемы с
PersistentVolume (PVC не привязан) Ошибки в CNI (сеть Kubernetes)
🚩Проверяем статус подов (`kubectl get pods`)
Команда
kubectl get pods -A
🚩Нет свободных ресурсов на нодах
Команда:
kubectl describe pod my-app-1
🚩Проблема с `nodeSelector`, `affinity`, `taints`
Если под настроен только на определенные ноды, он может не найти подходящую.
kubectl describe pod my-app-1
Вывод:
0/3 nodes are available: 3 node(s) didn't match pod affinity/selector.
🚩Все ноды в состоянии `NotReady`
Проверяем статус нод
kubectl get nodes
Ставь 👍 и забирай 📚 Базу знаний
👍1