Диагностика Linux-сервера, Dockerfile и проблема PID 1, пробы, ресурсы и CrashLoopBackOff в Kubernetes, стратегии выкатки и GitOps, сети и файрволы, Prometheus, логи и алерты по SLO, Terraform и неизменяемая инфраструктура — вопросы на DevOps- и SRE-позиции, а также то, что спрашивают у бэкендеров про эксплуатацию.
- Как настроить алерты, чтобы дежурные не выгорали, а реальные проблемы не пропускались? Senior
Алерт должен означать «пользователям плохо или скоро будет плохо, и человеку нужно действовать». Будить по симптомам (ошибки, задержки, доступность глазами пользователя), а не по…
- Чем Ansible отличается от Terraform и когда что применять? Middle
Terraform — создание инфраструктуры (provisioning): декларативно, со state, хорош для облачных ресурсов — сетей, ВМ, баз, DNS. Ansible — настройка существующих машин…
- Чем trunk-based development отличается от GitFlow? Middle
GitFlow — долгоживущие ветки develop и main, ветки фич, релизов и хотфиксов; подходит для продуктов с редкими версионированными релизами (коробка, мобильные приложения), но…
- Из каких этапов состоит CI/CD-пайплайн и чем continuous delivery отличается от continuous deployment? Junior
CI — каждое изменение автоматически собирается и проверяется: сборка, линтеры, юнит-тесты, сканирование, сборка артефакта (образа). CD: continuous delivery — артефакт всегда готов…
- Как правильно работать с секретами в CI/CD и инфраструктуре? Middle
Секреты не хранят в коде, образах и логах. Источник — хранилище секретов (Vault, облачный менеджер, секреты CI), выдача — по минимальным правам и по возможности короткоживущая…
- Что означает запись 10.0.0.0/16 и как разбить сеть на подсети? Junior
CIDR: адрес и число бит префикса сети. /16 — первые 16 бит фиксированы, остаётся 32 − 16 = 16 бит на адреса: 65 536 адресов (10.0.0.0–10.0.255.255). /24 — 256 адресов, /32 — один…
- Какие базовые сервисы облака нужны типичному веб-приложению и как обеспечить отказоустойчивость? Junior
Базовый набор: сеть (VPC, подсети, NAT), вычисления (ВМ, управляемый Kubernetes, serverless), балансировщик, управляемая БД, объектное хранилище (S3-совместимое), DNS, IAM…
- Почему контейнер не останавливается корректно и «висит» до SIGKILL? Middle
Процесс с PID 1 в контейнере особенный: ядро не применяет к нему действия сигналов по умолчанию, и если приложение не обрабатывает SIGTERM, оно его игнорирует. Частая причина …
- Как сделать контейнер безопаснее? Middle
Не root внутри контейнера, минимальный образ (меньше пакетов — меньше уязвимостей), сканирование образов в CI (Trivy, Grype), файловая система только для чтения, сброс…
- Чем контейнер отличается от виртуальной машины? Junior
Виртуальная машина эмулирует оборудование и запускает собственное ядро ОС поверх гипервизора. Контейнер — обычный процесс хоста, изолированный механизмами общего ядра: namespaces…
- Какие стратегии выкатки вы знаете и как выбрать подходящую? Middle
Recreate — остановить старое, запустить новое: простой, зато просто. Rolling — постепенная замена экземпляров, без простоя, откат медленный. Blue-green — полная копия окружения…
- Как устроены слои Docker-образа и почему образ — неизменяемый артефакт? Junior
Образ — стопка слоёв только для чтения, каждый — изменения файловой системы от одной инструкции. Контейнер добавляет сверху тонкий слой для записи. Слои общие между образами и…
- Как в Docker хранить данные и как контейнеры общаются по сети? Junior
Volume — хранилище под управлением Docker, переживает пересоздание контейнера (базы данных). Bind mount — каталог хоста внутрь контейнера (разработка, конфиги). Сеть: в…
- Как написать хороший Dockerfile? Middle
Multi-stage: собирать в образе с компиляторами, а в финальный копировать только артефакт — образ в разы меньше. Порядок инструкций под кэш: сначала то, что меняется редко…
- Как ограничивать сетевой доступ к серверам и сервисам? Junior
Принцип — запрещено всё, что не разрешено явно. Слои защиты: файрвол хоста (nftables/iptables, ufw), облачные security groups у каждой машины, сетевые ACL подсетей, NetworkPolicy…
- Что такое GitOps и чем он отличается от деплоя скриптом из CI? Middle
GitOps: желаемое состояние инфраструктуры и приложений описано в Git, а агент в кластере (Argo CD, Flux) постоянно сравнивает его с фактическим и приводит к нему (pull-модель). В…
- Что такое неизменяемая инфраструктура и чем она лучше настройки серверов на месте? Middle
Неизменяемая инфраструктура: серверы и контейнеры не меняют после запуска — для обновления собирают новый образ и заменяют экземпляры. Противоположность — правки на живых…
- Из каких компонентов состоит кластер Kubernetes? Middle
Control plane: kube-apiserver — единственная точка входа, всё общение идёт через него; etcd — хранилище состояния кластера; scheduler — выбирает узел для пода; controller-manager…
- Как передать конфигурацию и секреты приложению в Kubernetes? Middle
ConfigMap — несекретные настройки, Secret — пароли, токены, сертификаты; оба подключаются как переменные окружения или файлы в томе. Secret по умолчанию лишь закодирован в base64…
- Под в состоянии CrashLoopBackOff. Как найти причину? Middle
CrashLoopBackOff — контейнер запускается и падает, kubelet перезапускает его с растущей паузой (до 5 минут). Порядок: kubectl describe pod (события, Last State, код выхода…
- Как работает автомасштабирование в Kubernetes? Middle
HPA меняет число реплик по метрике: желаемые реплики = текущие × (текущее значение / целевое). Метрика CPU считается в процентах от requests — без requests HPA не работает. VPA…
- Чем Pod, ReplicaSet и Deployment отличаются друг от друга? Junior
Pod — минимальная единица: один или несколько контейнеров с общей сетью (один IP, localhost) и томами; под смертен, его IP меняется. ReplicaSet поддерживает заданное число…
- Приложение долго стартует, а Kubernetes перезапускает его по кругу. Как правильно настроить пробы? Middle
Liveness начинает проверять до окончания старта, приложение не успевает ответить — kubelet убивает его и запускает заново. Решение — startupProbe: пока она не прошла, liveness и…
- Чем requests отличаются от limits в Kubernetes и что такое OOMKilled и троттлинг CPU? Middle
requests — сколько ресурсов зарезервировать: по ним планировщик выбирает узел. limits — потолок: превышение памяти → контейнер убивают (OOMKilled, код 137), превышение CPU →…
- Как Deployment выполняет обновление и как откатить неудачную версию? Middle
Стратегия по умолчанию — RollingUpdate: создаётся новый ReplicaSet, поды постепенно заменяются. maxSurge — сколько подов сверх нужного числа можно поднять, maxUnavailable …
- Какие бывают Service в Kubernetes и чем Service отличается от Ingress? Middle
Service — стабильное имя и виртуальный IP для набора подов по меткам, балансировка на уровне L4. Типы: ClusterIP — только внутри кластера (по умолчанию), NodePort — порт на каждом…
- Чем StatefulSet отличается от Deployment и стоит ли запускать базы данных в Kubernetes? Senior
StatefulSet даёт подам стабильные имена (db-0, db-1), свой том на каждую реплику (volumeClaimTemplates — том переживает пересоздание пода) и упорядоченный запуск и остановку…
- Диск заполнен, а du показывает, что места занято мало. В чём дело? Middle
Частая причина — удалённый файл, который ещё держит открытым процесс (например, лог после ротации): имя исчезло, du его не видит, а место не освободилось. Найти: lsof +L1 или lsof…
- Что показывает load average и как понять, что сервер перегружен? Middle
Load average — среднее за 1, 5 и 15 минут число процессов, которые выполняются или ждут CPU, а в Linux ещё и ожидают ввод-вывод (состояние D). Сравнивать с числом ядер: load 8 на…
- Как понять, сколько памяти реально свободно в Linux, и что такое OOM killer? Middle
Linux использует свободную память под кэш файлов (page cache), поэтому «free» почти всегда мал — смотреть надо на available: сколько можно выделить, вытеснив кэш. Когда память…
- Как устроены права доступа к файлам в Linux? Junior
У файла есть владелец, группа и три набора прав — для владельца, группы и остальных: чтение (r = 4), запись (w = 2), выполнение (x = 1). chmod 755 — владелец rwx (7), группа и…
- Какие состояния бывают у процесса в Linux и что такое зомби и сироты? Middle
В ps видно состояние: R — выполняется или ждёт CPU, S — спит в ожидании события (норма для большинства), D — непрерываемый сон в ожидании ввода-вывода (не реагирует даже на…
- Какими командами вы диагностируете проблему на Linux-сервере? Middle
Порядок: жив ли процесс (systemctl status, ps) → логи (journalctl, файлы приложения) → ресурсы (top, free, df, iostat) → сеть (ss -tlnp — слушает ли порт, curl localhost, dig) →…
- Как организовать сбор логов из множества сервисов? Middle
Приложения пишут структурированные логи (JSON) в stdout; агент на узле (Fluent Bit, Vector, Promtail) собирает их, добавляет метаданные (под, namespace, сервис) и отправляет в…
- Сервис A не может подключиться к сервису B. Как вы будете искать причину? Middle
Идти по уровням снизу вверх: DNS (dig b.internal — резолвится ли и в тот ли адрес) → маршрут и доступность (ping, traceroute/mtr) → порт (nc -zv host 8080) → TLS (openssl…
- Что такое reverse proxy и какие задачи решает nginx перед приложением? Junior
Reverse proxy стоит перед серверами и принимает запросы от их имени (forward proxy — наоборот, от имени клиентов). Задачи nginx: терминация TLS, балансировка между экземплярами…
- Как работает Prometheus и какие типы метрик в нём есть? Middle
Prometheus сам опрашивает (pull) эндпоинты /metrics целей, найденных через service discovery, и хранит временные ряды. Типы: counter — только растёт (запросы, ошибки), смотрят…
- Как устроен доступ по SSH-ключам и зачем нужен bastion-хост? Junior
Пара ключей: закрытый хранится у пользователя, открытый кладут на сервер в ~/.ssh/authorized_keys. При входе сервер проверяет, что клиент владеет закрытым ключом, — сам ключ по…
- Как управлять сервисом через systemd и смотреть его логи? Junior
systemd — система инициализации и менеджер сервисов. Сервис описывают unit-файлом (/etc/systemd/system/app.service): команда запуска, пользователь, перезапуск…
- Как работает Terraform и зачем ему state? Middle
Terraform декларативно описывает ресурсы (сети, ВМ, базы, DNS) на HCL. plan сравнивает код, state и реальность и показывает, что будет создано, изменено, удалено; apply выполняет…