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

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

Ir al canal en Telegram

Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @easyoffer_adv

Mostrar más
5 543
Suscriptores
+124 horas
+87 días
+3330 días
Archivo de publicaciones
Как повысить эффективность вебинаров? Организация продающего вебинара - не простая задача, ведь необходимо предусмотреть множ
Как повысить эффективность вебинаров? Организация продающего вебинара - не простая задача, ведь необходимо предусмотреть множество деталей: удобную дату, вовлекающий контент, методы продвижения и взаимодействия с участниками. Вебинары от МТС Линк помогают привлекать новых клиентов и увеличивать конверсию из участника в лид. В сервисе доступен анализ поведения пользователей во время вебинара, синхронный перевод, автовебинары и интерактивные инструменты для вовлечения участников. Делимся методичкой с кейсами, чек-листами и инструкциями для маркетологов, PR и event-менеджеров, чтобы сделать вебинары эффективным инструментом для лидогенерации. Получите методичку бесплатно на сайте. Скачать #реклама 16+ mts-link.ru О рекламодателе

🤔 Что возвращает функция в bash? Функция в bash возвращает: - Целое число (exit code) — через return или $?, обычно от 0 до 255. - Если ты хочешь вернуть текст или строку, это делается через echo, и затем значение можно перехватить в переменную. Exit code важен для понимания успеха/ошибки выполнения. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как определить ресурс, который необходим одной node? Чтобы определить нагрузку на Node и правильно выделить ресурсы, нужно: Проверить текущее потребление ресурсов (CPU, RAM, диски)* Оценить нагрузку от подов (requests и limits) Использовать мониторинг (Prometheus, Grafana, kubectl top) 🚩Проверить нагрузку на Node (`kubectl top node`) Команда
sh  
kubectl top nodes  
Вывод
NAME        CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%  
node-1      500m         25%    2Gi             50%  
node-2      1000m        50%    4Gi             80%  
🚩Проверить потребление ресурсов подами (`kubectl top pods`) Команда
sh  
kubectl top pods --all-namespaces  
Вывод
NAMESPACE   POD            CPU(cores)   MEMORY(bytes)  
default     web-app-1      250m         256Mi  
default     web-app-2      300m         512Mi  
monitoring  prometheus-1   600m         1Gi  
🚩Анализ `requests` и `limits` подов Команда
sh  
kubectl describe node node-1  
Вывод (пример секции Allocatable)
Allocatable:  
  cpu:                4  
  memory:             8Gi  
  pods:               110  
Проверить requests и limits у подов
sh  
kubectl describe pod my-pod  
Вывод
Requests:  
  cpu:     500m  
  memory:  1Gi  
Limits:  
  cpu:     1  
  memory:  2Gi  
🚩Использование Prometheus и Grafana для анализа нагрузки Prometheus-запросы для анализа Node Средняя загрузка CPU за 5 минут
promql  
avg(rate(node_cpu_seconds_total[5m])) * 100  
Среднее использование памяти
promql  
avg(node_memory_Active_bytes) / avg(node_memory_MemTotal_bytes) * 100
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что будет происходить при kubectl apply? Команда kubectl apply применяет конфигурации, указанные в YAML или JSON-файлах, к объектам Kubernetes. Если объект уже существует, Kubernetes обновляет его состояние в соответствии с файлом. Если объект отсутствует, он создаётся. Это декларативный подход, позволяющий описывать желаемое состояние системы. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Куда идет деплой из релизных веток? Касается подходов к управлению релизами в системах контроля версий, таких как Git, и их интеграции с процессами CI/CD. Ответ зависит от структуры разработки и процесса релиза в конкретной команде или компании. Однако, в общем, деплой из релизных веток обычно идет на тестовые, стейджинговые или продакшн-окружения. Давайте разберем этот процесс подробнее. 🚩Что такое релизные ветки? Это ветки, которые создаются на этапе, когда функционал и исправления, готовые к выпуску, отделяются от основной ветки разработки (например, main или develop). Они позволяют: Заморозить текущий набор изменений для подготовки к релизу. Отделить доработки и исправления релиза от активной разработки. Упростить процесс тестирования и последующего деплоя. 🚩Куда обычно идет деплой из релизных веток? 🟠Тестовое окружение (QA environment) На тестовое окружение деплой из релизной ветки осуществляется для прохождения проверок качества: Автоматизированное и ручное тестирование. Проверка производительности, безопасности и других аспектов.
stages:
  - test
deploy:
  stage: test
  script:
    - echo "Deploying release branch to QA"
    - ./deploy.sh qa
  only:
    - release/*
🟠Стейджинговое окружение (Staging) После успешного прохождения тестов релизную ветку деплоят в стейджинг. Это окружение максимально похоже на продакшн и используется для финального тестирования: Проверка совместимости с продакшн-системами. Демонстрация функционала заказчикам или заинтересованным сторонам.
stages:
  - staging
deploy:
  stage: staging
  script:
    - echo "Deploying release branch to Staging"
    - ./deploy.sh staging
  only:
    - release/*
🟠Продакшн (Production) После прохождения всех этапов тестирования изменения из релизной ветки деплоятся в продакшн: Обычно это делается автоматически после финального подтверждения. В некоторых командах финальный мерж релизной ветки в main инициирует деплой.
stages:
  - production
deploy:
  stage: production
  script:
    - echo "Deploying release branch to Production"
    - ./deploy.sh production
  only:
    - release/*
🚩Зачем это нужно? 🟠Изоляция релиза Релизные ветки позволяют избежать включения новых, неподготовленных изменений в текущий релиз. 🟠Гибкость Если в процессе тестирования или релиза найдены баги, их можно исправить прямо в релизной ветке без влияния на разработку. 🟠Управление рисками Релизные ветки упрощают управление разными стадиями разработки и релиза. 🚩Пример использования 1⃣Разработчик создает ветку release/1.0.0 от develop. 2⃣Выполняются тесты на QA окружении. 3⃣Исправляются баги в release/1.0.0, и изменения деплоятся на стейджинг. 4⃣После успешного тестирования ветка мержится в main, и начинается деплой в продакшн. Ставь 👍 и забирай 📚 Базу знаний

🤔 Как вывести в VOIP из файла с логами только ошибки? Можно использовать команду, которая фильтрует строки по ключевому слову, например "ERROR", из файла логов. Это позволяет быстро найти только строки с ошибками без просмотра остального. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Где хранить приватный PGP ключ? Приватный PGP-ключ – это чувствительные данные, которые нельзя хранить в незащищенных местах. Потеря или компрометация ключа может привести к утечке зашифрованных данных. 🚩Лучшие способы хранения приватного PGP-ключа 🟠На аппаратном токене (YubiKey, Nitrokey, SmartCard) - Ключ никогда не покидает устройство. - Физическая защита от копирования. - Можно использовать для SSH, GPG, подписи кода. 🟠В защищенном хранилище (Bitwarden, 1Password, KeePassXC) - Хранилище зашифровано и требует пароль или биометрию. - Можно синхронизировать между устройствами без потери безопасности. - Экспортировать ключ в зашифрованный файл:
  gpg --export-secret-keys --armor > private-key.asc
🟠В зашифрованном виде на диске (LUKS, VeraCrypt, EncFS) - Физическая защита – даже если диск украдут, без пароля его не открыть. - Работает на Linux, Windows, MacOS. 1⃣Создать зашифрованный контейнер с LUKS (Linux):
   cryptsetup luksFormat /dev/sdX
   cryptsetup luksOpen /dev/sdX secure_disk
   mkfs.ext4 /dev/mapper/secure_disk
2⃣Хранить ключ внутри /mnt/secure_disk/private-key.asc. 🟠4. В HSM или облачном KMS (AWS KMS, HashiCorp Vault, Azure Key Vault) - Подходит для энтерпрайз-решений. - Аппаратное шифрование (HSM) делает взлом практически невозможным. - AWS KMS или Vault можно использовать для PGP.
vault kv put secret/pgp_key key="$(cat private-key.asc)"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Если у нас несколько контейнеров — размещаем ли мы их на разных воркер-нодах? - Зависит от политики и ресурсов. - Обычно Kubernetes сам решает, как распределить контейнеры (через scheduler), с учётом: - Нагрузки. - Доступных ресурсов (CPU, память). - affinity/anti-affinity правил. Размещение на разных нодах повышает отказоустойчивость. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Где бы хранил tfstate если много разрабов? Файл terraform.tfstate содержит текущее состояние инфраструктуры. Если его неправильно хранить, возможны конфликты и повреждение данных. 🚩Плохие решения Локально (terraform.tfstate в репозитории) Потеря данных, если разработчик сменит машину. Конфликты, если несколько человек применяют terraform apply. Невозможно откатиться к старому состоянию. Не поддерживает блокировки (terraform lock). Возможны проблемы с одновременным доступом. 🚩Лучшие решения для хранения `tfstate` 🟠S3 + DynamoDB (AWS) → Самый популярный способ S3 хранит tfstate, а DynamoDB предотвращает конфликты.
terraform {
  backend "s3" {
    bucket         = "my-terraform-state"
    key            = "prod/terraform.tfstate"
    region         = "us-east-1"
    encrypt        = true
    dynamodb_table = "terraform-lock"
  }
}
🟠Terraform Cloud/Enterprise → Официальное SaaS-решение Terraform Cloud хранит tfstate в облаке HashiCorp.
terraform {
  backend "remote" {
    hostname     = "app.terraform.io"
    organization = "my-org"
    workspaces {
      name = "my-workspace"
    }
  }
}
🟠Google Cloud Storage (GCS) + Firestore (GCP) Для GCP аналог AWS S3 — это Google Cloud Storage (GCS), а DynamoDB заменяется Firestore.
terraform {
  backend "gcs" {
    bucket  = "my-tfstate-bucket"
    prefix  = "terraform/state"
  }
}
🟠Azure Storage + Azure CosmosDB (Azure) Для Azure можно использовать Azure Storage и блокировки через Azure CosmosDB.
terraform {
  backend "azurerm" {
    resource_group_name  = "my-rg"
    storage_account_name = "myterraformstate"
    container_name       = "tfstate"
    key                  = "prod.terraform.tfstate"
  }
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как правильно установить Ansible? Зависит от ОС. Основные способы: - Через pip install ansible (универсальный способ); - Через пакетный менеджер (apt, yum, dnf); - Через docker-контейнер; - В enterprise-решениях — через AWX / Ansible Tower. После установки важно проверить через ansible --version. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое Web Sockets (веб сокет)? WebSockets (веб-сокеты) — это коммуникационный протокол, предоставляющий возможность устанавливать постоянное, двустороннее соединение между клиентом (обычно веб-браузером) и сервером через один TCP-соединение. Это позволяет обмениваться данными в реальном времени с минимальной задержкой и без необходимости повторного открытия соединения для каждого обмена сообщениями, как это происходит в традиционных HTTP-соединениях. 🚩Основные характеристики WebSockets: 🟠Двусторонняя коммуникация: WebSockets поддерживают полноценную двустороннюю (или full-duplex) коммуникацию, что позволяет как клиенту, так и серверу отправлять данные в любое время без необходимости инициирования запроса. 🟠Постоянное соединение: После установления WebSocket-соединение остается открытым, что значительно уменьшает задержки, связанные с установлением новых соединений, характерных для HTTP-запросов. 🟠Меньший накладной расход: WebSockets используют меньше заголовков по сравнению с HTTP-запросами, что делает передачу данных более эффективной и менее затратной по времени и ресурсам. 🟠Протокол: WebSocket протокол стандартизирован в RFC 6455 и поддерживается большинством современных веб-браузеров. Соединение начинается с обычного HTTP-запроса, который затем "обновляется" до WebSocket-соединения через HTTP-заголовок Upgrade. 🚩Как работает WebSocket: 🟠Установление соединения: Клиент отправляет HTTP-запрос с заголовком Upgrade: websocket на сервер, указывая на желание перейти к протоколу WebSocket. Сервер отвечает подтверждением, если поддерживает WebSockets, и соединение устанавливается. 🟠Передача данных: После установления соединения клиент и сервер могут обмениваться данными в обе стороны по мере необходимости. Сообщения передаются как фреймы (frames), которые могут содержать текстовые или бинарные данные. 🟠Закрытие соединения: Соединение может быть закрыто любой стороной в любой момент времени с отправкой соответствующего фрейма закрытия. 🚩Применения WebSocket: 🟠Реальное время: Приложения, требующие обновлений в реальном времени, такие как чаты, системы обмена сообщениями, онлайн-игры, торги на биржах. 🟠Потоковая передача данных: Веб-сокеты идеально подходят для приложений, передающих данные в реальном времени, таких как спортивные трансляции или финансовые данные. 🟠Уведомления и оповещения: Приложения, отправляющие мгновенные уведомления пользователям, например, социальные сети или системы мониторинга. 🟠Коллаборативные инструменты: Инструменты для совместной работы, такие как совместное редактирование документов или доски с заметками. Преимущества WebSocket: 🟠Эффективность: Меньший накладной расход и постоянное соединение делают WebSockets более эффективными для приложений, требующих частого обмена данными. 🟠Скорость: WebSockets обеспечивают более низкую задержку, что делает их идеальными для приложений, работающих в реальном времени. 🟠Простота использования: WebSockets имеют простой API, который легко интегрируется с современными веб-приложениями. Ставь 👍 и забирай 📚 Базу знаний

🤔 Сколько адресов используется с маской /24? Маска /24 означает 256 адресов в подсети (2⁸), из которых: - 1 адрес — сетевой - 1 адрес — широковещательный (broadcast) - 254 — доступны для устройств Итого: 254 доступных IP-адреса. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Может ли быть несколько контейнеров в поде? Да, в 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
Ставь 👍 и забирай 📚 Базу знаний

🤔 За счёт чего происходит распределение по зонам для PersistentVolume? Распределение происходит через: - StorageClass с параметром zone (например, allowedTopologies в GCP). - Использование CSI-драйвера, указывающего, где создаётся том. - Topology-aware provisioning — PVC привязывается к ближайшей доступной зоне. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что такое 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 для управления ресурсами. Ставь 👍 и забирай 📚 Базу знаний

🔔 Прокачайте системный подход + скидка 🎁 10% на курс до 30 июня Системный дизайн — для тех, кто отвечает за стратегическое
🔔 Прокачайте системный подход + скидка 🎁 10% на курс до 30 июня Системный дизайн — для тех, кто отвечает за стратегическое мышление и принятие архитектурных решений Хотите глубже понимать, как проектируются масштабируемые и устойчивые системы? Курс «System Design» от OTUS — это: — Не просто паттерны, а практика проектирования сложных систем, — Подготовка к архитектурным интервью, — Реальные кейсы из крупных компаний, — Финальный проект, который можно показать в портфолио. Курс подойдёт разработчикам, архитекторам, техническим лидам и DevOps-инженерам, которые хотят повысить квалификацию и системно мыслить при проектировании. 🚀Только до 30 июня — скидка 10% при полной оплате курса. Оставьте заявку, чтобы зафиксировать условия: 🔗 Получить скидку и оставить заявку https://otus.pw/r1aV/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Как TCP устанавливает соединение? С помощью трёхстороннего рукопожатия (3-way handshake): 1. Клиент → сервер: SYN. 2. Сервер → клиент: SYN-ACK. 3. Клиент → сервер: ACK. После этого соединение считается установленным. Это обеспечивает надёжный канал связи. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 В docker контейнере локальной учётной записи выполнили команду docker Run Alpine пробел ID: Какой ID будет выведен? Если в контейнере выполнить:
docker run alpine ID:
🚩Как проверить ID контейнера? Если вы хотите получить ID запущенного контейнера, правильная команда:
docker run --rm alpine sh -c 'echo $HOSTNAME'
🚩Как получить ID уже запущенного контейнера? Если контейнер уже работает, его ID можно посмотреть так
docker ps -q
или
docker inspect -f '{{.Id}}' container_name
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие бывают виды дополнительных контейнеров в поде? Дополнительные контейнеры включают init-контейнеры для подготовки среды и sidecar-контейнеры для дополнительных задач, таких как логирование или прокси. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Чем DevOps отличается от Agile? Это два различных подхода в разработке и доставке программного обеспечения, которые имеют разные цели и методы, но могут взаимодополнять друг друга. Давайте рассмотрим основные различия и связи между ними. 🚩Agile Увеличение гибкости и адаптивности разработки программного обеспечения. 🟠Итеративная разработка Разработка проходит в коротких циклах (итерациях), что позволяет регулярно представлять работающее программное обеспечение. 🟠Непрерывная обратная связь Регулярные встречи (например, ежедневные стендапы, спринт-ревью) для получения обратной связи от команды и заинтересованных сторон. 🟠Кросс-функциональные команды Команды, состоящие из разработчиков, тестировщиков, аналитиков и других специалистов, работают вместе над проектом. 🟠Фокус на клиенте Постоянное взаимодействие с клиентами для уточнения требований и проверки соответствия продукта их ожиданиям. Фреймворки: Scrum, Kanban, XP (Extreme Programming). 🚩DevOps Увеличение скорости и качества доставки программного обеспечения через автоматизацию и улучшение сотрудничества между разработчиками и операционными командами. 🟠Непрерывная интеграция и доставка (CI/CD) Автоматизация сборки, тестирования и развертывания кода, чтобы изменения могли быстро и надежно попасть в рабочую среду. 🟠Инфраструктура как код (IaC) Использование кода для управления и автоматизации инфраструктуры, что делает процессы повторяемыми и предсказуемыми. 🟠Мониторинг и логирование Постоянное отслеживание состояния приложений и инфраструктуры для быстрого обнаружения и устранения проблем. 🟠Сотрудничество и обмен знаниями Улучшение взаимодействия между разработчиками и операционными инженерами через общие инструменты и процессы. Инструменты: Jenkins, Docker, Kubernetes, Ansible, Terraform, Prometheus, Grafana. 🚩Сравнение и различия 🟠Фокус Agile: Сфокусирован на процессе разработки и управлении проектами, улучшая гибкость и адаптивность команды разработки. DevOps: Сфокусирован на процессе доставки и эксплуатации, улучшая автоматизацию и сотрудничество между разработчиками и операционными командами. 🟠Команды Agile: Включает кросс-функциональные команды, которые работают вместе над созданием программного обеспечения. DevOps: Включает команды разработчиков и операций, которые совместно работают над автоматизацией и улучшением процессов развертывания и эксплуатации. 🟠Методы и инструменты Agile: Методы Scrum, Kanban и другие Agile-практики, которые улучшают процесс управления проектами. DevOps: Инструменты и практики для автоматизации развертывания, мониторинга и управления инфраструктурой. 🚩Связь между Agile и DevOps 🟠Agile Помогает улучшить процесс разработки, делая его более гибким и отзывчивым к изменениям. 🟠DevOps Дополняет Agile, автоматизируя развертывание и эксплуатацию программного обеспечения, что позволяет быстрее доставлять изменения пользователям. 🟠Agile команда Может использовать Scrum для управления спринтами и задачами. 🟠DevOps практики Могут быть использованы для автоматизации CI/CD пайплайнов, чтобы каждая итерация разработки могла быть быстро и надежно развернута на серверы. Ставь 👍 и забирай 📚 Базу знаний