DevOps | Вопросы собесов
Open in Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Show more5 547
Subscribers
No data24 hours
+107 days
+4530 days
Posts Archive
Нужны актуальные вопросы с собеседований ?
DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям.
🔊Обзоры собеседований c вилками на позиции:
🔵DevOps инженеров (Junior, Middle, Senior).
🔵С комментариями автора, как человека, который активно собеседует кандидатов.
🔊В ближайшее время:
🔵Записи реальных собеседований (не моки и открытые собеседования).
🔵Гайды и рекомендации по обходу частых ошибок при выступлении на техническом интервью.
➡️ Подписаться
🤔 Где runner берёт код?
GitLab Runner скачивает код из репозитория, к которому привязан pipeline. Он использует Git clone или fetch, чтобы получить актуальную версию кода, соответствующую коммиту или ветке, где был инициирован pipeline.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое Grafana?
Grafana — это инструмент для визуализации, мониторинга и анализа метрик. Он позволяет строить графики, панели (dashboards) и оповещения на основе данных из разных источников.
🚩Основные возможности Grafana
Дашборды – красивые панели с графиками и таблицами
Много источников данных – Prometheus, MySQL, Elasticsearch, AWS CloudWatch
Настраиваемые алерты – уведомления в Slack, Telegram, Email
Аутентификация – поддержка LDAP, OAuth, GitHub
Плагины и расширения – добавление новых панелей и источников данных
🚩Как работает Grafana?
Grafana подключается к источнику данных (например, Prometheus)
Пользователь создает дашборды с графиками, таблицами и метриками
Настраиваются алерты, которые отправляют уведомления при сбоях
🚩Пример развертывания Grafana с Prometheus
Запуск Grafana в Docker
docker run -d -p 3000:3000 --name=grafana grafana/grafana
Пример запроса в PromQL
node_cpu_seconds_total{mode="idle"}
🚩Как настроить алерты?
Например, если загрузка CPU выше 80%, отправлять сообщение в Telegram.
В Grafana → "Alerting" → "Alert Rules" → "Create Alert Rule"
Записываем условие:
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
🚩Где используется Grafana?
Мониторинг серверов (CPU, RAM, диски, сеть)
DevOps (Prometheus + Grafana) для Kubernetes, Docker
Бизнес-аналитика (данные из MySQL, Google Analytics)
IoT – графики с датчиков и устройств
Ставь 👍 и забирай 📚 Базу знаний🤔 Как определить ресурс, который необходим одной node?
- Собрать usage-метрики:
Через kubectl top node, Prometheus или Cloud Monitoring.
- Сравнить с pod requests:
Если нода забита, а pod’ы с маленькими requests — нужно увеличивать.
- Просмотреть узкие места:
CPU, RAM, IO, дисковое пространство — что конкретно лимитирует.
- Использовать нагрузочные тесты:
Прогнать типичную нагрузку и посмотреть, как ведут себя узлы.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что произойдет если под не пройдет readiness пробу?
Если под (Pod) в Kubernetes не пройдет readiness-пробу (readiness probe), он будет считаться не готовым для обработки запросов.
🚩Что делает readiness-проба?
Readiness-проба используется для определения того, готов ли контейнер в поде обрабатывать входящие запросы. Если проба не проходит, Kubernetes исключает этот под из списка доступных для обслуживания запросов (например, через Service).
🚩Основные последствия
🟠Под не будет получать трафик через Service
Kubernetes автоматически исключает под из группы Endpoints для соответствующего сервиса. Другие компоненты системы, обращающиеся к сервису, не будут направлять запросы в этот под.
🟠Под продолжает работать
Под не будет удален или перезапущен. Kubernetes продолжит проверять его состояние readiness-пробой до тех пор, пока он не станет готовым.
🟠Нет влияния на liveness-пробу
Если readiness-проба не проходит, это не влияет на liveness-пробу. Под будет работать, пока не нарушена его "жизнеспособность".
🟠Аварийное поведение приложения может быть скрыто
Если под зависнет или будет не в состоянии обработать запросы, но при этом не нарушит liveness-пробу, он останется запущенным, но не будет получать трафик.
🚩Как это выглядит на практике?
Пример readiness-пробы
apiVersion: v1
kind: Pod
metadata:
name: example-pod
spec:
containers:
- name: my-container
image: nginx
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 10
🚩Сценарий
🟠На старте
После создания пода Kubernetes ждет initialDelaySeconds (5 секунд) перед выполнением первой проверки. Если / не отвечает на HTTP-запрос, под считается не готовым.
🟠Если проба продолжает проваливаться
Kubernetes исключает под из группы доступных эндпоинтов. Под остается запущенным, и проба выполняется каждые periodSeconds (10 секунд), пока под не станет готовым.
🚩Что произойдет с трафиком?
Если под — единственный в сервисе: Запросы к сервису вернут ошибку (например, 503 Service Unavailable), так как ни один под не готов.
Если подов несколько: Трафик перенаправляется на другие поды, готовые обрабатывать запросы.
🚩Как это помогает?
🟠Обеспечивает стабильность приложения
Под начинает обрабатывать трафик только после полной инициализации.
🟠Улучшает отказоустойчивость
В случае проблем с подом система перенаправляет запросы на другие экземпляры.
🟠Поддерживает обновления без простоя
Во время обновления подов через Deployment новые поды добавляются в пул доступных только после успешного прохождения readiness-проб.
Ставь 👍 и забирай 📚 Базу знаний🤔 Что происходит после того, как GitLab скачал код?
После загрузки кода:
- Runner выполняет шаги, указанные в .gitlab-ci.yml;
- запускаются скрипты, сборка, тестирование, деплой;
- могут использоваться Docker-образы, артефакты, кэш;
- GitLab отслеживает логи и статусы выполнения.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие есть лучшие практики в использовании инструкции add и copy?
ADD и COPY — это инструкции Dockerfile, которые копируют файлы в контейнер. Их использование влияет на размер образа, безопасность и производительность сборки.
🚩Лучшие практики по использованию `COPY` и `ADD`
🟠Используйте `COPY` вместо `ADD`, если не нужно распаковывать архивы
Плохо (избыточное использование ADD)
ADD app.tar.gz /app/
Хорошо (явное распаковывание в RUN)
COPY app.tar.gz /tmp/
RUN tar -xzf /tmp/app.tar.gz -C /app && rm /tmp/app.tar.gz
🟠Минимизируйте число `COPY` и `ADD`, чтобы уменьшить размер образа
Плохо (копируем всё без исключений)
COPY . /app
Хорошо (копируем только нужные файлы)
COPY src/ /app/src/
COPY requirements.txt /app/
Добавьте .dockerignore
.git
node_modules
__pycache__
*.log
🟠Копируйте только изменяемые файлы, чтобы ускорить кэширование
Плохо (изменение кода приводит к пересборке зависимостей)**
COPY . /app
RUN pip install -r /app/requirements.txt
Хорошо (сначала зависимости, потом код)
COPY requirements.txt /app/
RUN pip install -r /app/requirements.txt
COPY src/ /app/src/
🟠Не используйте `ADD` для загрузки файлов из интернета
Плохо (ADD загружает файл, но не кэшируется)
ADD https://example.com/file.tar.gz /tmp/
🟠Хорошо (используем RUN curl + COPY)
RUN curl -L -o /tmp/file.tar.gz https://example.com/file.tar.gz
COPY file.tar.gz /app/
Ставь 👍 и забирай 📚 Базу знаний🤔 Какие сущности указывают в манифесте Terraform?
- provider
- resource
- variable
- locals
- output
- module
- data (чтение внешних сущностей)
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В каких случаях удобно использовать kubernetes, а в каких docker-compose?
Оба инструмента управляют контейнерами, но предназначены для разных сценариев.
🚩Когда использовать Docker Compose?
Docker Compose удобен для локальной разработки и небольших проектов.
Разворачиваете приложение на одном сервере.
Нужно быстро поднять несколько сервисов (БД, кэш, бекенд, фронт).
Разработка ведется в команде, и среда должна быть одинаковой.
Нет необходимости в сложном оркестрационном механизме (авто-масштабирование, балансировка нагрузки).
Файл
docker-compose.yml для запуска бэкенда и базы данных локально:
version: '3'
services:
app:
image: my-backend:latest
ports:
- "5000:5000"
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Команда запуска:
docker-compose up -d
🚩Когда использовать Kubernetes?
Kubernetes удобен для продакшн-окружений, облаков и сложных приложений.
Нужно масштабирование (автоматическое увеличение/уменьшение количества контейнеров).
Требуется автоисправление (если контейнер падает, он перезапускается).
Используется балансировка нагрузки (Kubernetes распределяет трафик между подами).
Нужна развертка в кластере (несколько машин, облако).
Требуется обновление без простоя (rolling updates).
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-backend:latest
ports:
- containerPort: 5000
Разворачиваем в Kubernetes:
kubectl apply -f my-app.yaml
Ставь 👍 и забирай 📚 Базу знаний🤔 Какая первая строчка в bash скрипте?
Это строка с указанием интерпретатора, чаще всего используется bash. Она обязательна, чтобы скрипт корректно исполнился в нужной среде.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В чем разница Deployment и DaemonSet?
Deployment и DaemonSet являются двумя типами контроллеров, которые управляют развертыванием и обеспечением жизненного цикла подов (групп контейнеров). Они оба играют важные роли, но используются для разных целей и сценариев.
🚩Deployment
Это контроллер, который обеспечивает декларативное обновление подов и ReplicaSets (другой тип контроллера, который управляет одновременным запуском нескольких экземпляров одного и того же пода). Deployment поддерживает непрерывное развертывание, откат к предыдущим версиям, а также масштабирование подов.
🟠Масштабирование
Вы можете увеличивать или уменьшать количество подов в зависимости от нужд.
🟠Обновления
Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), которое помогает минимизировать простои при обновлении приложения.
🟠Самовосстановление
Автоматически перезапускает поды, которые перестали работать, находятся в ошибочном состоянии или не отвечают.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
🚩DaemonSet
Это контроллер, который гарантирует, что на каждом узле кластера Kubernetes запущен экземпляр заданного пода. Когда добавляется новый узел, на нем автоматически запускается под, управляемый DaemonSet, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле.
🟠Гарантия запуска
Убедитесь, что каждый узел кластера запускает копию определённого пода.
🟠Автоматическое размещение
Когда добавляются новые узлы, на них автоматически размещаются необходимые поды.
🟠Службы уровня узла
Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: fluent/fluentd:v1.0
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
Ставь 👍 и забирай 📚 Базу знаний🚀 Закрывается набор на курс «DevOps-инженер: практики и инструменты» в OTUS
Если вы хотите наконец-то выйти на уверенный middle/senior уровень в DevOps и перестать бояться продакшена — сейчас самый последний момент. Группа стартует 29 января, набор закрывается в ближайшие дни.
Успейте пройти вступительное тестирование, подтвердить уровень и забронировать место по спеццене
🎯 Что даёт курс:
- Полный production-ready стек 2025–2026: Docker → Kubernetes + Helm → Terraform + Ansible → GitLab CI/CD → Prometheus + Grafana + Loki + Jaeger + eBPF
- Реальные практики, которые используют в Сбере, IBM, Касперском: GitOps, progressive delivery, IaC, полный цикл наблюдаемости, отказоустойчивость
- Большой финальный проект с защитой: с нуля разворачиваете отказоустойчивое приложение в Yandex Cloud (бесплатно для студентов) и получаете детальный разбор от экспертов
- Наставники — действующие DevOps из топовых компаний, которые каждый день решают те же задачи, что и вы
- Удобный формат: онлайн-занятия по вт/чт в 20:00, записи навсегда, активный чат группы, код-ревью на каждое ДЗ
👉Пройдите тест прямо сейчас и забронируйте место: https://otus.pw/JFUO/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Мечтаешь стать дизайнером?
Начни с dsgn sense — мультисенсорной олимпиады по дизайну от Школы дизайна Центрального университета для учеников 10-11-х классов.
Познакомься с профессиями графического, продуктового и промышленного дизайнера! Реши кейс от компаний-партнеров и создай проект, в котором зрение, слух, осязание, вкус и обоняние станут основой уникального дизайн-решения.
Призеры и победители получат:
— Два проекта в портфолио.
— Финал в наукограде Дубне с бесплатным проживанием, питанием и насыщенной программой.
— Крутой мерч и призы от компаний.
— Шанс выиграть грант до 100% на обучение в бакалавриате ЦУ.
Тебе не нужны специальные навыки: достаточно любопытства и желания экспериментировать.
Регистрируйся до 16 февраля по ссылке:
Зарегистрироваться
Есть противопоказания. Посоветуйтесь с врачом.
#реклама 16+
event.cu.ru
О рекламодателе
🤔 Как в bash прописывают условие "или"?
Условие "или" используется, чтобы выполнить вторую команду только если первая завершилась с ошибкой. Это помогает задать альтернативное действие при сбое.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое container network module в докере?
Это архитектурная модель, разработанная Docker для управления сетями контейнеров. Она описывает, как создаются, управляются и взаимодействуют сетевые компоненты в Docker-контейнерах. CNM служит основой для организации сетей Docker и позволяет подключать контейнеры к различным сетевым средам, обеспечивая гибкость, масштабируемость и безопасность.
🚩Основные компоненты CNM
🟠Sandbox
Это изолированная среда, где настраиваются сетевые интерфейсы контейнера, такие как IP-адреса, маршруты и DNS. Что включает: veth-пара интерфейсов (виртуальный Ethernet): соединяет контейнер с внешней сетью. Конфигурации маршрутов и сетевых правил.
🟠Endpoint
Точка подключения контейнера к сети. Функции: Обеспечивает контейнеру связь с другими контейнерами или внешними сетями. Соединяет Sandbox с Network.
🟠Network
Логическая сущность, объединяющая Endpoints для обеспечения взаимодействия контейнеров. Типы сетей в Docker:
bridge: Локальная сеть, позволяющая контейнерам взаимодействовать на одном хосте.
host: Контейнеры используют сетевой стек хоста без изоляции.
none: Сеть отключена; контейнер полностью изолирован.
overlay: Распределенная сеть для связи контейнеров на разных хостах.
macvlan: Контейнеры получают прямой доступ к физической сети.
🚩Как это работает в Docker
Создается Sandbox, где настраиваются сетевые параметры контейнера.
Создается Endpoint, который подключает контейнер к выбранной сети.
Endpoint добавляется в Network, что позволяет контейнеру взаимодействовать с другими узлами.
🚩Плюсы
➕Гибкость
Легко подключать контейнеры к различным типам сетей.
➕Изоляция
Обеспечивает безопасность, изолируя сетевые пространства контейнеров.
➕Расширяемость
CNM поддерживает сторонние плагины для интеграции с другими сетевыми решениями (например, Calico, Flannel).
➕Управляемость
Позволяет контролировать настройки сети через команды Docker.
🚩Пример создания сети
1⃣Создание сети
docker network create my_bridge
2⃣Подключение контейнера к сети
docker run --network my_bridge -d nginx
Ставь 👍 и забирай 📚 Базу знаний🤔 Что такое Terraform?
Terraform — это инструмент для управления инфраструктурой как кодом (IaC), позволяющий описывать ресурсы (например, серверы, базы данных) с помощью декларативного языка. Он поддерживает провайдеры для работы с различными облачными платформами и автоматизирует создание, изменение и удаление инфраструктуры.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое basic auth?
Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов.
Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса.
🟠Как работает Basic Auth?
Клиент делает запрос к серверу.
Сервер отвечает 401 Unauthorized и требует аутентификацию:
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Restricted Area"
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
🟠Пример запроса с Basic Auth
В curl
curl -u username:password http://example.com/protected
В Python (requests):
import requests
from requests.auth import HTTPBasicAuth
response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)
В JavaScript (fetch):
fetch("http://example.com/protected", {
headers: {
"Authorization": "Basic " + btoa("username:password")
}
})
.then(response => response.text())
.then(data => console.log(data));
🚩Минусы
➖Не безопасен без HTTPS
данные передаются в открытом виде (Base64 — это не шифрование!).
➖Логин и пароль передаются в каждом запросе
что делает систему уязвимой.
➖Нет механизма разлогинивания
браузеры кэшируют креды, и их сложно сбросить.
Ставь 👍 и забирай 📚 Базу знанийЗапустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
🤔 Что такое BeanPostProcessor?
BeanPostProcessor — интерфейс в Spring, позволяющий вмешиваться в жизненный цикл бина:
- выполнять действия до и после инициализации бина;
- применяется, например, в @Autowired, @Transactional, @Async.
Это мощный способ внедрять дополнительное поведение, не изменяя исходный код бинов.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Бесплатный курс по дизайну: веб, графический и UX/UI
Получи востребованные навыки:
- создание дизайна сайтов и приложений
- создание инфографики и карточек для маркетплейсов
- работа в графическом редакторе Figma и др.
Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰
Зарегистрироваться
#реклама 16+
ydaev.ru
О рекламодателе
