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

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

Открыть в Telegram
5 502
Подписчики
-324 часа
-107 дней
-530 день
Архив постов
🤔 Как посмотреть логи в уже работающем контейнере? Чтобы посмотреть логи работающего контейнера в 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
Ставь 👍 и забирай 📚 Базу знаний

🤔 Если запускаем приложение в контейнере, какой-то микросервис, чем будет отличаться под в данном случае? 1. Контейнер: Это единичная инстанция приложения, работающая в изолированном окружении. 2. Под: В Kubernetes под может содержать один или несколько контейнеров, которые работают вместе, делят ресурсы (например, сеть, volume) и рассматриваются как единая сущность для оркестрации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

wipe right or swipe left Что делать, если твои мэтчи в жизни не такие точные, как твой код? Спокойно, 14 февраля в 19:00 по М
wipe right or swipe left Что делать, если твои мэтчи в жизни не такие точные, как твой код? Спокойно, 14 февраля в 19:00 по МСК мы разберём, как ML анализирует speed dating и предсказывает match. 📌 Мы возьмем реальные данные со speed dating. 📌 Обучим модель, которая скажет: match или swipe left. 📌 Разберём, какие признаки реально важны (спойлер: работа в IT — не прям гарантия успеха (наши маркетологи подтверждают 😥). 💡 Приходи, если хочешь прокачать свой Python, ML и, возможно, станешь идеальной парой, как самый стильные форсы. 👉 Записаться

🤔 Как сделать rebase на main branch? Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (main). 🟠Переключаемся на вашу текущую ветку Допустим, вы работаете в ветке feature-branch:
git checkout feature-branch
🟠Выполняем rebase на `main` Сначала убедимся, что main обновлена:
git checkout main
git pull origin main
Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main
🟠Разрешение конфликтов (если есть) Если у вас есть конфликты, Git остановит процесс и попросит их решить. Откройте файлы с конфликтами, исправьте их. Добавьте исправленные файлы:
   git add <файл>
   
Продолжите rebase:
   git rebase --continue
   
🟠Обновление удалённого репозитория Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что делаем после этапа тестирования сборки? 1. Публикация артефактов: Загружаем успешно протестированные образы в репозиторий Docker (например, Docker Hub). 2. Деплой: Разворачиваем приложение в тестовой, staging или production среде. 3. Мониторинг: Настраиваем мониторинг и сбор метрик для развернутых компонентов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как и где посмотреть логи какого-нибудь сервиса? Обычно хранятся в каталоге /var/log. Также многие современные дистрибутивы используют систему журналирования systemd для управления и просмотра логов. 🚩Способы просмотра 🟠Просмотр логов в /var/log Каталог /var/log содержит логи большинства системных сервисов и приложений. Логи системных сообщений /var/log/syslog: Содержит общие системные логи. /var/log/messages: Содержит общие системные сообщения (не во всех дистрибутивах).
cat /var/log/syslog
less /var/log/syslog
tail -f /var/log/syslog
Логи конкретных сервисов Apache: /var/log/apache2/ или /var/log/httpd/ Логи доступа: /var/log/apache2/access.log или /var/log/httpd/access_log Логи ошибок: /var/log/apache2/error.log или /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log  
Nginx: /var/log/nginx/ Логи доступа: /var/log/nginx/access.log Логи ошибок: /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log 
MySQL: /var/log/mysql/ или /var/log/mysqld.log
tail -f /var/log/mysql/error.log 
SSH: /var/log/auth.log или /var/log/secure
tail -f /var/log/auth.log 
🟠Использование `journalctl` для системных логов journalctl — это утилита для просмотра и управления журналами systemd. Она позволяет фильтровать логи по различным критериям, таким как время, сервис и уровень логирования. Основные команды journalctl Просмотр всех журналов
journalctl  
Логов конкретного сервиса
journalctl -u nginx.service  
Последних логов и продолжение просмотра в реальном времени
journalctl -f
journalctl -u nginx.service -f
Логов за определённый период
journalctl --since "2024-07-25 12:00:00" --until "2024-07-25 13:00:00" 
Логов с определённым уровнем логирования
journalctl -p err
journalctl -p warning  
🚩Примеры использования 🟠Просмотр логов Apache Логи доступа
tail -f /var/log/apache2/access.log  
Логи ошибок
tail -f /var/log/apache2/error.log 
🟠Просмотр логов Nginx Логи доступа
tail -f /var/log/nginx/access.log
Логи ошибок
tail -f /var/log/nginx/error.log  
🟠Использование `journalctl` для просмотра логов Nginx Все логи Nginx
journalctl -u nginx.service  
Последние логи Nginx в реальном времени
journalctl -u nginx.service -f  
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как на этапе сборки образа передать в контейнер внешнее значение, например, Build ID, сгенерированную CI, чтобы оно там стало env? Используйте аргументы сборки (--build-arg): 1. Укажите переменную через ARG в Dockerfile. 2. Передайте значение аргумента с помощью флага --build-arg при сборке. Это значение можно сохранить как переменную окружения внутри контейнера. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как установить msodbcsql на астре? Установка Microsoft ODBC Driver for SQL Server (msodbcsql) на Astra Linux требует выполнения нескольких шагов, включая настройку репозиториев, установку необходимых пакетов и принятие лицензионного соглашения. 🟠Подготовка системы Перед началом убедитесь, что ваша система обновлена и имеет необходимые инструменты для установки:
sudo apt update
sudo apt install -y curl apt-transport-https
🟠Добавление репозитория Microsoft Microsoft предоставляет собственные репозитории для своих пакетов. Поскольку Astra Linux основана на Debian, мы будем использовать соответствующий репозиторий:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/debian/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
🟠Установка msodbcsql После добавления репозитория обновите список пакетов и установите драйвер:
sudo apt update
sudo ACCEPT_EULA=Y apt install -y msodbcsql18
🟠Установка дополнительных инструментов (опционально) Если вам нужны инструменты командной строки, такие как sqlcmd и bcp, установите пакет mssql-tools:
sudo ACCEPT_EULA=Y apt install -y mssql-tools18
Чтобы эти инструменты были доступны из любого места в терминале, добавьте их в переменную PATH
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
🟠Проверка установки Убедитесь, что драйвер установлен корректно, выполнив команду:
odbcinst -q -d -n "ODBC Driver 18 for SQL Server"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Для чего директории право на исполнение? Право на исполнение для директории разрешает пользователю заходить в неё и просматривать содержимое. Без него доступ к файлам в директории может быть ограничен, даже если к самим файлам есть права чтения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как задать права на всё? В 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 Ставь 👍 и забирай 📚 Базу знаний

🤔 Где хранится название файла? Название файла хранится в записи каталога, который указывает на соответствующий inode, содержащий метаданные файла. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 На каких принципах работает докер? Это платформа для автоматизации развертывания, масштабирования и управления приложениями в контейнерах. Контейнеры позволяют изолировать приложения и их зависимости, обеспечивая легкую переносимость и консистентность окружения. Основные принципы работы Docker включают в себя контейнеризацию, использование образов, контейнеров, оркестрацию и сетевую инфраструктуру. 🚩Основные принципы 🟠Контейнеризация Контейнеризация позволяет запускать приложения и их зависимости в изолированных окружениях. Контейнеры предоставляют легкие и эффективные среды, которые включают все необходимое для запуска приложений. Контейнеры: Легковесные, изолированные окружения, которые работают поверх ядра хостовой операционной системы. Namespace: Механизм ядра Linux, обеспечивающий изоляцию процессов, сети, PID, пользовательских идентификаторов и монтирования файловых систем. Cgroups: Контрольные группы в Linux, которые ограничивают и отслеживают использование ресурсов контейнерами, включая процессорное время, память и I/O. 🟠Использование образов Образы Docker являются шаблонами для создания контейнеров. Образ включает в себя все необходимые компоненты, такие как код приложения, библиотеки, зависимости и конфигурационные файлы. Dockerfile: Скрипт, содержащий инструкции по созданию образа. Используется для автоматизации создания образов. Слойность: Каждый образ состоит из нескольких слоев, которые кэшируются и могут использоваться повторно, что ускоряет процесс сборки и уменьшает использование ресурсов. 🟠Изоляция и безопасность Docker обеспечивает изоляцию приложений, что позволяет запускать несколько контейнеров на одном хосте без взаимного влияния. Изоляция процессов: Каждый контейнер имеет свой собственный процессорный контекст, что исключает конфликты между приложениями. Изоляция файловой системы: Контейнеры имеют свои собственные файловые системы, изолированные от файловой системы хостовой операционной системы. Безопасность: Docker использует механизмы, такие как AppArmor, SELinux и seccomp, для обеспечения безопасности контейнеров. 🟠Управление сетями Docker предоставляет гибкие возможности управления сетями для контейнеров, включая создание изолированных сетей и подключение контейнеров к различным сетям. Bridge Network: Создает изолированную сеть для контейнеров на одном хосте. Host Network: Контейнер использует сетевые интерфейсы хостовой операционной системы. Overlay Network: Позволяет контейнерам на разных хостах взаимодействовать друг с другом. Macvlan Network: Контейнеры получают собственные MAC-адреса и ведут себя как физические устройства в сети. 🟠Хранение данных Docker поддерживает различные механизмы хранения данных для обеспечения сохранности и доступности данных контейнеров. Volumes: Независимые от контейнеров хранилища данных, которые могут быть подключены к одному или нескольким контейнерам. Bind Mounts: Позволяют монтировать директории хостовой файловой системы в контейнеры. Tmpfs: Использует память хоста для хранения данных контейнера, что полезно для временных данных. Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое umask? Это маска прав доступа, определяющая, какие права будут убраны при создании новых файлов и директорий. Например, umask 022 удаляет права записи для группы и других пользователей. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое дешборды в графане? Это визуальные панели, на которых отображаются метрики, логи и данные, собранные из различных источников. Они используются для мониторинга состояния систем, приложений и инфраструктуры, предоставляя наглядное представление в виде графиков, диаграмм, таблиц и других визуализаций. 🚩Почему нужны дешборды в 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. Что надо делать: 1. Смотреть записи собеседований (список будет дан) 2. Выписывать вопросы, которые задают кандидату Ставка: 450 руб. / час Примерная ЗП: 54 000 руб. / месяц (4 часа в день) Если интересно и можешь уделять работе от 4 часов / день, то отправь сообщение https://t.me/niniafd и сразу напиши какие языки программирования знаешь и какие лучше всего?

🤔 Что за команда truncate? truncate изменяет размер файла, обрезая или увеличивая его. Например, можно обрезать файл до определённого размера или создать пустой файл заданной длины. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

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

🤔 Какие утилиты в Linux обычно используете для траблшутинга? - top/htop: мониторинг процессов. - iotop: анализ ввода-вывода. - strace: трассировка системных вызовов. - lsof: открытые файлы и сокеты. - netstat/ss: состояние сети. - dmesg: системные сообщения ядра. - journalctl: просмотр логов systemd. - ping, traceroute: диагностика сети. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Из чего состоит control plane? В Kubernetes Control Plane — это набор компонентов, которые управляют всей кластерной системой. Он отвечает за контроль над состоянием кластера, управлением узлами (nodes) и развертыванием приложений. 🟠kube-apiserver Что делает: Это центральный компонент, предоставляющий API для управления кластером. Почему нужен: Все взаимодействия, включая добавление/удаление узлов, создание подов и настройку сетей, проходят через API-сервер. Как работает: Принимает запросы от пользователей, kubectl, и других компонентов. Проверяет подлинность запросов и валидирует данные. Передает команды другим компонентам через REST API. 🟠etcd Что делает: Это распределённое key-value хранилище, которое сохраняет все данные о состоянии кластера. Почему нужен: Все данные о конфигурации, статусе и метаданных кластера сохраняются в etcd. Если etcd выходит из строя, кластер теряет свою управляемость. Как работает: Хранит информацию о подах, конфигурации сетей и статусе всех компонентов. Поддерживает консенсус между узлами, обеспечивая надёжность данных. 🟠kube-scheduler Что делает: Назначает поды на доступные узлы. Почему нужен: Без планировщика поды не смогут быть развернуты на узлах. Как работает: Считывает незапланированные поды из API-сервера. Анализирует доступные узлы на основе их ресурсов (CPU, память и т.д.). Назначает узел для каждого пода на основе алгоритмов (например, минимальная загрузка). 🟠kube-controller-manager Что делает: Управляет контроллерами, которые следят за состоянием ресурсов в кластере. Почему нужен: Контроллеры — это "надсмотрщики", которые автоматически исправляют отклонения от желаемого состояния. Как работает: Включает несколько встроенных контроллеров: Node Controller: Следит за доступностью узлов. Replication Controller: Поддерживает нужное количество реплик подов. Endpoint Controller: Обновляет Endpoints-объекты. Service Account Controller: Создает учетные записи для сервисов. 🟠cloud-controller-manager Что делает: Управляет интеграцией с облачными провайдерами (например, AWS, GCP). Почему нужен: Позволяет использовать облачные функции, такие как балансировка нагрузки, управление дисками и маршрутизацией. Как работает: Отвечает за создание LoadBalancer. Управляет постоянными томами (Persistent Volumes), связанными с облачными хранилищами. Ставь 👍 и забирай 📚 Базу знаний

🤔 Чем юниксовая система отличается от линуксовой? Linux — это свободная реализация Unix, основанная на его принципах. Unix — это семейство проприетарных систем, использующих одноядерную архитектуру, тогда как Linux является открытым и более гибким для модификации. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

DevOps | Вопросы собесов - Статистика и аналитика Telegram-канала @easy_devops