DevOps | Вопросы собесов
5.2K subscribers
28 photos
817 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Если запустить любой плейбук через консоль какая там появится первая надпись?

При запуске Ansible-плейбука через консоль командой
ansible-playbook playbook.yml


Первая строка, которая появится в консоли
PLAY [имя_плейбука] *****************************************************


Пример запуска
ansible-playbook site.yml


Вывод в консоли:
PLAY [Install and configure web server] *********************************


Если name: не указан в плейбуке, будет:
PLAY [Unnamed Play] ****************************************************


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯7👍6
🤔 Какие инструменты приходилось использовать для мониторинга контейнеров?

Инструменты, такие как Prometheus, Grafana, ELK Stack, Datadog, помогают собирать метрики, анализировать логи и визуализировать состояние контейнеров.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯2👍1👀1
🤔 Что такое debezium?

Она позволяет отслеживать изменения в базах данных (INSERT, UPDATE, DELETE) в реальном времени и передавать их в Kafka, Elasticsearch, MongoDB и другие системы.

🚩Как работает Debezium?

Подключается к базе данных
(PostgreSQL, MySQL, MongoDB, Oracle и др.).
Слушает лог изменений (binlog, WAL, oplog и т. д.)
Формирует события в формате JSON
Передаёт их в Kafka или другую шину данных.

🚩Где используется?

Синхронизация данных между базами
Репликация данных в реальном времени
Отправка изменений в аналитические системы (Elasticsearch, ClickHouse)
Аудит и логирование изменений

🟠Пример работы с Kafka
Запускаем Debezium Connector для PostgreSQL*
{
"name": "inventory-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"database.hostname": "localhost",
"database.port": "5432",
"database.user": "debezium",
"database.password": "dbz",
"database.dbname": "inventory",
"database.server.name": "dbserver1"
}
}


При изменении данных в таблице, Kafka получит событие:
{
"schema": { ... },
"payload": {
"before": { "id": 1, "name": "Old Name" },
"after": { "id": 1, "name": "New Name" },
"op": "u" // Update
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🤔 Что делать, если у нескольких команд в CI есть общие таски?

Вынесите общие задачи в отдельный pipeline или shared template, чтобы команды могли переиспользовать их без дублирования.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
🤔 Если мы запускаем приложение в контейнере какой-то микросервис чем будет отличаться под в данном случае?

Если запустить микросервис просто в контейнере (например, через docker run), он будет работать как отдельный процесс, без встроенной системы управления и оркестрации.
Но если запустить его в Kubernetes, он будет работать в поде (Pod).

🚩Когда использовать контейнер, а когда под?

Если нужен просто контейнер → docker run my-app.
Если нужен отказоустойчивый микросервис → Kubernetes Pod.
Если несколько контейнеров должны работать вместе (например, приложение + sidecar) → Pod.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👾1
🤔 Используя GitLab CI, что делать, если нужно сохранять данные между несколькими стейджами?

Применяйте artifacts, которые сохраняют промежуточные данные между этапами выполнения pipeline.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие framework знаешь?

Фреймворки — это библиотеки, упрощающие разработку. Они бывают для веба, DevOps, тестирования, машинного обучения и т. д.

🚩**Веб-разработка**

🟠Backend (серверная часть)
Django (Python) — мощный фреймворк для веб-приложений.
Flask (Python) — минималистичный микрофреймворк.
FastAPI (Python) — для API, быстрый на async.
Spring Boot (Java) — корпоративные приложения.
Express.js (Node.js) — популярный фреймворк для API.
NestJS (Node.js) — модульный TypeScript-фреймворк.

🟠Frontend (клиентская часть)
React (JavaScript) — компоненты, Virtual DOM.
Vue.js (JavaScript) — лёгкий и быстрый.
Angular (TypeScript) — для сложных приложений.
Svelte — новый подход к реактивному UI.

🚩DevOps и инфраструктура

Ansible — автоматизация серверов.
Terraform — управление облаками через код.
Kubernetes (K8s) — оркестрация контейнеров.
Docker Swarm — альтернатива Kubernetes.
Prometheus — сбор метрик, мониторинг.
ELK Stack (Elasticsearch, Logstash, Kibana) — логирование.

🟠Тестирование
PyTest (Python) — удобное тестирование.
Selenium — тестирование UI в браузерах.
JUnit (Java) — тесты для Java-приложений.
Postman — API-тестирование.

🟠Машинное обучение и анализ данных
TensorFlow — глубокое обучение.
PyTorch — альтернатива TensorFlow.
Scikit-learn — классическое ML.
Pandas — обработка данных.
Matplotlib, Seaborn — визуализация данных.

🟠GameDev
Unity (C#) — 2D/3D-игры.
Unreal Engine (C++) — мощный движок.
Godot — лёгкий и бесплатный.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7
🤔 Что такое сущность services в GitLab CI?

Это временные контейнеры, которые запускаются вместе с job. Например, база данных для интеграционных тестов.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Какие есть лучшие практики в использовании инструкции 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/


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤔2
🤔 Что такое executor в GitLab CI?

Executor определяет среду, в которой выполняются jobs: Docker, Shell, Kubernetes или виртуальная машина.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍1
🤔 Что за протокол 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


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2
🤔 На чём раннер запускает pipeline в GitLab CI?

GitLab Runner может запускать pipeline на Docker-контейнерах, виртуальных машинах или в Kubernetes, в зависимости от конфигурации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 В docker контейнере локальной учётной записи выполнили команду docker Run Alpine пробел ID: Какой ID будет выведен?

Если в контейнере выполнить:
docker run alpine ID:


🚩Как проверить ID контейнера?
Если вы хотите получить ID запущенного контейнера, правильная команда:
docker run --rm alpine sh -c 'echo $HOSTNAME'


🚩Как получить ID уже запущенного контейнера?

Если контейнер уже работает, его ID можно посмотреть так
docker ps -q


или
docker inspect -f '{{.Id}}' container_name


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍2
🤔 Что полезного можно сделать после деплоя?

После деплоя важно провести пост-мониторинг и тестирование, включая:
- Мониторинг логов и метрик для выявления ошибок (Grafana, Prometheus).
- Проверку работоспособности API и UI (ручные тесты, Postman).
- Тестирование нагрузки (например, k6, JMeter).
- Анализ отзывов пользователей и быстрая реакция на проблемы.
- Откат в случае критических ошибок (с помощью feature toggles или blue-green deployment).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Что сделать если зависает ssh?

Если SSH завис, не стоит сразу закрывать терминал. Есть несколько причин и решений.

🚩Проверить, можно ли выйти без разрыва сессии
Если SSH завис, но сессия не разорвана, попробуйте выйти без закрытия терминала:
~.


Переключение в режим управления SSH
~Ctrl+Z


🚩Проверить соединение с сервером

Если SSH завис, причина может быть в разрыве соединения. Проверьте:

Работает ли пинг до сервера:
ping server_ip

🔹 Открыт ли SSH-порт (22):
nc -zv server_ip 22


🚩Перезапустить SSH-клиент

Если только один SSH-клиент завис, попробуйте:
pkill -9 ssh


или
killall -9 ssh


Затем переподключитесь
ssh user@server_ip


🚩Проверить SSH-сервер

Если сервер доступен, но SSH зависает, войдите через консоль или другой метод (например, VNC, IPMI).

Если SSH не отвечает, перезапустите его:
sudo systemctl restart ssh


или
service ssh restart


🚩Отключить TCP KeepAlive или изменить таймауты

Иногда SSH зависает из-за разрыва соединения на роутере или файрволе.

Добавьте в ~/.ssh/config на клиенте
Host *
ServerAliveInterval 60
ServerAliveCountMax 5


Или в /etc/ssh/sshd_config на сервере
ClientAliveInterval 60
ClientAliveCountMax 5


Затем перезапустите SSH
sudo systemctl restart ssh


🚩Убить зависшую SSH-сессию на сервере

Если осталось зависшее подключение, найдите его и завершите:
who  # Показывает активные пользователи
ps aux | grep ssh # Показывает процессы SSH
pkill -9 -u username # Завершает все сессии пользователя


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🤔 Какой инструмент может помочь в снятии метрик с продукта?

Метрики можно собирать с помощью систем мониторинга:
- Prometheus – сбор и обработка метрик.
- Grafana – визуализация метрик.
- ELK Stack (Elasticsearch, Logstash, Kibana) – анализ логов.
- Datadog, New Relic, AppDynamics – коммерческие решения для мониторинга.
- cAdvisor – мониторинг контейнеров Docker.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍1
🤔 Сервис типа кластер P со значением nan, что это значит?

Если в системе мониторинга или логах кластерный сервис (Cluster P) показывает значение NaN (Not a Number), это означает, что данные недоступны или не определены.

🚩Возможные причины NaN в кластере

🟠Нет данных от сервиса (сбой мониторинга)
Метрика не обновляется из-за сбоя Prometheus, Zabbix или Grafana.
Датчики или агенты не отправляют данные.
Посмотреть логи агента
  journalctl -u node_exporter --no-pager | tail -20


Проверить доступность сервиса
  curl -s http://service-ip:port/metrics


🟠Ошибка в коде (деление на 0, пустой запрос)
Если метрика рассчитывается (X / Y), но Y = 0, результат будет NaN.
SQL-запрос возвращает пустой результат. Если используется PromQL, попробуйте запросить сырые данные:
  rate(http_requests_total[5m])


Проверить SQL-запрос, если данные идут из базы:
  SELECT AVG(value) FROM metrics WHERE time > now() - interval '1 hour';


🟠Проблема с кластером (узлы не отвечают)
Один или несколько узлов в кластере недоступны. DNS или балансировщик не может найти сервис.
Посмотреть статус узлов:
  kubectl get nodes


Проверить доступность сервиса в кластере:
  kubectl get pods -n monitoring


🟠Проблема с сетью (файрвол, маршрутизация)
Запросы блокируются файрволом (iptables, firewalld). Метрика приходит с другого узла, но между ними нет связи.
Проверить сетевые правила:
  iptables -L -n | grep DROP


Проверить соединение между узлами:
  nc -zv service-ip port


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Насколько глубоко приходилось работать с отладкой из консоли на Linux?

Глубина работы зависит от задач:
- Мониторинг процессов (top, htop, ps, strace).
- Анализ сетевого трафика (netstat, tcpdump, iftop).
- Отладка ошибок в логах (journalctl, dmesg, grep, awk).
- Диагностика дискового пространства (df, du, lsof).
- Анализ зависания системы (vmstat, iostat, free, sar).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥7
🤔 Что слышали про rancher kubernetes?

Это платформа для управления Kubernetes-кластерами. Она позволяет развертывать, настраивать, мониторить и управлять несколькими кластерами Kubernetes из единой панели управления. Rancher упрощает работу с Kubernetes, предоставляя удобный UI, API и инструменты автоматизации.

🚩Зачем нужен Rancher?

🟠Управление несколькими кластерами
Rancher позволяет управлять кластерами Kubernetes, развернутыми в различных облаках (AWS, GCP, Azure) и на локальной инфраструктуре.
🟠Упрощенная установка и настройка
С помощью Rancher можно быстро развернуть Kubernetes-кластеры с минимальными усилиями.
🟠Безопасность и контроль доступа
Поддерживает аутентификацию через LDAP, Active Directory, GitHub и другие методы.
🟠Мониторинг и логирование
Встроенная поддержка Prometheus, Grafana и Fluentd для мониторинга и логов.
🟠Развертывание приложений
Поддерживает Helm-чарты и стандартные манифесты Kubernetes.

🚩Как работает Rancher?

🟠Rancher Server
центральный компонент, управляющий кластерами и предоставляющий UI/API.
🟠Kubernetes-кластеры
могут быть развернуты с помощью Rancher (RKE, RKE2) или добавлены вручную (например, EKS, AKS, GKE).
🟠Rancher Agents
агенты, установленные в кластерах для обеспечения связи с сервером Rancher.

🚩Пример развертывания Rancher

Для развертывания Rancher можно использовать Docker
docker run -d --name=rancher --restart=unless-stopped \
-p 80:80 -p 443:443 \
rancher/rancher:latest


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👾1
🤔 Чем симлинк отличается от хардлинка?

- Симлинк (Symbolic link) – создаёт ссылку на файл или каталог, указывая его путь.
- Хардлинк (Hard link) – создаёт другой файловый дескриптор для того же инода, оба файла равнозначны.
- Разница: если удалить оригинальный файл, симлинк сломается, а хардлинк сохранит данные.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥31