DevOps | Вопросы собесов
Ir al canal en Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
Mostrar más5 547
Suscriptores
Sin datos24 horas
+107 días
+4530 días
Archivo de publicaciones
🤔 Что такое Kafka Connector?
Это часть Kafka Connect — фреймворка для интеграции с внешними системами:
- Source connector — забирает данные (из БД, файлов и т.п.) и пишет в Kafka.
- Sink connector — читает из Kafka и пишет в БД, Elastic, ClickHouse и т.д.
Коннекторы — это готовые модули, которые не требуют писать код вручную.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В чём преимущество Kubernetes как платформы?
Это платформа для оркестрации контейнеров, которая упрощает развертывание, управление и масштабирование приложений. Она имеет ряд ключевых преимуществ, которые делают её популярной в DevOps и облачных решениях.
🚩Основные плюсы
➕Автоматизация управления приложениями
Kubernetes автоматически запускает, останавливает и перезапускает контейнеры при сбоях. Поддерживает заданное число экземпляров (реплик) приложений, перезапуская или создавая их при необходимости.
➕Масштабирование (горизонтальное и вертикальное)
Ручное: Легко увеличить или уменьшить количество контейнеров (поды) для приложения. Автоматическое: Используя Horizontal Pod Autoscaler (HPA), Kubernetes добавляет ресурсы при увеличении нагрузки.
➕Высокая доступность (HA)
Kubernetes поддерживает отказоустойчивость: Если один узел (node) выходит из строя, поды перемещаются на другие узлы. Внутренний балансировщик нагрузки распределяет трафик между подами.
➕Платформонезависимость
Kubernetes работает в любых средах: Локальных (например, Minikube). В публичных облаках (AWS, Google Cloud, Azure). В гибридных и on-premise инфраструктурах.
➕Управление конфигурацией и секретами
Kubernetes упрощает работу с настройками: ConfigMaps: Для управления конфигурационными данными.
Secrets: Для безопасного хранения конфиденциальной информации, например, ключей API или паролей.
➕Эффективное использование ресурсов
Kubernetes помогает оптимизировать потребление CPU и памяти: Устанавливая минимальные и максимальные лимиты ресурсов для каждого приложения. Перераспределяя ресурсы между приложениями.
➕Расширяемость
Kubernetes поддерживает плагины и кастомизацию: Сетевые плагины (Calico, Flannel) для настройки сети. Системы мониторинга (Prometheus, Grafana). Операторы для автоматизации сложных задач.
➕Сообщество и экосистема
Kubernetes поддерживается большинством крупных облачных провайдеров. Обширная экосистема инструментов: Helm для управления шаблонами, ArgoCD для GitOps, Istio для сетевых взаимодействий.
🚩Когда особенно полезен?
Разработка микросервисных архитектур. Частые релизы и автоматизация CI/CD. Работа с масштабируемыми приложениями. Использование гибридных или мультиоблачных решений.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Почему при доступном месте файлы не создаются?
Это может происходить по нескольким причинам, даже если свободное место есть:
1. Закончились inode'ы — файловая система использует их для хранения метаданных файлов. Если они исчерпаны, новые файлы нельзя создать.
2. Ограничения прав — пользователь или процесс может не иметь разрешения на запись.
3. Переполнение квоты — если включены пользовательские квоты на дисковое пространство.
4. Ошибка монтирования — путь указывает на размонтированное хранилище, и запись идёт не туда.
5. Файловая система в режиме только для чтения — возможно после сбоев или ошибок диска.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое дешборды в графане?
Это визуальные панели, на которых отображаются метрики, логи и данные, собранные из различных источников. Они используются для мониторинга состояния систем, приложений и инфраструктуры, предоставляя наглядное представление в виде графиков, диаграмм, таблиц и других визуализаций.
🚩Почему нужны дешборды в Grafana?
🟠Мониторинг в реальном времени
Позволяют наблюдать за ключевыми показателями производительности (KPI) систем в реальном времени. Например, загрузка CPU, использование памяти, число запросов в секунду.
🟠Диагностика и устранение проблем
Дешборды помогают быстро находить аномалии или сбои. Например, резкий рост времени отклика или падение уровня доступности.
🟠Простота анализа данных
Объединяют данные из разных источников в одном месте (Prometheus, Elasticsearch, Loki, InfluxDB, PostgreSQL и др.). Упрощают анализ данных благодаря визуализации.
🟠Настраиваемость и удобство
Можно создавать персонализированные панели под конкретные задачи или роли (разработчики, SRE, менеджеры).
🚩Основные элементы дешборда
🟠Панели (Panels)
Каждая панель отображает отдельный набор данных в определенном виде (график, таблица, heatmap, текст и др.). Пример: График использования памяти на сервере.
🟠Источник данных (Data Source)
Данные, отображаемые на панели, поступают из определённого источника (Prometheus, Elasticsearch, MySQL и т.д.). Grafana поддерживает множество интеграций.
🟠Переменные (Variables)
Динамические параметры, которые позволяют изменять отображаемые данные без необходимости редактировать панель. Пример: Переключение между разными серверами или метриками.
🟠Алёрты (Alerts)
Настраиваемые уведомления, которые активируются при достижении определённого порога метрики. Пример: Отправка уведомления в Slack при увеличении загрузки CPU выше 90%.
🟠Теги и аннотации
Обозначают ключевые события на графиках, например, развёртывание нового релиза.
🚩Пример использования дешборда
🟠Панели
1. Время отклика API (Response Time).
2. Число активных пользователей (Active Users).
3. Использование ресурсов (CPU, RAM).
4. Ошибки HTTP (5xx, 4xx).
🟠Источники данных
- Prometheus для метрик.
- Loki для логов.
- MySQL для аналитических данных.
🟠Переменные
- Выбор региона (например, Европа, США).
- Фильтрация по микросервисам.
🚩Создание дешборда в Grafana
🟠Добавление панели
В интерфейсе Grafana создайте новый дешборд. Добавьте панель и выберите тип визуализации (график, таблица, бар-чарт и т.д.).
🟠Настройка источника данных
Укажите источник данных для каждой панели. Например, Prometheus:
rate(http_requests_total[5m]).
🟠Настройка фильтров и переменных
Добавьте переменные, чтобы дешборд был динамичным.
🟠Добавление алертов
Настройте триггеры для уведомлений (например, при высоком времени отклика).
Ставь 👍 и забирай 📚 Базу знаний🤔 Что такое DevOps?
DevOps — это практика, направленная на интеграцию разработки и операционных процессов для ускорения выпуска программного обеспечения. Она включает автоматизацию процессов, улучшение взаимодействия команд и повышение качества продукта. Цель DevOps — ускорить доставку программного обеспечения без потери качества.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какой самый большой минус Ansible?
Ansible – мощный инструмент для автоматизации, но у него есть серьезные недостатки, особенно при масштабировании.
🚩Основной минус – Медленная работа на больших инфраструктурах
🟠Нет агентов
каждый раз Ansible подключается по SSH и выполняет задачи без предварительного кеширования
что замедляет процесс.
🟠Ограничения Python на удаленных хостах
если целевой сервер слабый или без Python, выполнение плейбуков будет медленным.
🟠Последовательное выполнение
по умолчанию Ansible выполняет задачи последовательно, что дольше, чем параллельные методы (например, в SaltStack).
yaml
- name: Установка Nginx
hosts: all
tasks:
- name: Установить Nginx
apt:
name: nginx
state: present
Запуск задач параллельно (-f 50)
sh
ansible-playbook playbook.yml -f 50
🚩Другие минусы Ansible
🟠Высокая нагрузка на управляющий узел
Если 1000+ серверов, главный Ansible-узел может быстро перегрузиться.
🟠Сложное управление зависимостями
Роли могут конфликтовать, если версии не совпадают. Ansible Galaxy не такой удобный, как Terraform Registry
🟠Ограниченная идемпотентность
Некоторые модули (особенно shell и command) не всегда понимают, применялась ли конфигурация раньше.
Ставь 👍 и забирай 📚 Базу знаний🤔 Когда разработчик запушил новый код, как он попадает в продакшн?
После пуша кода в репозиторий, запускается пайплайн CI: сборка и тесты. Если все проходит успешно, код проходит через пайплайн CD: деплой на staging, затем на продакшн (с возможным откатом и валидацией).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое брокеры сообщений?
Это программные системы, которые позволяют обмениваться данными между разными компонентами приложения или между различными приложениями. Они действуют как посредники, принимая сообщения от отправителей (producers) и доставляя их получателям (consumers).
🚩Основные функции брокеров сообщений
🟠Прием и маршрутизация сообщений
Сообщения отправляются от одного компонента и доставляются нужному получателю. Брокер определяет, куда отправить сообщение, используя темы (topics), очереди (queues) или маршруты (routing keys).
🟠Асинхронное взаимодействие
Отправитель может передать сообщение, не дожидаясь его обработки, что повышает производительность системы.
🟠Очереди сообщений
Если получатель временно недоступен, сообщение сохраняется в очереди до тех пор, пока оно не будет доставлено.
🟠Гарантированная доставка
Некоторые брокеры предоставляют механизмы подтверждения получения сообщений (acknowledgment), чтобы избежать их потери.
🟠Распределение нагрузки
Сообщения могут быть обработаны несколькими получателями, что позволяет распределить нагрузку между ними.
🟠Фильтрация и маршрутизация
Сообщения доставляются только тем потребителям, которые их ожидают, используя фильтры или ключи маршрутизации.
🚩Примеры использования брокеров сообщений
🟠Микросервисы
Компоненты приложения обмениваются данными через брокер, что позволяет им оставаться изолированными и независимыми.
🟠Логирование и мониторинг
Сбор логов и метрик от множества источников с их дальнейшей обработкой.
🟠Управление задачами
Постановка задач в очередь для выполнения одним или несколькими воркерами.
🟠Интеграция систем
Связывание разнородных систем, которые обмениваются данными.
🚩Примеры брокеров сообщений
🟠RabbitMQ
Протокол: AMQP (Advanced Message Queuing Protocol). Поддерживает очереди, маршрутизацию, подтверждения доставки. Хорошо подходит для сложных сценариев с разными типами маршрутизации.
🟠Apache Kafka
Протокол: Проприетарный. Отличается высокой производительностью и надежностью. Используется для потоковой обработки данных, аналитики в реальном времени.
🟠Redis (Pub/Sub)
Протокол: Redis. Простая и быстрая модель pub/sub. Хорошо подходит для временных сообщений без сохранения состояния.
🟠ActiveMQ
Протокол: AMQP, STOMP, MQTT. Гибкий и совместимый с различными сценариями.
🟠NATS
Легковесный и быстрый брокер для приложений, требующих низкой задержки.
🚩Как работают брокеры сообщений
Producers (отправители) отправляют сообщение в брокер.
Брокер размещает сообщение в соответствующей очереди или теме.
Consumers (получатели) получают сообщение: Либо сразу, если они активны. Либо позже, если оно сохраняется в очереди.
🚩Пример использования RabbitMQ
1⃣Отправитель публикует сообщение в очередь:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
connection.close()
2⃣Получатель забирает сообщение из очереди:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(f"Received {body}")
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
channel.start_consuming()
🚩Плюсы использования
➕Разделение ответственности
Компоненты системы сосредотачиваются на своих задачах, а не на доставке данных.
➕Масштабируемость
Легко добавлять новых потребителей или отправителей.
➕Устойчивость к сбоям
Брокеры обеспечивают сохранность сообщений, даже если один из компонентов временно недоступен.
➕Гибкость
Возможность использовать различные стратегии маршрутизации и обработки данных.
Ставь 👍 и забирай 📚 Базу знаний🤔 Какой дистрибутив выбрать для высоконагруженных приложений — RHEL или Debian?
- RHEL/CentOS/AlmaLinux/Rocky:
- Более предсказуемое поведение (stable ABI);
- Широкая поддержка корпоративных решений (Oracle, SAP);
- SELinux.
- Debian/Ubuntu:
- Больше свободных пакетов;
- Быстрее обновления;
- Лучше для разработки.
Вывод: для продакшна в крупном энтерпрайзе — чаще RHEL. Для DevOps и CI — Debian.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В каких случаях удобно использовать 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-скрипт, который настраивает новый сервер под типовой стек.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 В чем отличие девопс-инженера от sre-инженера?
DevOps-инженер и SRE (Site Reliability Engineer) — это роли, которые пересекаются в своих задачах, но имеют разные акценты и подходы.
🚩Определение ролей
🟠DevOps-инженер
Основная цель: Ускорить и автоматизировать процесс разработки, тестирования и развертывания приложений.
Подход: Сосредоточен на создании и поддержке CI/CD, инфраструктуры как кода (IaC) и инструментах автоматизации.
Фокус: Эффективность процессов разработки. Улучшение взаимодействия между командами разработки (Dev) и эксплуатации (Ops).
🟠SRE-инженер
Основная цель: Обеспечение стабильности, надежности и производительности системы в продакшене.
Подход: Применяет инженерные подходы и автоматизацию для управления операциями и масштабированием.
Фокус: Стабильность и надежность системы. Мониторинг, устранение сбоев и управление инцидентами.
Ставь 👍 и забирай 📚 Базу знаний
🤔 Где можно использовать Kubernetes?
Kubernetes используют для:
- управления контейнерами и их жизненным циклом;
- масштабирования микросервисов;
- автоматизации деплоя;
- отказоустойчивости и самовосстановления сервисов.
Можно использовать в облаке, on-premise, edge и гибридных решениях.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
📺 База 1000+ реальных собеседований
На программиста, тестировщика, аналитика, проджекта и другие IT профы.
Есть собесы от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д.
🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство!
🤔 Сколько часов живёт один вал Prometeus CICD?
Вал (или "валидность данных") в 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 или конфигурационный файл.
Ставь 👍 и забирай 📚 Базу знанийКупите отельный номер с гарантией пассивного дохода в $
Как стать владельцем отельного номера и получать гарантированный доход в валюте?
Да, вы всё правильно прочитали! Процент доходности фиксирован и закреплен в договоре! А выплаты производятся строго по графику.
Эксперты International Investment отобрали лучшие объекты для инвестиций по всему миру.
Оставляйте заявку и получите персональный план инвестирования прямо сейчас!
Посмотреть каталог
#реклама
international-investment.ru
О рекламодателе
🤔 Как решить проблему, если Jenkins не видит merge request и ветки из GitLab?
- Убедиться, что используется GitLab Plugin.
- Включить webhook из GitLab.
- Установить refspec:
- +refs/merge-requests/*/head:refs/remotes/origin/mr/*
- Убедиться, что Jenkins имеет доступ к правильным permissions в GitLab.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что возвращает функция в bash?
В Bash функция возвращает код завершения (exit status), который представляет собой числовое значение от 0 до 255. Это значение используется для указания успешного или неуспешного выполнения функции. По умолчанию, если явно не указано возвращаемое значение, функция возвращает код завершения последней выполненной команды внутри нее.
🚩Как возвращать значения из функции?
🟠Код завершения (exit status)
Чтобы явно задать код завершения функции, используется команда
return.
my_function() {
if [[ $1 -gt 0 ]]; then
return 0 # Успех
else
return 1 # Ошибка
fi
}
my_function 5
echo $? # Выведет 0 (успех)
🟠Вывод данных через `echo`
Для передачи данных из функции (например, строки или числа) можно использовать echo. Вывод можно перехватить через подстановку команд $()
my_function() {
echo "Hello, $1!"
}
result=$(my_function "world")
echo "$result" # Выведет "Hello, world!"
🟠Изменение глобальных переменных
Функция может менять значения глобальных переменных, которые затем используются за ее пределами
my_function() {
result=$(( $1 + $2 ))
}
my_function 3 7
echo $result # Выведет 10
🚩Почему это важно?
🟠Код завершения
Используется в сценариях для проверки, выполнилась ли функция успешно. Значение 0 обычно означает успех, а любое другое число — ошибку.
🟠Вывод через `echo`
Удобен для передачи данных из функции.
🟠Изменение переменных
Полезно, если функция должна сохранять данные для дальнейшей обработки.
# Функция проверки файла
check_file() {
if [[ -f $1 ]]; then
echo "Файл $1 существует."
return 0
else
echo "Файл $1 не найден."
return 1
fi
}
# Вызов функции
check_file "/etc/passwd"
status=$? # Сохраняем код завершения
if [[ $status -eq 0 ]]; then
echo "Продолжаем работу..."
else
echo "Останавливаемся из-за ошибки."
fi
Ставь 👍 и забирай 📚 Базу знанийРеклама для бизнеса любого уровня в Яндекс Директе
Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌
Начните прямо сейчас ⚡
Зарегистрироваться
#реклама
direct.yandex.ru
О рекламодателе
🤔 Как найти запущенный процесс?
1. Используйте команду ps (например, ps aux для подробной информации).
2. Команда top показывает активные процессы в реальном времени.
3. Для фильтрации можно использовать pgrep <имя процесса>.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
