DevOps | Вопросы собесов
رفتن به کانال در Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv
نمایش بیشتر5 542
مشترکین
+524 ساعت
+47 روز
+4230 روز
آرشیو پست ها
Kafka на практике: продюсеры, консьюмеры, Docker
Хотите увидеть, как реально работает Kafka?
3 августа в 20:00 — вебинар с живыми примерами кода. Поднимем кластер в Docker, создадим топики, напишем продюсеров на Python/Java, настроим консьюмеров с consumer groups. Разберем партиционирование, оффсеты и гарантии доставки.
Для backend-разработчиков, DevOps и всех, кто любит практику.
Узнать больше
#реклама 16+
otus.ru
О рекламодателе
🤔 Что такое 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
}
}
Ставь 👍 и забирай 📚 Базу знанийОнлайн-магистратура для IT: ИТМО, МИФИ + Яндекс
Программы онлайн-магистратуры ИТМО и МИФИ в партнёрстве с Яндексом. Актуальные знания, практическое обучение и гибкий график. Учитесь, совмещая с работой. Доступна господдержка оплаты, отсрочка от армии
Перейти на сайт
#реклама 16+
practicum.yandex.ru
О рекламодателе
🤔 Может ли быть несколько контейнеров в поде?
Да, в Kubernetes Pod можно запускать несколько контейнеров, и это обычная практика. Pod — это минимальная единица развертывания в Kubernetes которая может содержать один или несколько контейнеров.
🚩Зачем запускать несколько контейнеров в одном Pod?
🟠Sidecar-контейнеры
вспомогательные контейнеры, дополняющие основное приложение (логирование, прокси, безопасность).
🟠Init-контейнеры
выполняют задачи перед запуском основного контейнера (например, подготовка базы данных).
🟠Общий файловый кэш
контейнеры могут использовать общие тома (
volumes) для хранения данных.
🟠Общий сетевой стек
контейнеры в одном Pod разделяют IP-адрес и порты.
🚩Пример: два контейнера в одном Pod (Nginx + логирование)
Допустим, у нас есть Nginx и отдельный контейнер, который собирает его логи.
yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: log-volume
mountPath: /var/log/nginx
- name: log-collector
image: busybox
command: ["sh", "-c", "tail -f /var/log/nginx/access.log"]
volumeMounts:
- name: log-volume
mountPath: /var/log/nginx
volumes:
- name: log-volume
emptyDir: {}
🚩Как работают контейнеры внутри Pod?
Все контейнеры внутри Pod имеют один IP-адрес и могут взаимодействовать через localhost.
Например, если в одном контейнере работает Node.js на порту 3000, другой контейнер внутри Pod может обращаться к нему через localhost:3000.
Контейнеры могут делиться файлами через volumes, как в примере выше.
Если нужно выполнить команду перед запуском основного контейнера, используют initContainers.
yaml
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
initContainers:
- name: wait-for-db
image: busybox
command: ["sh", "-c", "until nc -z db-service 5432; do sleep 1; done"]
containers:
- name: app
image: my-app
Ставь 👍 и забирай 📚 Базу знанийМеждународная выставка освещения в Гучжэне, Китай 2026
Дата: 2026. 20-25 октября
⚡Люстры, LED, smart lighting, интерьерный, коммерческий свет напрямую от фабрик Китая!
✨Посетите крупнейшую выставку света в Китае.
Официальный сайт выставки!
Пройти регистрацию и получить бесплатный билет:
Зарегистрироваться
#реклама
reg.denggle.com
О рекламодателе
🤔 Поды висят в pending, в чем проблема?
Pod в
Pending означает, что он не может быть запущен, потому что Kubernetes не может его назначить (schedule) на ноду.
Нет свободных ресурсов на нодах (CPU, RAM)
Неподходящие nodeSelector, affinity или taints
Нет доступных узлов (все NotReady)
Проблемы с PersistentVolume (PVC не привязан)
Ошибки в CNI (сеть Kubernetes)
🚩Проверяем статус подов (`kubectl get pods`)
Команда
kubectl get pods -A
🚩Нет свободных ресурсов на нодах
Команда:
kubectl describe pod my-app-1
🚩Проблема с `nodeSelector`, `affinity`, `taints`
Если под настроен только на определенные ноды, он может не найти подходящую.
kubectl describe pod my-app-1
Вывод:
0/3 nodes are available: 3 node(s) didn't match pod affinity/selector.🚩Все ноды в состоянии `NotReady` Проверяем статус нод
kubectl get nodes
Ставь 👍 и забирай 📚 Базу знанийYandex Ecom Open Air — летнее событие про онлайн-продажи
Yandex Ecom Open Air 2026 объединяет деловую программу, живое общение и атмосферу фестиваля в одном потоке. Здесь обсуждают технологии, которые становятся частью среды. Исследуют силы, которые влияют на весь рынок. Находят новые связи, идеи и точки роста.
В течение дня пространство фестиваля наполняют выступления, дискуссии, встречи, специальные форматы, музыка и активности партнёров.
Присоединиться к происходящему можно из любой точки — на площадке фестиваля или через онлайн-трансляцию.
Зарегистрироваться
#реклама 18+
ecomfest.ru
О рекламодателе
🤔 Как мы можем поменять последовательное выполнение таски плейбука на машинах в параллельное?
По умолчанию Ansible выполняет задачи последовательно, но можно ускорить выполнение с помощью параметра
forks или асинхронных задач (async).
🚩Увеличение параллельных подключений (`forks`)
forks – это количество серверов, на которых Ansible выполняет задачи одновременно.
ansible-playbook -i inventory.ini playbook.yml --forks=10
Установить forks в ansible.cfg:
[defaults]
forks = 10
🚩Асинхронное выполнение (`async` + `poll`)
Если задача выполняется долго, ее можно запустить асинхронно и не ждать завершения.
Пример асинхронного выполнения установки пакета
- name: Установить nginx параллельно
apt:
name: nginx
state: present
async: 300
poll: 0
async: 300 – запускает задачу и дает ей 300 секунд на выполнение
poll: 0 – не ждет завершения, сразу переходит к следующей
Проверить статус запущенных задач:
ansible all -m async_status -a "jid=1234567890" -i inventory.ini
🚩Использование `&` в Shell-командах (`shell` + `nohup`)
Пример запуска задачи в фоновом режиме
- name: Запустить долгий процесс
shell: "nohup long_script.sh &"
Ставь 👍 и забирай 📚 Базу знанийУслуги дата-центра в Москве
Размещение и аренда серверного оборудования в дата-центре.
👍 4 современных дата-центра в Москве.
👍 Лицензированный оператор связи.
👍 Индивидуальные конфигурации выделенных серверов под задачи клиента.
👍 Круглосуточная техническая поддержка в Телеграм, без ботов.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе
🤔 Как в линуксе посмотреть список дескрипторов файлов?
В 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
🚩Почему важно знать про дескрипторы?
🟠Отладка приложений
Определение, какие файлы, сокеты или устройства использует процесс.
🟠Устранение утечек
Проверка, остаются ли ненужные дескрипторы открытыми.
🟠Администрирование
Диагностика проблем, связанных с блокировкой файлов.
Ставь 👍 и забирай 📚 Базу знанийЯндекс Музыка до 360 дней бесплатно
Яндекс Музыка для вас и 3-х ваших близких.
Кинопоиск и Яндекс Книги тоже в мультиподписке Плюс.
Попробуйте бесплатно❤️
Слушать
#реклама 18+
music.yandex.ru
О рекламодателе
🤔 Как задать права на всё?
В 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
Ставь 👍 и забирай 📚 Базу знанийКинопоиск до 360 дней бесплатно
Кинопоиск — тысячи фильмов и сериалов без рекламы, в высоком качестве.
Яндекс Музыка и Книги тоже в мультиподписке Плюс.
Попробуйте бесплатно ❤️
Попробовать
#реклама 18+
kinopoisk.ru
О рекламодателе
🤔 Что такое IaC?
Это практика управления и настройки IT-инфраструктуры (серверов, сетей, баз данных и других ресурсов) с помощью кода, а не вручную через консоли или графические интерфейсы.
🚩Зачем нужен IaC?
🟠Автоматизация
вместо ручной настройки серверов вы пишете код, который делает это автоматически.
🟠Консистентность
одинаковая среда на всех серверах, исключение человеческих ошибок.
🟠Быстрое развертывание
развернуть инфраструктуру можно за минуты.
🟠Легкость в откате
если что-то пошло не так, можно быстро вернуть предыдущее состояние.
🟠Масштабируемость
легко добавить новые серверы или ресурсы при увеличении нагрузки.
🚩Как работает IaC?
С помощью IaC вы описываете всю инфраструктуру в коде (например, в YAML, JSON, HCL и др.), а затем используете инструменты для автоматического развертывания.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
🚩Основные инструменты IaC
🟠Terraform
универсальный инструмент для облаков (AWS, Azure, GCP и др.).
🟠Ansible
удобен для настройки серверов (конфигурации ПО).
🟠Puppet / Chef
похожи на Ansible, но требуют агента на серверах.
🟠CloudFormation
инструмент от AWS для управления ресурсами.
Ставь 👍 и забирай 📚 Базу знанийGraphQL, CQRS, API Gateway - всё, что боялись спросить
REST или GraphQL? Нужен ли CQRS? Зачем API Gateway?
4 августа в 20:00 Сергей Прощаев расставит все точки над i. Разберем, как проектировать быстрые и надежные межсервисные запросы. Узнаете, когда какой инструмент применять, а когда лучше вообще не усложнять.
Для разработчиков, архитекторов и всех, кто устал гадать. Запишитесь сейчас!
Узнать больше
#реклама 16+
otus.ru
О рекламодателе
🤔 Что используется внутри докер контейнера?
Внутри Docker-контейнера используется изолированная среда, которая позволяет запускать приложения в предсказуемом и воспроизводимом окружении. Контейнер предоставляет доступ к базовой файловой системе, процессам, сетевым интерфейсам и другим ресурсам, изолированным от хоста и других контейнеров. Давайте разберем основные компоненты, которые используются внутри Docker-контейнера.
🟠Файловая система
Каждый контейнер имеет собственную файловую систему, основанную на многослойной архитектуре. Это изолированное пространство предоставляет доступ к: Образу Docker (image): Базовый набор файлов, определенных в Docker Image. Copy-on-write (COW): Контейнеры используют copy-on-write слой для изменений. Базовый образ остается неизменным, а любые изменения записываются в слой контейнера. Точки монтирования: Возможность монтировать директории хоста или сетевые тома (volumes) для сохранения данных.
docker run -v /host/path:/container/path nginx
🟠Процессы
В контейнере запускаются процессы, как в обычной операционной системе. Главный процесс контейнера (например, команда из CMD или ENTRYPOINT) работает с PID 1 и отвечает за выполнение приложения. Процессы внутри контейнера изолированы от процессов на хосте благодаря использованию Linux namespaces.
docker exec <container_id> ps aux
🟠Сетевые интерфейсы
Docker-контейнеры используют виртуальные сетевые интерфейсы для связи:
veth-pair: Каждый контейнер имеет виртуальный интерфейс, подключенный к мосту (docker0 по умолчанию).
Типы сетей:
bridge (по умолчанию): Локальная сеть между контейнерами.
host: Контейнер использует сетевой стек хоста.
none: Полностью изолированный контейнер без сети.
overlay: Сеть для соединения контейнеров на разных хостах.
docker network create my_network
docker run --network my_network nginx
🟠Ресурсы хоста (CPU, память, диски)
Контейнеры используют ресурсы хоста, но их потребление можно ограничить:
CPU: Контейнер может использовать определенную долю процессора.
docker run --cpus="2" nginx
Память: Лимит на использование оперативной памяти.
docker run -m 512m nginx
I/O (диск): Возможность ограничения операций чтения/записи.
docker run --device-read-bps=/dev/sda:1mb nginx
🟠Изоляция (Namespaces и Control Groups)
Docker использует технологии изоляции, встроенные в ядро Linux:
Namespaces: Обеспечивают изоляцию пространства имен (PID, сети, файловой системы и т.д.). Control Groups (cgroups): Управляют использованием ресурсов (CPU, RAM, I/O).
lsns
🟠Среда выполнения (Runtime)
Docker-контейнеры работают благодаря среде выполнения, например:
runc: Легковесное средство выполнения контейнеров, совместимое со стандартом OCI. containerd: Менеджер для запуска контейнеров, который Docker использует для взаимодействия с низкоуровневыми компонентами.
🟠Настройки и переменные среды
Контейнер может быть настроен с использованием:
Переменных среды: Устанавливаются через ENV в Dockerfile или с помощью флага -e.
docker run -e ENV_VAR=value nginx
Аргументов при сборке: Используются в Dockerfile через ARG.
ARG BUILD_VERSION
🟠Приложение или служба
Главное, что работает внутри контейнера, — это само приложение: Например, веб-сервер (Nginx, Apache) или база данных (MySQL, PostgreSQL). Контейнеры упрощают запуск приложений с предсказуемыми зависимостями.
🟠Логи и мониторинг
Docker предоставляет возможность просматривать логи контейнера и собирать метрики
Логи
docker logs <container_id>
Информация о контейнере
docker inspect <container_id>
Ставь 👍 и забирай 📚 Базу знанийДачная дача в Т-Банк Шопе
Футболки с огурцами, тыквами, капустой и другие крутые штуки, да еще и с финансовыми пожеланиями. Надо брать.
Посмотреть каталог
Финансовые услуги оказывает: АО "Тинькофф Банк".
#реклама
tbank.ru
О рекламодателе
🤔 Как бы организовал хранение и доступ к секретам?
В DevOps и Kubernetes важно безопасно хранить секретные данные (пароли, API-ключи, токены). Нельзя хранить их в коде, в
Git, в .env файлах без шифрования.
🚩HashiCorp Vault (лучший вариант для масштабных проектов)
Полностью управляемое решение для хранения и динамической ротации секретов.
Шифрование с поддержкой KMS.
API-доступ и интеграция с CI/CD.
Как получить секрет через CLI?
vault kv put secret/db password="SuperSecret123"
vault kv get secret/db
Как использовать в Jenkins?
withVault([vaultSecrets: [[path: 'secret/db', secretValues: [['envVar': 'DB_PASS', 'vaultKey': 'password']]]]]) {
sh 'echo $DB_PASS' # Переменная доступна только внутри блока
}
🚩Kubernetes Secrets (если приложение в K8s)
Интеграция с Kubernetes, управление через kubectl.
Доступ через переменные окружения или монтирование в файл.
Можно использовать Sealed Secrets или SOPS для шифрования.
Как создать секрет?
kubectl create secret generic db-secret --from-literal=password='SuperSecret123'
Как использовать в Deployment?
env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-secret
key: password
🚩AWS Secrets Manager / Azure Key Vault / GCP Secret Manager
Интеграция с облачными сервисами (IAM, Lambda, RDS).
Автоматическая ротация ключей.
Как получить секрет в AWS?
aws secretsmanager get-secret-value --secret-id my-secret
Как подключить к Kubernetes?
Используем External Secrets Operator:
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: db-secret
spec:
secretStoreRef:
name: aws-secrets
kind: SecretStore
target:
name: db-secret
data:
- secretKey: password
remoteRef:
key: my-db-password
🚩SOPS + GitOps (для хранения в Git, но зашифрованно)
Позволяет хранить секреты в Git без утечек.
Работает с KMS, PGP, age.
Как зашифровать секрет?
sops --encrypt --age YOUR_PUBLIC_KEY secrets.yaml > secrets.enc.yaml
Как расшифровать?
sops --decrypt secrets.enc.yaml
Ставь 👍 и забирай 📚 Базу знанийОнлайн-магистратура для IT: ИТМО, МИФИ + Яндекс
Программы онлайн-магистратуры ИТМО и МИФИ в партнёрстве с Яндексом. Актуальные знания, практическое обучение и гибкий график. Учитесь, совмещая с работой. Доступна господдержка оплаты, отсрочка от армии
Перейти на сайт
#реклама 16+
practicum.yandex.ru
О рекламодателе
🤔 Из чего состоит 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), связанными с облачными хранилищами.
Ставь 👍 и забирай 📚 Базу знаний