DevOps | Вопросы собесов
Ir al canal en Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Mostrar más5 572
Suscriptores
-224 horas
-27 días
+1230 días
Archivo de publicaciones
🤔 Чем отличается образ от контейнера?
Образ (Image) – это шаблон, из которого создаются контейнеры.
Контейнер (Container) – это запущенный экземпляр образа.
🚩Что такое образ (Image)?
Образ – это неизменяемый шаблон с установленным ПО
Содержит все файлы, библиотеки и зависимости
Может храниться в реестре (Docker Hub, GitHub Container Registry, ECR)
docker pull nginx:latest
Пример списка образов
docker images
Пример создания образа через Dockerfile
FROM ubuntu:latest
RUN apt update && apt install -y nginx
CMD ["nginx", "-g", "daemon off;"]
docker build -t my-nginx .
🚩Что такое контейнер (Container)?
Контейнер – это запущенный экземпляр образа
Может изменять файлы и состояние, но это не сохраняется в образе
Изолирован, но использует ядро ОС хоста
docker run -d --name web -p 80:80 nginx
Пример списка контейнеров
docker ps
Пример остановки контейнера
docker stop web
Ставь 👍 и забирай 📚 Базу знаний🤔 Как установить msodbcsql на Astra?
Пакет msodbcsql — это драйвер ODBC от Microsoft для SQL Server. Его нет в стандартных репах Astra.
1. Добавь репозиторий Microsoft:
- Установи зависимости: unixODBC, curl, gnupg2.
- Импортируй ключ и добавь репо:
- curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
- echo "deb [arch=amd64] https://packages.microsoft.com/debian/10/prod buster main" | sudo tee /etc/apt/sources.list.d/msprod.list
2. Установи:
3. sudo apt update
4. sudo apt install msodbcsql17
Примечание: требуется совместимость с Debian-базой, так что могут понадобиться обходные пути.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Конференция по кибербезопасности ZeroNights
Узнайте про наболевшие проблемы кибербезопасности, техники взлома систем, и методы предотвращения угроз. 3 трека, 4 сцены и 3 десятка спикеров. Встречаемся 30 сентября в СПб — билеты уже в продаже!
Перейти на сайт
#реклама
zeronights.ru
О рекламодателе
🤔 В чем разница Deployment и DaemonSet?
Deployment и DaemonSet являются двумя типами контроллеров, которые управляют развертыванием и обеспечением жизненного цикла подов (групп контейнеров). Они оба играют важные роли, но используются для разных целей и сценариев.
🚩Deployment
Это контроллер, который обеспечивает декларативное обновление подов и ReplicaSets (другой тип контроллера, который управляет одновременным запуском нескольких экземпляров одного и того же пода). Deployment поддерживает непрерывное развертывание, откат к предыдущим версиям, а также масштабирование подов.
🟠Масштабирование
Вы можете увеличивать или уменьшать количество подов в зависимости от нужд.
🟠Обновления
Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), которое помогает минимизировать простои при обновлении приложения.
🟠Самовосстановление
Автоматически перезапускает поды, которые перестали работать, находятся в ошибочном состоянии или не отвечают.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
🚩DaemonSet
Это контроллер, который гарантирует, что на каждом узле кластера Kubernetes запущен экземпляр заданного пода. Когда добавляется новый узел, на нем автоматически запускается под, управляемый DaemonSet, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле.
🟠Гарантия запуска
Убедитесь, что каждый узел кластера запускает копию определённого пода.
🟠Автоматическое размещение
Когда добавляются новые узлы, на них автоматически размещаются необходимые поды.
🟠Службы уровня узла
Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: fluent/fluentd:v1.0
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
Ставь 👍 и забирай 📚 Базу знанийАренда и размещение серверов в дата-центрах Москвы
ITSOFT оказывает услуги коммерческого дата-центра в Москве.
👌Аренда физических выделенных серверов (Dedicated Servers) в готовых конфигурациях и в рамках индивидуальных сборок.
👌Colocation и аренда серверных стоек.
👌Предоставление инфраструктурных ИТ-решений для физических лиц и корпоративных клиентов.
👌Предоставление высокоскоростных каналов передачи данных.
Узнать цену
#реклама 16+
itsoft.ru
О рекламодателе
🤔 Какие минусы Stateful-приложения?
- Сложность масштабирования (не масштабируются горизонтально так же просто, как Stateless);
- Требуют постоянного хранения состояния (например, базы данных);
- Требуют использования PersistentVolume, что усложняет деплой в Kubernetes;
- Трудности с отказоустойчивостью и миграциями данных.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какая может быть проблема если вы подключаетесь к серверу через ssh а вам приходят тикеты, что другие пользователи не могут подключиться по ssh по одной и той же учётной записи
Если вы можете подключиться к серверу по SSH, но другие пользователи, использующие ту же учетную запись, не могут, возможны следующие причины:
🟠Проблема с ограничением количества подключений
В файле конфигурации SSH (
/etc/ssh/sshd_config) могут быть ограничения на число одновременных подключений.
Открываем конфигурацию SSH
sudo nano /etc/ssh/sshd_config
Проверяем параметры
MaxSessions 1
MaxStartups 10:30:60
Решение
Увеличьте MaxSessions, например:
MaxSessions 10
Перезапустите SSH:
sudo systemctl restart sshd
🟠Файл .ssh/authorized_keys имеет неверные права
Если у вас ключевая авторизация, возможно, права на файлы .ssh/authorized_keys нарушены.
На сервере выполните:
ls -l ~/.ssh/authorized_keys
Если права не 600, исправьте
chmod 600 ~/.ssh/authorized_keys
🟠Ограничение по IP (DenyUsers, AllowUsers, TCP Wrappers)
Конфигурация SSH может блокировать подключения для определенных IP или пользователей.
Откройте /etc/ssh/sshd_config и проверьте параметры
DenyUsers user1
AllowUsers admin
Проверьте /etc/hosts.deny и /etc/hosts.allow
cat /etc/hosts.deny
cat /etc/hosts.allow
🟠Закончились доступные PTY (псевдотерминалы)
Если исчерпан лимит доступных PTY, новые сессии не смогут открываться.
Запустите
ls /dev/pts
Если там слишком много открытых сессий, попробуйте очистить:
pkill -u user
или увеличьте лимит в /etc/security/limits.conf
* hard nproc 1024 * soft nproc 1024Ставь 👍 и забирай 📚 Базу знаний
CENTI CONF: DevOps Day — митап по разработке и инженерным решениям ⚡️
6 ноября Centicore Group собирает инженеров и технических специалистов, чтобы поговорить о том, что реально болит в инфраструктуре: от Kubernetes и AI-инструментов до архитектурного контроля.
🗓 Когда: 6 ноября 2026, начало в 18:00 (мск)
📍 Где: Москва, Хлебозавод, Гостиная №9 + онлайн-формат
Что будет:
🧑💻 Разбор реальных задач
Инженерные кейсы, рабочие подходы и решения для своих проектов.
☸️ Kubernetes
Как организовать тестирование на k8s, где чаще ошибаются и каких антипаттернов избегать.
🤖 AI и LLM
Где coding agents ускоряют разработку, как не утонуть в техдолге и что нужно для локального запуска LLM.
🏗 Архитектура
Как сделать так, чтобы архитектурные правила работали не только в документации, но и проверялись автоматически.
👥 Нетворкинг и доступ к записям выступлений после митапа.
Регистрация на митап тут: https://tglink.io/2f561feb8024ad?erid=2W5zFGFEBZK, увидимся 🤝
Авторизованные курсы по оборудованию Eltex от дилера №1
Проводим учебные курсы, включающие практические занятия и лабораторные работы.
По итогу успешной сдачи экзаменов обучающемуся выдаётся официальный сертификат от завода Eltex.
⚡Обучение в офисе или онлайн
⚡Опытный преподавательский состав
⚡Лабораторные работы - 50% времени
⚡Обучение юридических и физических лиц
Записаться
#реклама 16+
eltexcm.ru
О рекламодателе
🤔 Отличия Deployment и StatefulSet?
Deployment применяется для stateless-приложений, где не важен порядок и стабильность имён подов. StatefulSet нужен для приложений с состоянием — таких как базы данных — где важна стабильность DNS-имени, порядок запуска и постоянные тома для хранения данных. StatefulSet обеспечивает более строгую и предсказуемую организацию.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое брокеры сообщений?
Это программные системы, которые позволяют обмениваться данными между разными компонентами приложения или между различными приложениями. Они действуют как посредники, принимая сообщения от отправителей (producers) и доставляя их получателям (consumers).
🚩Основные функции брокеров сообщений
🟠Прием и маршрутизация сообщений
Сообщения отправляются от одного компонента и доставляются нужному получателю. Брокер определяет, куда отправить сообщение, используя темы (topics), очереди (queues) или маршруты (routing keys).
🟠Асинхронное взаимодействие
Отправитель может передать сообщение, не дожидаясь его обработки, что повышает производительность системы.
🟠Очереди сообщений
Если получатель временно недоступен, сообщение сохраняется в очереди до тех пор, пока оно не будет доставлено.
🟠Гарантированная доставка
Некоторые брокеры предоставляют механизмы подтверждения получения сообщений (acknowledgment), чтобы избежать их потери.
🟠Распределение нагрузки
Сообщения могут быть обработаны несколькими получателями, что позволяет распределить нагрузку между ними.
🟠Фильтрация и маршрутизация
Сообщения доставляются только тем потребителям, которые их ожидают, используя фильтры или ключи маршрутизации.
🚩Примеры использования брокеров сообщений
🟠Микросервисы
Компоненты приложения обмениваются данными через брокер, что позволяет им оставаться изолированными и независимыми.
🟠Логирование и мониторинг
Сбор логов и метрик от множества источников с их дальнейшей обработкой.
🟠Управление задачами
Постановка задач в очередь для выполнения одним или несколькими воркерами.
🟠Интеграция систем
Связывание разнородных систем, которые обмениваются данными.
🚩Примеры брокеров сообщений
🟠RabbitMQ
Протокол: AMQP (Advanced Message Queuing Protocol). Поддерживает очереди, маршрутизацию, подтверждения доставки. Хорошо подходит для сложных сценариев с разными типами маршрутизации.
🟠Apache Kafka
Протокол: Проприетарный. Отличается высокой производительностью и надежностью. Используется для потоковой обработки данных, аналитики в реальном времени.
🟠Redis (Pub/Sub)
Протокол: Redis. Простая и быстрая модель pub/sub. Хорошо подходит для временных сообщений без сохранения состояния.
🟠ActiveMQ
Протокол: AMQP, STOMP, MQTT. Гибкий и совместимый с различными сценариями.
🟠NATS
Легковесный и быстрый брокер для приложений, требующих низкой задержки.
🚩Как работают брокеры сообщений
Producers (отправители) отправляют сообщение в брокер.
Брокер размещает сообщение в соответствующей очереди или теме.
Consumers (получатели) получают сообщение: Либо сразу, если они активны. Либо позже, если оно сохраняется в очереди.
🚩Пример использования RabbitMQ
1⃣Отправитель публикует сообщение в очередь:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
connection.close()
2⃣Получатель забирает сообщение из очереди:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(f"Received {body}")
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
channel.start_consuming()
🚩Плюсы использования
➕Разделение ответственности
Компоненты системы сосредотачиваются на своих задачах, а не на доставке данных.
➕Масштабируемость
Легко добавлять новых потребителей или отправителей.
➕Устойчивость к сбоям
Брокеры обеспечивают сохранность сообщений, даже если один из компонентов временно недоступен.
➕Гибкость
Возможность использовать различные стратегии маршрутизации и обработки данных.
Ставь 👍 и забирай 📚 Базу знанийЧто будет работать в рекламе завтра?
Ответ ищем вместе на REKONFA 2026. 15 октября соберёмся в Москве и онлайн, чтобы обсудить новые технологии Яндекс Рекламы, продуктовые запуски, тренды рынка, исследования и реальные кейсы.
В программе — выступления экспертов и возможность поговорить с продуктовыми командами Яндекс Рекламы о своих задачах. А вне сцены вас ждут коворкинг, фотозоны и форматы для новых знакомств.
Участвовать можно в Москве на ВТБ Арене или онлайн. Регистрация бесплатная.
Зарегистрироваться
🤔 Чем отличается CMD от ENTRYPOINT в DockerFile?
CMD задает команду по умолчанию, которая может быть переопределена при запуске контейнера. ENTRYPOINT определяет неизменяемую команду, которая всегда будет выполняться. CMD обычно используется для указания параметров для ENTRYPOINT.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что сейчас больше используется ингресс класс в ингрессе или указывается ингресс контроллер непосредственно в апликейшене?
Сейчас стандартом является использование
ingressClassName, а аннотации kubernetes.io/ingress.class считаются устаревшими (deprecated).
🚩Что лучше использовать?
🟠`ingressClassName` (новый метод, Kubernetes 1.19+)
Современный, удобный, поддерживается официально
Работает с IngressClass ресурсами
Можно управлять через CRD (IngressClass)
🟠Аннотация `kubernetes.io/ingress.class` (старый метод, deprecated с 1.18)
Все еще работает, но устарела
Нельзя контролировать IngressClass через CRD
🚩Как правильно указывать `ingressClassName`?
1⃣Настраиваем IngressClass (если нужно)
yaml apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: nginx spec: controller: k8s.io/ingress-nginx2⃣Используем
ingressClassName в Ingress
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
ingressClassName: nginx
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
🚩Старый способ (не рекомендуется, но все еще встречается)
Раньше использовали аннотацию kubernetes.io/ingress.class
yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
Ставь 👍 и забирай 📚 Базу знанийИщете облачную платформу? Есть Beget
✅ Аптайм 99,98% в дата-центрах Tier III
✅ Техподдержка 24/7 — живые люди, без ботов
✅ Прозрачная оплата без скрытых платежей
✅ Более 200 000 клиентов доверяют Beget
Узнать больше
🤔 Какое практическое использование DaemonSet?
DaemonSet запускает по одному экземпляру пода на каждой ноде (или выбранных). Используется для:
- мониторинга (Prometheus Node Exporter, Fluentd);
- логгирования;
- установки агентов безопасности;
- настройки хостовых ресурсов на каждой ноде.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какая компонента запускает под на ноде, какая отвечает за сеть?
В Kubernetes разные компоненты отвечают за запуск подов и сетевые настройки.
🚩Какая компонента запускает под на ноде? (`kubelet`)
Получает команды от
kube-scheduler (назначение подов)
Запускает контейнеры через Container Runtime (Docker, containerd, CRI-O)
Следит за состоянием подов и перезапускает их при сбоях
systemctl status kubelet
Посмотреть логи kubelet
journalctl -u kubelet -f
🚩Какая компонента отвечает за сеть? (CNI)
Назначает IP-адреса подам
Организует маршрутизацию трафика между подами и нодами
Настраивает Network Policies (безопасность сети)
Проверить работающие сетевые плагины
kubectl get pods -n kube-system
Вывод (если CNI работает нормально)
NAME READY STATUS RESTARTS AGE calico-node-xyz 1/1 Running 2 3dЕсли CNI не работает, поды могут застрять в
ContainerCreating
kubectl get pods
NAME READY STATUS RESTARTS AGE web-server 0/1 ContainerCreating 0 10mСтавь 👍 и забирай 📚 Базу знаний
Молодые, смелые, амбициозные
❤️ Познакомьтесь с героями новой рекламной кампании Т1.
Для старта карьеры ребята выбрали бигтех для бизнеса и, несмотря на свой юный возраст, уже открывают суперспособности в ИТ и создают решения для миллионов людей.
Под руководством наставников молодые специалисты:
✅ тестируют цифровых двойников;
✅ настраивают инфраструктуру под высокую нагрузку;
✅ разрабатывают продукты для ритейла, общения и обучения.
И делают это в удобном для себя формате: стажировку можно проходить онлайн из любой точки страны, совмещать с учебой, а еще определять свою карьерную траекторию при поддержке команды больших идей.
Уже более 4 000 студентов из 300+ вузов выбрали Т1 для старта карьеры.
⚡ Приходи раскрыть свою суперспособность в ИТ!
Перейти на сайт
#реклама 16+
career.t1.ru
О рекламодателе
🤔 Какие бывают виды дополнительных контейнеров в поде?
Дополнительные контейнеры включают init-контейнеры для подготовки среды и sidecar-контейнеры для дополнительных задач, таких как логирование или прокси.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие есть три вида монтирования в докере?
В Docker есть три типа монтирования данных в контейнеры:
Volumes (Тома) – рекомендуемый способ хранения данных
Bind Mounts (Привязанные тома) – монтирование локальных файлов/папок
Tmpfs (Временное хранилище в RAM) – для быстрого доступа без записи на диск
🚩Volumes (Тома) – лучший вариант хранения данных
Данные хранятся внутри Docker (
/var/lib/docker/volumes)
Можно использовать в нескольких контейнерах
Не зависят от файловой системы хоста
sh
docker volume create mydata
docker run -d -v mydata:/app/data --name mycontainer ubuntu
Удаление тома (только если он не используется)
sh
docker volume rm mydata
🚩Bind Mounts (Привязанные тома) – монтирование папок с хоста
Монтирует директорию с хоста в контейнер
Изменения сразу видны на хосте
Зависит от структуры файлов на хосте
sh
docker run -d -v /home/user/logs:/app/logs --name mycontainer ubuntu
🚩Tmpfs (Временное хранилище в RAM) – быстрый, но не сохраняющийся вариант
Хранит данные в оперативной памяти (RAM)
Очень быстрое чтение/запись
Пропадает при перезапуске контейнера
Пример: создать tmpfs-монтирование для /app/cache
sh
docker run -d --tmpfs /app/cache:size=100m --name mycontainer ubuntu
Ставь 👍 и забирай 📚 Базу знаний