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

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

Открыть в Telegram
5 543
Подписчики
+224 часа
+97 дней
+4430 день
Архив постов
🤔 Как AWS работает с DevOps? AWS предоставляет облачные сервисы для автоматизации CI/CD, управления инфраструктурой, мониторинга и безопасности. 🚩CI/CD (Непрерывная интеграция и развертывание) AWS предлагает инструменты для автоматической сборки, тестирования и деплоя. AWS CodePipeline – автоматизация CI/CD-процессов AWS CodeBuild – сборка и тестирование кода AWS CodeDeploy – автоматический деплой в EC2, ECS, Lambda AWS CodeCommit – репозиторий Git в AWS Пример CI/CD-пайплайна в AWS CodePipeline 1. CodeCommit получает новый коммит 2. CodeBuild собирает и тестирует код 3. CodeDeploy разворачивает приложение на EC2 🚩Управление инфраструктурой (IaC) В DevOps важно автоматически создавать и управлять ресурсами AWS. Terraform – создает инфраструктуру по коду AWS CloudFormation – аналог Terraform от AWS AWS CDK (Cloud Development Kit) – IaC на Python/TypeScript
hcl  
resource "aws_instance" "web" {  
  ami           = "ami-123456"  
  instance_type = "t2.micro"  
}  
🚩Контейнеризация и оркестрация AWS поддерживает управление контейнерами и Kubernetes. Amazon ECS (Elastic Container Service) – контейнеры без Kubernetes Amazon EKS (Elastic Kubernetes Service) – управляемый Kubernetes AWS Fargate – запуск контейнеров без управления серверами Пример развертывания контейнера в AWS ECS: 1. Собираем Docker-образ 2. Загружаем его в Amazon ECR (Elastic Container Registry) 3. ECS автоматически масштабирует и управляет контейнерами 🚩Мониторинг и логирование Amazon CloudWatch – сбор метрик и логов AWS X-Ray – трассировка запросов в микросервисах AWS CloudTrail – аудит действий в AWS Пример мониторинга EC2 1. CloudWatch собирает метрики CPU, RAM 2. Настраиваем авто-масштабирование на основе этих метрик 3. CloudTrail записывает все изменения инфраструктуры 🚩Безопасность и управление доступом AWS IAM (Identity and Access Management) – контроль прав AWS Secrets Manager – управление паролями и API-ключами AWS KMS (Key Management Service) – шифрование данных
hcl  
resource "aws_iam_role" "s3_read" {  
  name = "s3-read-only"  
  assume_role_policy = jsonencode({  
    Statement = [{  
      Effect = "Allow"  
      Action = "s3:GetObject"  
      Resource = "arn:aws:s3:::my-bucket/*"  
    }]  
  })  
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как ограничить ресурсы приложения в кубах? Ограничения задаются в манифесте контейнера с помощью resources.limits и resources.requests. requests — минимальные ресурсы, которые контейнеру гарантированы. limits — максимум, который контейнер может использовать. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как бы построить выделение ресурсов, балансировку, нагрузку и всю масштабированность? Чтобы система работала стабильно и эффективно, нужно правильно распределять ресурсы, балансировать нагрузку и масштабировать сервисы. 🚩Основные компоненты Выделение ресурсов - CPU, RAM, диски, сеть Балансировка нагрузки равномерное распределение трафика Горизонтальное и вертикальное масштабирование Авто-масштабировани – динамическое добавление/удаление мощностей 🟠Выделение ресурсов (CPU, RAM, Диск, Сеть) В виртуализированных средах (Kubernetes, Docker, AWS, KVM, ESXi) выделение ресурсов настраивается через лимиты и квоты.
yaml  
apiVersion: v1  
kind: Pod  
metadata:  
  name: my-app  
spec:  
  containers:  
  - name: app  
    image: my-app:latest  
    resources:  
      requests:  
        cpu: "500m"   # Минимально 0.5 CPU  
        memory: "256Mi" # Минимально 256MB RAM  
      limits:  
        cpu: "1000m"  # Максимально 1 CPU  
        memory: "512Mi" # Максимально 512MB RAM  
🟠Балансировка нагрузки Балансировка уменьшает нагрузку на один сервер и равномерно распределяет запросы.
nginx  
upstream backend {  
  server app1:5000;  
  server app2:5000;  
}  
server {  
  listen 80;  
  location / {  
    proxy_pass http://backend;  
  }  
}  
Пример терраформа для AWS ALB
hcl  
resource "aws_lb" "example" {  
  name               = "my-load-balancer"  
  internal           = false  
  load_balancer_type = "application"  
  security_groups    = [aws_security_group.lb_sg.id]  
}  
🟠Масштабирование (Горизонтальное и Вертикальное) Горизонтальное масштабирование (добавление новых инстансов) Kubernetes Horizontal Pod Autoscaler (HPA)
yaml  
apiVersion: autoscaling/v2beta2  
kind: HorizontalPodAutoscaler  
metadata:  
  name: my-app-hpa  
spec:  
  scaleTargetRef:  
    apiVersion: apps/v1  
    kind: Deployment  
    name: my-app  
  minReplicas: 2  
  maxReplicas: 10  
  metrics:  
  - type: Resource  
    resource:  
      name: cpu  
      target:  
        type: Utilization  
        averageUtilization: 70  
🟠Авто-масштабирование (AWS/GCP/Kubernetes) AWS Auto Scaling Group
hcl  
resource "aws_autoscaling_group" "example" {  
  min_size             = 2  
  max_size             = 10  
  desired_capacity     = 2  
  launch_configuration = aws_launch_configuration.example.name  
}
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое pod? Pod — это основная единица развертывания в Kubernetes, которая представляет собой один или несколько контейнеров, работающих вместе и разделяющих общие ресурсы, такие как сеть и хранилище. Каждый pod получает уникальный IP-адрес в кластере и может включать контейнеры, которые взаимодействуют друг с другом. Pod является недолговечным и может быть перезапущен или пересоздан при сбое, поэтому Kubernetes автоматически управляет их состоянием. Pod помогает упрощать управление контейнерами в кластере. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как можно визуализировать логи? Визуализация логов — это процесс представления лог-файлов в удобном графическом виде для более легкого анализа, поиска аномалий и устранения проблем. Для этого используются различные инструменты, которые собирают, агрегируют и отображают логи в виде графиков, дашбордов и диаграмм. 🚩Почему нужна визуализация логов? 🟠Упрощает анализ вместо просмотра тысяч строк логов можно быстро увидеть тенденции и аномалии. 🟠Помогает в мониторинге можно отслеживать изменения в режиме реального времени. 🟠Ускоряет диагностику проблем легче выявить причину ошибки, если видеть всплески или изменения в логах. 🟠Облегчает работу с большими объемами данных миллионы строк логов можно представить в виде сводных диаграмм. 🚩Какие инструменты используются? 🟠ELK Stack (Elasticsearch + Logstash + Kibana) Logstash – собирает и обрабатывает логи. Elasticsearch – хранит и индексирует логи для быстрого поиска. Kibana – визуализирует данные, строит графики и дашборды. Пример: Можно создать график с количеством ошибок 500 за последние 24 часа. 🟠Grafana + Loki (альтернатива ELK) Loki – хранит и обрабатывает логи. Grafana – строит красивые дашборды с логами и метриками. Пример: Можно создать панель с последними логами приложений, используя tail-подобное обновление. 🟠Graylog Обрабатывает логи, хранит их в Elasticsearch, строит графики и отправляет алерты. Пример: Можно отфильтровать логи по уровню ERROR и вывести их в виде диаграммы. 🟠Datadog, Splunk, New Relic Коммерческие решения с мощными инструментами аналитики логов. Пример: Автоматическая корреляция логов с метриками системы. 🚩Простой пример работы с ELK Logstash конфиг (сбор логов из файла)
   input {
     file {
       path => "/var/log/app.log"
       start_position => "beginning"
     }
   }
   output {
     elasticsearch {
       hosts => ["http://localhost:9200"]
     }
   }
Ставь 👍 и забирай 📚 Базу знаний

Сбой DHCP или перегрузка канала — и сеть перестаёт дышать. Один некорректный пакет, десяток повторов — и критическая инфрастр
Сбой DHCP или перегрузка канала — и сеть перестаёт дышать. Один некорректный пакет, десяток повторов — и критическая инфраструктура уходит в оффлайн. На открытом уроке разберём самые практические атаки на доступность: DHCP starvation через DHCPig/Yersinia и перегрузку канала с помощью hping3. Покажем на живой демонстрации, какие последствия вызывают истощение пула адресов и агрессивная утилизация трафика. Если вы работаете с сетями, безопасностью или инфраструктурой — понимание этих атак критично. Это те кейсы, которые происходят в реальных компаниях, и именно их должен уметь распознавать и предотвращать каждый специалист. Встречаемся 10 декабря в 20:00 МСК в преддверие старта курса «Пентест. Инструменты и методы проникновения в действии». Регистрируйтесь — и разберите атаки до уровня пакетов: https://otus.pw/QUxIu/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Как по access-логам Nginx понять, из какого location отдан контент? По умолчанию в access.log не указывается location напрямую, но: - Обычно можно различить по пути URL — если location /static/, location /cache/, location /backend/ — это отражается в строке запроса. - Чтобы точно видеть, откуда был ответ, можно: - Добавить пользовательский формат логов, где записывать $uri или специальные переменные ($request_uri, $upstream_addr и пр.). - Логировать переменные, которые задаются внутри каждого location (например, set $source static → логируешь $source). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Что слышали про rancher kubernetes? Это платформа для управления Kubernetes-кластерами. Она позволяет развертывать, настраивать, мониторить и управлять несколькими кластерами Kubernetes из единой панели управления. Rancher упрощает работу с Kubernetes, предоставляя удобный UI, API и инструменты автоматизации. 🚩Зачем нужен Rancher? 🟠Управление несколькими кластерами Rancher позволяет управлять кластерами Kubernetes, развернутыми в различных облаках (AWS, GCP, Azure) и на локальной инфраструктуре. 🟠Упрощенная установка и настройка С помощью Rancher можно быстро развернуть Kubernetes-кластеры с минимальными усилиями. 🟠Безопасность и контроль доступа Поддерживает аутентификацию через LDAP, Active Directory, GitHub и другие методы. 🟠Мониторинг и логирование Встроенная поддержка Prometheus, Grafana и Fluentd для мониторинга и логов. 🟠Развертывание приложений Поддерживает Helm-чарты и стандартные манифесты Kubernetes. 🚩Как работает Rancher? 🟠Rancher Server центральный компонент, управляющий кластерами и предоставляющий UI/API. 🟠Kubernetes-кластеры могут быть развернуты с помощью Rancher (RKE, RKE2) или добавлены вручную (например, EKS, AKS, GKE). 🟠Rancher Agents агенты, установленные в кластерах для обеспечения связи с сервером Rancher. 🚩Пример развертывания Rancher Для развертывания Rancher можно использовать Docker
docker run -d --name=rancher --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  rancher/rancher:latest
Ставь 👍 и забирай 📚 Базу знаний

Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля Дизайнер карточек для маркетплейсов — востребованная и доходная проф
Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля Дизайнер карточек для маркетплейсов — востребованная и доходная профессия 💰 Научись ей бесплатно! - Бесплатный доступ - Разбор ДЗ от наставника - Мощные кейсы в портфолио Узнать больше #реклама 16+ yudaevschool24.online О рекламодателе

🤔 Как автоматически деплоить Helm Chart? Для автоматического деплоя Helm-чартов можно использовать: - CI/CD инструменты (GitLab CI, GitHub Actions, Jenkins) с шагами helm install или helm upgrade; - GitOps-подход через ArgoCD или Flux, где Helm-чарты подтягиваются и применяются при изменении Git-репозитория; - Использование Helm-плагинов для управления релизами и версионированием. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какая разница между deployment и stateful set? Это контроллеры, используемые для управления подами, но они предназначены для различных типов приложений и имеют разные функции. Разница между ними связана с тем, как они управляют жизненным циклом подов, сетевой идентичностью, постоянством данных и порядком развертывания. 🚩Что такое Deployment? Используется для управления статическими или бесстаточными приложениями, где порядок запуска подов, их идентичность и состояние не имеют значения. 🟠Бесстаточные приложения Примеры: веб-серверы, микросервисы, обработка очередей. Каждый под одинаков, и потеря одного из них не нарушает работу приложения. 🟠Порядок развертывания Поды запускаются и удаляются в любом порядке. Если под удаляется, создается новый с другой идентичностью. 🟠Сетевой доступ Поды доступны через Service, но они не сохраняют фиксированные сетевые имена. 🟠Обновления Поддерживает обновления без простоя (rolling updates). Умеет откатываться на предыдущую версию.
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.21.6
🚩Что такое StatefulSet? Используется для управления состоянием и обеспечивает упорядоченность и идентичность подов. Это важно для приложений, где требуется сохранение данных, стабильные идентификаторы или порядок операций. 🟠Состояние приложения Примеры: базы данных (MySQL, PostgreSQL), системы очередей (Kafka), распределенные системы (Cassandra, Elasticsearch). Каждый под имеет уникальный идентификатор и связан с определенным хранилищем данных. 🟠Порядок развертывания Поды запускаются, обновляются и удаляются строго в определенном порядке (0, 1, 2...). Это важно для приложений, где один узел должен быть доступен перед запуском другого. 🟠Сетевой доступ Каждый под имеет фиксированное имя (например, pod-0, pod-1), что упрощает взаимодействие между подами. 🟠Обновления Выполняются поэтапно, с учетом порядка. 🟠Постоянство данных Поды используют PersistentVolumeClaim (PVC) для сохранения данных. Даже если под удален, данные остаются на диске и доступны после повторного запуска.
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: "mysql-service"
  replicas: 3
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
  volumeClaimTemplates:
  - metadata:
      name: mysql-data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 10Gi
🚩Когда использовать что? 🟠Используйте `Deployment` Бесстаточное. Требует быстрой масштабируемости. Не зависит от порядка запуска подов. 🟠Используйте `StatefulSet` Требует сохранения данных между перезапусками. Зависит от фиксированной идентичности подов. Требует упорядоченного запуска или удаления. Ставь 👍 и забирай 📚 Базу знаний

🤔 Сколько дефолтно историй есть? По умолчанию Kubernetes хранит 10 ревизий (revisionHistoryLimit = 10) для ресурсов типа Deployment. Это значит, ты можешь откатиться на одну из 10 предыдущих версий. Это значение можно изменить в манифесте деплоймента. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие есть метрики для измерения качества системы? Для измерения качества системы (особенно в DevOps, SRE и разработке) используют различные метрики производительности, надежности и доступности. 🚩Основные метрики качества системы 🟠Метрики "Четырёх ключевых показателей" (DORA) Эти метрики помогают оценить эффективность процессов DevOps: Lead Time for Changes (Время доставки изменений) — время от написания кода до его выхода в прод. Deployment Frequency (Частота развертываний) — как часто изменения попадают в прод. Mean Time to Restore (MTTR) (Среднее время восстановления) — как быстро исправляются инциденты. Change Failure Rate (Процент неудачных изменений) — доля развертываний, вызывающих сбои. 🟠Метрики надежности и доступности (SRE) Эти метрики помогают измерять надежность системы: SLA (Service Level Agreement) — договорное время доступности (например, 99.9%). SLO (Service Level Objective) — целевое значение доступности (например, 99.95%). SLI (Service Level Indicator) — фактические измеренные показатели (например, 99.93%). Error Rate — процент ошибок в системе (HTTP 500, таймауты и т. д.). Latency (Задержка) — время ответа системы на запросы. 🟠Метрики производительности Они показывают, насколько быстро работает система: CPU Utilization — загрузка процессора. Memory Usage — использование оперативной памяти. Disk I/O — скорость чтения/записи на диск. Network Throughput — пропускная способность сети. Response Time — время отклика системы. 🟠Метрики пользовательского опыта Оценивают удобство работы пользователей с системой: Apdex (Application Performance Index) — индекс удовлетворенности пользователей (0–1). TTFB (Time to First Byte) — время до получения первого байта ответа от сервера. Page Load Time — время полной загрузки страницы. Bounce Rate — процент пользователей, покинувших сайт без взаимодействия. Ставь 👍 и забирай 📚 Базу знаний

🤔 В чём разница synchronized и Lock? - synchronized — встроенный механизм блокировки: - Прост в использовании. - Автоматически освобождает монитор. - Lock (ReentrantLock): - Предоставляет гибкость: можно попытаться захватить (tryLock), установить таймаут, прерывание. - Требует явного освобождения — unlock(). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Из чего состоит ELK стек? ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, обработки, хранения и визуализации логов. Он помогает DevOps-инженерам анализировать логи в реальном времени и выявлять проблемы в системе. 🚩Elasticsearch – хранилище и поиск логов - Хранит структурированные и неструктурированные данные (логи, метрики) - Поддерживает быстрый полнотекстовый поиск - Использует кластеризацию для высокой доступности
json  
GET /logs/_search  
{  
  "query": {  
    "match": { "message": "error" }  
  }  
}  
🚩Logstash – обработка и отправка логов - Собирает логи из файлов, TCP, Kafka, Beats - Фильтрует и преобразует данные перед отправкой в Elasticsearch - Поддерживает шифрование и маршрутизацию
yaml  
input {  
  file {  
    path => "/var/log/nginx/access.log"  
    start_position => "beginning"  
  }  
}  
filter {  
  grok { match => { "message" => "%{COMBINEDAPACHELOG}" } }  
}  
output {  
  elasticsearch {  
    hosts => ["http://elasticsearch:9200"]  
  }  
}  
🚩Kibana – визуализация и анализ - Позволяет строить дашборды и графики - Делает поиск по логам и метрикам - Визуализирует реальное время работы системы
  
message: "error" AND @timestamp:[now-24h TO now]  
🚩Как ELK-стек работает вместе? Logstash собирает и обрабатывает логи Отправляет их в Elasticsearch Kibana визуализирует данные
yaml  
version: "3"  
services:  
  elasticsearch:  
    image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0  
    environment:  
      - discovery.type=single-node  
    ports:  
      - "9200:9200"  

  logstash:  
    image: docker.elastic.co/logstash/logstash:8.5.0  
    depends_on:  
      - elasticsearch  
    volumes:  
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf  
    ports:  
      - "5044:5044"  

  kibana:  
    image: docker.elastic.co/kibana/kibana:8.5.0  
    depends_on:  
      - elasticsearch  
    ports:  
      - "5601:5601"
Ставь 👍 и забирай 📚 Базу знаний

🤔 Почему при проверке командой, ранее заполненный, но после очищенный раздел, все равно выглядит, как заполненный? Операционные системы не всегда сразу удаляют данные с диска, а только помечают их как доступные для перезаписи. Причины: - Журналирование (EXT4, XFS) – данные могут оставаться в журнале. - TRIM для SSD не выполнен – стирание на SSD происходит не сразу. - Блоки файловой системы не очищены – команда rm удаляет ссылки, но не сами данные. - Кеширование и lazy-write – система может отложить освобождение пространства. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Где хранятся данные о группах которые существуют в системе? В Linux информация о группах пользователей хранится в файле: /etc/group — основной файл, содержащий список всех групп системы. 🚩Как посмотреть список групп? Вывести содержимое файла /etc/group
cat /etc/group
Формат строк в файле
имя_группы:x:GID:пользователи
Пример
root:x:0:
sudo:x:27:alice,bob
developers:x:1001:john,mary
Найти группу по имени
grep '^sudo:' /etc/group
Выведет
sudo:x:27:alice,bob
Узнать, в каких группах состоит пользователь
groups alice
или
id -Gn alice
Выведет
alice sudo developers
🚩Где ещё хранятся группы? 🟠Файл `/etc/gshadow` хранит пароли групп Если у группы есть пароль (редкость), он хранится здесь. Формат:
  имя_группы:пароль:GID:админы_группы
Пример:
sudo:!:27:
developers:!:1001:john
Посмотреть содержимое
sudo cat /etc/gshadow
🟠LDAP или Active Directory (если система подключена к домену) Если используется корпоративный домен, данные о группах могут храниться в LDAP или Active Directory.
getent group
Ставь 👍 и забирай 📚 Базу знаний

🤔 Как первоначально оценить размер ноды, не зная как работает приложение? 1. Стартовая гипотеза: - CPU: 0.5–1 core - RAM: 512Mi–1Gi - Подняться с requests по минимуму и оставить limits пустыми. 2. Понаблюдать: - Метрики пода (kubectl top pod, Grafana). - Поведение при запуске, пике и в простое. 3. Использовать Goldilocks или VPA: - Эти инструменты подскажут оптимальные requests/limits на основе истории. 4. Снять perf-профиль: - Если есть возможность — замерить поведение через нагрузочное тестирование. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Repost from easyoffer
База 1000+ реальных собеседований теперь встроена в easyoffer Смотрите, как другие кандидаты отвечают на вопросы, решают зада
База 1000+ реальных собеседований теперь встроена в easyoffer Смотрите, как другие кандидаты отвечают на вопросы, решают задачи и проходят этапы на реальных собеседованиях от топовых компаний. Подготовьтесь к своему собеседованию с двойной уверенностью. Напоминаем, что сегодня последний день Чёрной Пятницы 👉 Забрать PRO со скидкой 70%: https://easyoffer.ru/