DevOps | Вопросы собесов
5.51K subscribers
33 photos
1 video
1.34K links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Во сколько зонах можно включить репликацию в RDS Aurora?

Aurora поддерживает до 5 read-replicas в разных зонах/регионах с высокой доступностью и кросс-региональным фейловером.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔2
🤔 Можно ли на лету изменить настройки dns контейнре через cli?

Нет, нельзя изменить DNS у уже запущенного контейнера напрямую через CLI. Но есть обходные способы!

🚩Остановка и перезапуск контейнера с новыми DNS

Самый надежный способ — перезапустить контейнер с нужными DNS-серверами
docker run --dns 8.8.8.8 --dns 8.8.4.4 -d my_container


Или задать DNS через docker network
docker network create mynet --dns=1.1.1.1
docker run --net=mynet -d my_container


🚩Изменение `/etc/resolv.conf` внутри контейнера (может сработать)

Можно изменить DNS вручную внутри работающего контейнера
docker exec -it my_container sh
echo "nameserver 1.1.1.1" > /etc/resolv.conf


🚩Использование `network connect` (только для user-defined сетей)
Можно подключить контейнер к другой сети с нужными DNS:
docker network create mynewnet --dns=8.8.8.8
docker network connect mynewnet my_container


🚩Изменение настроек `systemd-resolved` (для контейнеров с `host`-сетью)

Если контейнер использует сеть хоста (--network host), можно поменять DNS на хосте:
resolvectl dns eth0 8.8.8.8


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

- Producer отправляет сообщение в топик, который разбит на партиции.
- Kafka записывает в лог-файл на диск.
- Consumer читает сообщения, обращаясь к нужной партиции.
- Каждый consumer хранит offset, Kafka ничего не удаляет, пока не истечёт retention.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Из чего состоит 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), связанными с облачными хранилищами.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Пример асимметричного шифрования?

- RSA — самый популярный алгоритм.
- Пример: клиент шифрует данные публичным ключом сервера, а сервер расшифровывает их своим приватным.
Также используется в TLS-сертификатах, PGP, SSH.


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

В Kubernetes есть несколько механизмов, которые могут запретить или ограничить запуск подов на определенных нодах.

🚩Taints & Tolerations (Метки и допуска)

Taints – метки на нодах, запрещающие размещение подов, если у них нет соответствующего допуска (Toleration).
Используется для изоляции, приоритизации узлов или резервирования ресурсов.
kubectl taint nodes my-node key=value:NoSchedule


Разрешить конкретному поду запускаться на этой ноде
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"


🚩Node Selectors (Выбор ноды по меткам)

Запрещает запускаться на всех нодах, кроме указанных.
Используется для привязки подов к определенным серверам.
spec:
nodeSelector:
disktype: ssd


🚩Node Affinity (Расширенные правила выбора ноды)

Позволяет задать гибкие условия (обязательные и предпочтительные).
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: region
operator: In
values:
- us-east-1


🚩Pod Disruption Budget (Ограничение количества перезапусков)

Запрещает запуск новых подов, если их уже запущено определенное количество.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-pdb
spec:
maxUnavailable: 3
selector:
matchLabels:
app: my-app


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2💊1
🤔 Как работает DNS?

DNS (Domain Name System) преобразует читаемые доменные имена (например,
google.com) в IP-адреса.
Процесс включает:
- запрос к локальному кешу;
- обращение к DNS-рекурсору;
- переход к корневым серверам, затем к серверам доменов верхнего уровня (TLD), затем к авторитетным серверам;
- возврат IP-адреса клиенту.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Почему выстрелил terraform а не salt?

Terraform стал популярнее, чем SaltStack, потому что он лучше решает задачи управления инфраструктурой как кодом (IaC) и обеспечивает декларативный и удобный подход.

🟠Разделение инфраструктуры и конфигурации
Terraform = управление инфраструктурой (создание виртуальных машин, баз данных, сетей и т. д.).
SaltStack = управление конфигурацией (разворачивание ПО, управление пользователями, файлами и т. д.).

🚩Почему Terraform выстрелил?

В современном DevOps важнее быстро и гибко создавать инфраструктуру (AWS, Kubernetes, облака).
Salt же больше заточен под настройку серверов, но это стало второстепенным.

🟠Декларативный подход
Terraform = декларативный язык HCL (HashiCorp Configuration Language)

  resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
}


🟠Лёгкость и отсутствие агентов
Terraform = не требует агентов, просто вызывает API облачных провайдеров.
Salt = требует установки Salt Master и Minion'ов на серверах.

🟠Популярность облаков (AWS, Azure, GCP, Kubernetes)
Terraform нативно интегрируется с облаками (AWS, GCP, Azure, Kubernetes).
Salt тоже умеет работать с облаками, но его основное применение – настройка серверов.

🟠Лучшая экосистема и поддержка сообщества
- У Terraform больше модулей и провайдеров.
- Salt – сложнее настроить для облаков, и сообщество у него меньше.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊5👍1🔥1
🤔 На каком шаге заканчивается Continuous Integration?

CI заканчивается после:
- успешной сборки,
- прохождения тестов,
- публикации артефактов.
Далее идёт этап доставки (delivery) или развёртывания (deployment) — это уже CD.


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

Обычно хранятся в каталоге /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


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

Из release-веток обычно:
- деплой идёт в staging/QA окружение для тестирования;
- после подтверждения — в master, что может инициировать production-деплой.
Это даёт возможность проверить стабильность перед боевым запуском.


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

В Linux список дескрипторов файлов можно посмотреть, используя утилиты и команды, которые позволяют работать с процессами и их открытыми файлами. Основным методом является использование файловой системы /proc, которая содержит информацию о процессах, включая их открытые файловые дескрипторы.

🚩Основные способы

🟠Команда `ls` в каталоге `/proc/[PID]/fd`
Каждый процесс в Linux имеет свой подкаталог в /proc с идентификатором процесса (PID). В подкаталоге fd хранятся ссылки на открытые дескрипторы файлов.
ls -l /proc/$(pidof <имя_процесса>)/fd


Вывод
lrwx------ 1 user user 64 Dec 23 12:00 0 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 1 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 2 -> /dev/pts/0


🟠Использование `lsof`
Команда lsof (list open files) отображает список всех открытых файлов в системе.
lsof -p <PID>


Пример для всех процессов
lsof


Вывод
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user cwd DIR 8,1 4096 256 /home/user
bash 1234 user rtd DIR 8,1 4096 2 /
bash 1234 user 0u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 1u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 2u CHR 136,0 0 3 /dev/pts/0


🟠Использование `lsfd`
Утилита lsfd (из пакета util-linux) удобна для просмотра файловых дескрипторов.
lsfd


Вывод
PID    FD TTY      TYPE      DEVICE SIZE/OFF   NODE NAME
1234 0 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 1 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 2 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0


🚩Полезные флаги и фильтрация

Список дескрипторов определенного пользователя:
lsof -u <имя_пользователя>


Список файлов определенного типа (например, сокеты):
lsof -i


Фильтрация по определенному файлу или устройству:
lsof /path/to/file


🚩Почему важно знать про дескрипторы?

🟠Отладка приложений
Определение, какие файлы, сокеты или устройства использует процесс.
🟠Устранение утечек
Проверка, остаются ли ненужные дескрипторы открытыми.
🟠Администрирование
Диагностика проблем, связанных с блокировкой файлов.

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

Это агент, выполняющий CI/CD задачи.
1. Он регистрируется в GitLab и запускает задачи (jobs) из .gitlab-ci.yml.
2. Работает в разных режимах (shell, Docker, Kubernetes) для выполнения сборок, тестов и деплоя.


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

Security-тестирование – это процесс проверки системы на уязвимости, угрозы и риски атак. Оно помогает защитить данные и сервисы от хакеров.

🚩Сканеры уязвимостей (Nessus, OpenVAS)

- Загружают базу известных уязвимостей (CVE).
- Проверяют систему на наличие этих уязвимостей.
- Используют сигнатурный анализ (по шаблонам) и эвристический анализ (поведенческий).

🚩SQL-инъекции (SQLmap, Burp Suite)

- Автоматически подставляют вредоносные SQL-запросы (' OR 1=1 --).
- Проверяют, есть ли доступ к базе данных.
- Выполняют дамп данных, если нашли уязвимость.
SELECT * FROM users WHERE username = 'admin' --' AND password = 'password'


🚩Поиск XSS-уязвимостей (DOM-XSS, Stored-XSS, Reflected-XSS)

- Вставляют вредоносный JavaScript-код в форму ввода.
- Если скрипт исполняется в браузере – уязвимость найдена.
<script>alert('XSS!')</script>


🚩Подбор паролей (Brute Force, Dictionary Attack)

- Пробуют тысячи вариантов паролей (rockyou.txt).
- Используют John the Ripper, Hydra, Hashcat.
hydra -l admin -P passwords.txt 192.168.1.1 ssh


🚩Анализ трафика (MITM, Sniffing, Packet Analysis)

Захватывают пакеты сети (tcpdump, Wireshark).
Ищут передаваемые пароли, сессии, токены.

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

Работа с диском идёт через:
1. Файловую систему — разбивка данных на блоки, управление метаданными.
2. ОС и драйверы — планируют чтение/запись, оптимизируют доступ.
3. Кэширование — часто используется буферизация в RAM.
4. Контроллер диска — управляет физическим доступом на уровне блоков.


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

Чтобы посмотреть логи работающего контейнера в 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


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

Существует три типа проб:
1. livenessProbe
2. readinessProbe
3. startupProbe
Каждая решает свою задачу и настраивается отдельно в манифесте pod'а.


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

Если вам нужно собирать метрики (нагрузка, ошибки, задержки, бизнес-показатели) с вашего продукта, то вот лучшие инструменты

🟠Prometheus + Grafana
Prometheus – база данных временных рядов (time-series DB) для хранения метрик.
Grafana – мощная визуализация метрик.
Метрики собираются экспортерами (node_exporter, blackbox_exporter и т. д.).
Данные хранятся в Prometheus.
Grafana показывает красивые графики.
rate(http_requests_total[5m])  # Запросы в секунду за 5 минут


🟠Zabbix
Устанавливается агент на сервер (zabbix-agent). Сервер собирает метрики и генерирует алерты.

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

Выделение ресурсов:
- Использование kubernetes requests/limits, cgroups, namespaces.
- Автоматическое масштабирование под CPU/Memory.
Балансировка нагрузки:
- Внутри кластера — через kube-proxy, kube-dns, Istio, Envoy.
- Наружу — Ingress Controller, L7 балансировщики (Nginx, Traefik), L4 (HAProxy, AWS ALB).
Масштабирование:
- Horizontal Pod Autoscaler по метрикам.
- Vertical Pod Autoscaler для подбора ресурсов.
- Cluster Autoscaler — масштабирует сам кластер.
Оркестрация + наблюдение:
- Prometheus + Grafana для метрик.
- Alertmanager для алертов.
- Tracing (Jaeger, OpenTelemetry).


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

Максимальное количество адресов оперативной памяти (ОП), с которыми может взаимодействовать процессор, зависит от ширины адресной шины процессора. Адресная шина определяет, сколько уникальных адресов памяти процессор может адресовать.

🚩Формула вычисления

Количество адресуемых ячеек памяти определяется по формуле:
\text{Максимальное количество адресов} = 2^{\text{ширина адресной шины (в битах)}}

🚩Примеры

🟠Процессор с 32-битной адресной шиной
Максимально возможное количество адресов:
2^{32} = 4,294,967,296 \, (\approx 4 \, \text{Гбайт})

🟠Процессор с 64-битной адресной шиной
Теоретический максимум
2^{64} = 18,446,744,073,709,551,616 \, (\approx 16 \, \text{эксабайт})
Однако современные процессоры обычно поддерживают меньше, например
Архитектура x86-64 (например, Intel и AMD): ограничена 48–57 битами для адресов памяти, что позволяет адресовать от 256 Тбайт до 128 Пбайт.

🚩Почему реальная адресуемая память меньше?

🟠Ограничения архитектуры
Производители процессоров могут использовать меньшее количество адресных линий, чтобы снизить сложность и стоимость. Например, современные 64-битные процессоры адресуют только часть 64-битного пространства (например, 48 бит).

🟠Ограничения ОЗУ
Даже если процессор поддерживает большое количество адресов, максимальная память ограничивается количеством слотов памяти и их емкостью на материнской плате.

🟠Системные резервы
Некоторые адреса зарезервированы для системных нужд (например, для ввода/вывода или BIOS).

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как найти запущенный процесс?

1. Используйте команду ps (например, ps aux для подробной информации).
2. Команда top показывает активные процессы в реальном времени.
3. Для фильтрации можно использовать pgrep <имя процесса>.


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