ru
Feedback

Не попадитесь на канал ботавода! Telemetrio находит и помечает такие каналы 👉 Хотите видеть метку — оформите подписку

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

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

Открыть в Telegram
5 572
Подписчики
-224 часа
Нет данных7 дней
+1430 дней
Архив постов
🤔 Чем отличается образ от контейнера? Образ (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 Узнайте про наболевшие проблемы кибербезопасности, техники взлома систем, и метод
Конференция по кибербезопасности 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 оказывает услуги коммерческого дата-центра в Москве. 👌Аренда физич
Аренда и размещение серверов в дата-центрах Москвы 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 собирает инженеров и техническ
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 от дилера №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 октября соберёмся в Москве и онлайн, чтобы обсудит
Что будет работать в рекламе завтра? Ответ ищем вместе на 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-nginx  
2⃣Используем 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 — живые люди, без ботов ✅ Пр
Ищете облачную платформу? Есть 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. Для старта карьеры ребята выбрали бигтех
Молодые, смелые, амбициозные ❤️ Познакомьтесь с героями новой рекламной кампании Т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
Ставь 👍 и забирай 📚 Базу знаний