ru
Feedback
DevOps | Вопросы собесов

DevOps | Вопросы собесов

Открыть в Telegram
5 547
Подписчики
Нет данных24 часа
+107 дней
+4530 день
Архив постов
🤔 Где находится swap какое устройство использует? Это область на диске, которую операционная система использует как виртуальную память, если основной оперативной памяти (RAM) не хватает. Swap может быть представлен в виде: 🚩Где находится swap? 🟠Swap-раздел Swap может быть выделен как отдельный раздел диска. Он создается во время установки системы или вручную и не имеет файловой системы (тип раздела — swap). 🟠Swap-файл Swap может быть представлен как обычный файл в файловой системе (например, /swapfile). 🚩Как узнать, где находится swap? Используйте команды для проверки текущей конфигурации: Проверка swap через swapon
swapon --show
Пример вывода
NAME       TYPE      SIZE   USED PRIO
/dev/sda2  partition 4G     1G   -2
/swapfile  file      2G     0B   -3
- NAME: Устройство или файл, используемый для swap. - TYPE: Указывает, является ли swap разделом или файлом. - SIZE: Размер swap. - USED: Сколько swap в данный момент используется. - PRIO: Приоритет использования (меньшее значение — меньший приоритет). Проверка через free
free -h
🚩Проверка через `fstab` Если swap является разделом, он обычно прописан в /etc/fstab
cat /etc/fstab | grep swap
Пример
/dev/sda2    none    swap    sw    0   0
🚩Какое устройство использует swap? Если swap — это раздел, то он отображается как устройство, например, /dev/sda2. Если swap — это файл, его путь будет, например, /swapfile. Ставь 👍 и забирай 📚 Базу знаний

Нужны актуальные вопросы с собеседований ? DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям.
Нужны актуальные вопросы с собеседований ? DevOps | Собеседования - твой незаменимый помощник в подготовке к собеседованиям. 🔊Обзоры собеседований c вилками на позиции: 🔵DevOps инженеров (Junior, Middle, Senior). 🔵С комментариями автора, как человека, который активно собеседует кандидатов. 🔊В ближайшее время: 🔵Записи реальных собеседований (не моки и открытые собеседования). 🔵Гайды и рекомендации по обходу частых ошибок при выступлении на техническом интервью. ➡️ Подписаться

Виртуальный сервер в аренду в России и Турции. Отказоустойчивый виртуальный облачный сервер / дата центр IaaS на базе виртуал
Виртуальный сервер в аренду в России и Турции. Отказоустойчивый виртуальный облачный сервер / дата центр IaaS на базе виртуализаций VMWARE, РУСТЭК по модели подписки. Аналог Elastic Cloud EC2. - Доступность сервиса — от 99,982% SLA - Дата центры Tier III в России и Турции - Резервное копирование на удаленную площадку (ок. 10 км) - Размещение персональных данных и ГИС по ФЗ-152 - Лицензированные решения Microsoft - Почасовой биллинг и постоплата - Оплата в рублях, турецких лирах, Euro - 30 дней бесплатное тестирование для юр. лиц Подключите услугу сегодня со скидкой 50% на инфраструктуру. Подать заявку #реклама 16+ cloud4y.ru О рекламодателе

🤔 Какие есть варианты запустить джобу в Jenkins? 1. Ручной запуск – через веб-интерфейс Jenkins. 2. Расписание (cron) – настройка триггеров через Build periodically. 3. Webhook – запуск при пуше в Git (GitHub, GitLab, Bitbucket). 4. Pipeline Script – через Jenkinsfile с build job(). 5. API-запрос – curl http://jenkins/job/job_name/build?token=TOKEN. 6. Через CLI – java -jar jenkins-cli.jar build job_name. 7. Автоматически при изменениях – настройка Git Polling или SCM. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Есть 1000 разработчиков, каждый создал по 1-2 уникальному приложению, как это все масштабировать? Если у вас 1000 разработчиков и 2000 сервисов, то без автоматизации не обойтись. 🟠 Kubernetes для контейнеров Организация: Каждое приложение → отдельный Pod. Namespaces → для команд и сред (dev, stage, prod). Helm → для удобного управления. Манифест деплоя
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-registry.com/my-app:v1
🟠CI/CD для автоматического деплоя Инструменты: GitLab CI/CD, ArgoCD
stages:
  - build
  - deploy

build:
  script:
    - docker build -t my-registry.com/my-app:$CI_COMMIT_SHA .
    - docker push my-registry.com/my-app:$CI_COMMIT_SHA

deploy:
  script:
    - kubectl set image deployment/my-app my-app=my-registry.com/my-app:$CI_COMMIT_SHA
🟠Мониторинг и логирование Prometheus + Grafana → метрики, алерты Loki / ELK (Elasticsearch + Kibana) → логи Запрос ошибок API:
rate(http_requests_total{status="500"}[5m])
🟠Автоматическое масштабирование Горизонтальный автоскейлинг (HPA)
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
spec:
  minReplicas: 3
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70
🟠Service Mesh (Istio) для управления трафиком Разделение нагрузки между версиями:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
spec:
  hosts:
  - my-app.example.com
  http:
  - route:
    - destination:
        host: my-app
        subset: v1
      weight: 80
    - destination:
        host: my-app
        subset: v2
      weight: 20
🟠Безопасность (RBAC, Network Policies) Ограничение доступа разработчиков:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dev-access
subjects:
- kind: User
  name: dev-user
roleRef:
  kind: Role
  name: read-only
  apiGroup: rbac.authorization.k8s.io
Ставь 👍 и забирай 📚 Базу знаний

🤔 SIGKILL можно не обработать, а проигнорировать? Нет. SIGKILL (kill -9) — это немаскируемый сигнал. ОС немедленно завершает процесс без возможности перехвата. Единственный способ обработать завершение — использовать другие сигналы, например SIGTERM (kill -15), который можно перехватить и обработать. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как посмотреть логи в уже работающем контейнере? Чтобы посмотреть логи работающего контейнера в Docker, используйте команду:
docker logs <container_id>
или
docker logs <container_name>
🚩Основные флаги 🟠`-f` (follow) следить за логами в реальном времени (как tail -f):
  docker logs -f <container_id>
  
🟠`--tail N` показать только последние N строк:
  docker logs --tail 100 <container_id>
  
🟠`-t` (timestamps) добавить метки времени:
docker logs -t <container_id>
🚩Просмотр логов через `docker-compose` Если контейнер запущен через docker-compose, можно использовать:
docker-compose logs -f
или для конкретного сервиса:
docker-compose logs -f <service_name>
🚩Логи для контейнера с systemd (если Docker пишет в `journald`)
journalctl -u docker -f
Ставь 👍 и забирай 📚 Базу знаний

СберЛизинг — лизинг для бизнеса на выгодных условиях! Для юридических лиц и ИП — легковые и коммерческие авто, грузовой транс
СберЛизинг — лизинг для бизнеса на выгодных условиях! Для юридических лиц и ИП — легковые и коммерческие авто, грузовой транспорт, спецтехника, оборудование. Ключевые преимущества: ✅ Аванс — от 0% ✅ Скидки от поставщиков ✅ Выгодные программы и субсидии ✅ Срок лизинга — до 7 лет ✅ Решение по сделке — от 2 часов Не упускайте возможность обновить автопарк на лучших условиях. Получите персональный расчет и быстрое решение! Перейти на сайт #реклама sberleasing.ru О рекламодателе

🤔 Что такое лимиты и реквесты в Kubernetes? requests — это минимальные ресурсы, которые гарантированно выделяются поду. limits — это максимальные ресурсы, которые pod может потреблять. Kubernetes использует requests для планирования, а limits — для ограничения. Например: request: 200Mi, limit: 1Gi. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие таблицы прописывал в iptables? В iptables есть 5 таблиц, но чаще всего работают с тремя: 🟠`filter` основная таблица для контроля трафика (используется по умолчанию) 🟠`nat` для трансляции адресов (SNAT, DNAT, редиректы) 🟠`mangle` для изменения пакетов (маркировка, TTL, QoS) 🟠`raw` для исключения пакетов из обработки conntrack 🟠`security` используется в SELinux для меток безопасности 🚩Таблица `filter` (фильтрация пакетов) Используется для разрешения или блокировки трафика.
iptables -P INPUT DROP  
iptables -A INPUT -p tcp --dport 22 -j ACCEPT  
🚩Таблица `nat` (трансляция адресов) Используется для NAT, порт-форвардинга, маскарадинга.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  
Пример: Проброс порта (DNAT) – входящие пакеты на 80 порт перенаправляем на 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080  
🚩Таблица `mangle` (изменение пакетов) Используется для маркировки пакетов, изменения TTL, QoS.
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64  
Пример: Маркировка пакетов для использования в tc (QoS)
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
Ставь 👍 и забирай 📚 Базу знаний

🤔 В каких случаях удобно использовать Kubernetes, а в каких Docker Compose? - Docker Compose — подходит для простых локальных окружений, отладки, микросервисов в одной машине. - Kubernetes — для продакшн-окружений, масштабируемости, отказоустойчивости, автодеплоя. Kubernetes нужен там, где требуется оркестрация, распределённость и гибкость. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как задать права на всё? В Linux права доступа к файлам и папкам регулируются с помощью команд chmod и chown. 🟠Назначение всех прав (777) Если вам нужно дать полный доступ ко всем файлам и папкам, используйте
chmod -R 777 /путь/к/папке
-R (recursive) — применяет права ко всем вложенным файлам и каталогам. 777 означает: 7 (чтение, запись, выполнение) для владельца 7 (чтение, запись, выполнение) для группы 7 (чтение, запись, выполнение) для всех остальных 🟠Передача владения (если нет прав) Если текущий пользователь не владеет файлами, назначьте нового владельца
chown -R username:group /путь/к/папке
username — новый владелец group — новая группа 🟠Лучший вариант — более безопасные права Вместо 777 лучше дать только нужные права: Для исполняемых файлов: chmod 755 Для конфигураций и данных: chmod 644 Для приватных ключей и чувствительных файлов: chmod 600 Ставь 👍 и забирай 📚 Базу знаний

💥 eBPF: рентгеновское зрение для production — видим сеть, безопасность и узкие места прямо в ядре Linux 🔥 22 января в 19:00
💥 eBPF: рентгеновское зрение для production — видим сеть, безопасность и узкие места прямо в ядре Linux 🔥 22 января в 19:00 мск — бесплатный открытый вебинар OTUS Устали искать причину падения сервиса часами? А что если увидеть всё сразу: кто куда коннектится, где тормозит сеть, какой процесс подозрительно себя ведёт — и всё это без агентов, без overhead и без перезапуска? На вебинаре покажем настоящую магию eBPF в живых демо. 📌 Что будет: — Живое демо: ловим сетевые проблемы с Cilium Hubble — Живое демо: отлавливаем угрозы в реальном времени с Tetragon — Диагностируем производительность без остановки сервисов — Архитектура eBPF простыми словами — как это вообще работает 🎯 После вебинара вы сможете: — Моментально находить узкие места в продакшене без рестартов — Заменить десятки тяжёлых агентов одним лёгким eBPF-решением — Видеть инциденты безопасности, которые пропускают традиционные инструменты — Понимать, когда eBPF — это спасение, а когда лучше обойтись классикой 👉 Регистрация уже открыта https://otus.pw/tpNJ/ Вебинар приурочен к старту курса «DevOps-инженер: практики и инструменты», где eBPF и современная наблюдаемость — один из ключевых блоков программы. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Какие паттерны Git есть? Некоторые распространённые паттерны ветвления: 1. Git Flow — основная ветка main/master, разработка в develop, релизы и фичи — отдельные ветки. 2. GitHub Flow — коммиты прямо в main через pull-request'ы. 3. GitLab Flow — сочетание Git Flow и CI/CD: возможность работать как с protected branches, так и напрямую. 4. Trunk-Based Development — вся работа в одной главной ветке (main), feature flags для управления выпуском. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сделать так чтобы клиенты отдавали метрики в Prometheus? В Prometheus данные собираются по pull-модели – сервер сам запрашивает метрики у клиентов. Чтобы клиенты отдавали метрики, нужно: 1. Настроить приложение на экспонирование метрик в формате Prometheus. 2. Добавить Prometheus job для сбора этих метрик. 3. Опционально – использовать Pushgateway, если pull-модель не подходит. 🚩Экспонирование метрик в формате Prometheus Если приложение написано на Go, Python, Java или Node.js. Prometheus предлагает официальные клиентские библиотеки: Go: [prometheus/client_golang](https://github.com/prometheus/client_golang) Python: [prometheus_client](https://github.com/prometheus/client_python) Java: [simpleclient](https://github.com/prometheus/client_java) Node.js: [prom-client](https://github.com/siimon/prom-client) Пример для Python 1⃣Установим библиотеку
pip install prometheus_client
2⃣Добавим в код экспонирование метрик
from prometheus_client import start_http_server, Counter
import time

# Создаем счетчик запросов
REQUEST_COUNT = Counter('app_requests_total', 'Total requests')

def process_request():
    REQUEST_COUNT.inc()  # Увеличиваем счетчик
    time.sleep(1)  # Имитация обработки запроса

if __name__ == '__main__':
    start_http_server(8000)  # Открываем метрики на 8000 порту
    while True:
        process_request()
🚩Пример для Node.js 1⃣Установим библиотеку:
npm install prom-client express
2⃣Код сервера:
const express = require('express');
const client = require('prom-client');

const app = express();
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics();

const requestCounter = new client.Counter({
  name: 'http_requests_total',
  help: 'Total HTTP requests',
});

app.get('/', (req, res) => {
  requestCounter.inc();
  res.send('Hello, World!');
});

app.get('/metrics', (req, res) => {
  res.set('Content-Type', client.register.contentType);
  res.end(client.register.metrics());
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});
🚩Настроить Prometheus для сбора метрик Добавляем job в prometheus.yml
scrape_configs:
  - job_name: 'my_app'
    static_configs:
      - targets: ['app_host:8000']
🚩Push-модель через Pushgateway (если нужно) Если клиент не может сам отдавать метрики (например, это краткоживущий job), можно использовать Pushgateway. Запускаем Pushgateway:
docker run -d -p 9091:9091 prom/pushgateway
Отправляем метрики через curl
echo "job_execution_time 5.3" | curl --data-binary @- http://localhost:9091/metrics/job/my_batch_job
Настраиваем Prometheus на сбор данных из Pushgateway
scrape_configs:
  - job_name: 'pushgateway'
    static_configs:
      - targets: ['localhost:9091']
Ставь 👍 и забирай 📚 Базу знаний

🤔 Можно ли откатить деплоймент? Да. Kubernetes поддерживает откат на предыдущую ревизию: - С помощью команды kubectl rollout undo deployment <имя>. - Можно указать конкретную ревизию, если нужно вернуться дальше. Это позволяет безопасно вернуться к предыдущей стабильной версии. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как определить ресурс, который необходим одной node? Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно: Проверить текущее потребление ресурсов (CPU, RAM, диски)* Оценить нагрузку от подов (requests и limits) Использовать мониторинг (Prometheus, Grafana, kubectl top) 🚩Проверить нагрузку на Node (`kubectl top node`) Команда
sh  
kubectl top nodes  
Вывод
NAME        CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%  
node-1      500m         25%    2Gi             50%  
node-2      1000m        50%    4Gi             80%  
🚩Проверить потребление ресурсов подами (`kubectl top pods`) Команда
sh  
kubectl top pods --all-namespaces  
Вывод
NAMESPACE   POD            CPU(cores)   MEMORY(bytes)  
default     web-app-1      250m         256Mi  
default     web-app-2      300m         512Mi  
monitoring  prometheus-1   600m         1Gi  
🚩Анализ `requests` и `limits` подов Команда
sh  
kubectl describe node node-1  
Вывод (пример секции Allocatable)
Allocatable:  
  cpu:                4  
  memory:             8Gi  
  pods:               110  
Проверить requests и limits у подов
sh  
kubectl describe pod my-pod  
Вывод
Requests:  
  cpu:     500m  
  memory:  1Gi  
Limits:  
  cpu:     1  
  memory:  2Gi  
🚩Использование Prometheus и Grafana для анализа нагрузки Prometheus-запросы для анализа Node Средняя загрузка CPU за 5 минут
promql  
avg(rate(node_cpu_seconds_total[5m])) * 100  
Среднее использование памяти
promql  
avg(node_memory_Active_bytes) / avg(node_memory_MemTotal_bytes) * 100
Ставь 👍 и забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Что из себя представляет пайплайн, какие стадии? CI/CD пайплайн — это последовательность стадий (stages), включающих набор job-ов: - build — сборка приложения. - test — юнит и интеграционные тесты. - lint — проверка стиля и ошибок. - deploy — выкладка в dev/stage/prod. - cleanup — удаление временных артефактов, откаты. Каждый job может быть зависим от предыдущих. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В чем отличие девопс-инженера от sre-инженера? DevOps-инженер и SRE (Site Reliability Engineer) — это роли, которые пересекаются в своих задачах, но имеют разные акценты и подходы. 🚩Определение ролей 🟠DevOps-инженер Основная цель: Ускорить и автоматизировать процесс разработки, тестирования и развертывания приложений. Подход: Сосредоточен на создании и поддержке CI/CD, инфраструктуры как кода (IaC) и инструментах автоматизации. Фокус: Эффективность процессов разработки. Улучшение взаимодействия между командами разработки (Dev) и эксплуатации (Ops). 🟠SRE-инженер Основная цель: Обеспечение стабильности, надежности и производительности системы в продакшене. Подход: Применяет инженерные подходы и автоматизацию для управления операциями и масштабированием. Фокус: Стабильность и надежность системы. Мониторинг, устранение сбоев и управление инцидентами. Ставь 👍 и забирай 📚 Базу знаний