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

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

前往频道在 Telegram
5 510
订阅者
-224 小时
-47
-330
帖子存档
🤔 Какая разница между 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/

🤔 Как сделать rebase на main branch? Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (main). 🟠Переключаемся на вашу текущую ветку Допустим, вы работаете в ветке feature-branch:
git checkout feature-branch
🟠Выполняем rebase на `main` Сначала убедимся, что main обновлена:
git checkout main
git pull origin main
Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main
🟠Разрешение конфликтов (если есть) Если у вас есть конфликты, Git остановит процесс и попросит их решить. Откройте файлы с конфликтами, исправьте их. Добавьте исправленные файлы:
   git add <файл>
   
Продолжите rebase:
   git rebase --continue
   
🟠Обновление удалённого репозитория Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force
Ставь 👍 и забирай 📚 Базу знаний

Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 На
Реклама для бизнеса любого уровня в Яндекс Директе Создайте эффективную рекламную кампанию с алгоритмами Яндекс Директа 👌 Начните прямо сейчас ⚡ Зарегистрироваться #реклама direct.yandex.ru О рекламодателе

🤔 Как посмотреть историю изменения деплоймента? Для этого используют: - kubectl rollout history deployment <имя> — показывает историю версий (ревизий). - Можно увидеть, какие изменения конфигурации были внесены и когда. Это полезно для отслеживания конфигурационных изменений и откатов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

DLL hijacking остаётся одной из самых недооценённых техник атаки в Windows. Для злоумышленника это возможность исполнить свой
DLL hijacking остаётся одной из самых недооценённых техник атаки в Windows. Для злоумышленника это возможность исполнить свой код под видом легитимного приложения, получить доступ к данным и эскалировать привилегии. Для специалистов по ИБ это риск, который многие замечают слишком поздно. Именно поэтому мы проводим открытый урок в преддверие старта курса «Пентест. Инструменты и методы проникновения в действии». 3 декабря в 20:00 МСК мы разберём, как Windows ищет DLL, почему этот механизм становится вектором атаки и какие ошибки разработчиков и администраторов открывают путь для подмены библиотек. Покажем реальные кейсы, работу техники вживую и способы защиты: от явных путей загрузки до цифровых подписей и Safe DLL Search Mode. После урока вы сможете оценивать собственные системы и приложения на уязвимость к DLL hijacking и понимать, где именно возникают риски. Формат подойдёт специалистам по ИБ, SOC-аналитикам и администраторам, которым важно укрепить контроль над средой Windows. Зарегистрируйтесь и получите чёткую, практическую инструкцию по защите: https://otus.pw/niJA/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

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

🤔 Как подключить, отформатировать жёсткий диск? 1. Подключение: - Устройство появляется как /dev/sdX - Проверить с помощью lsblk или fdisk -l 2. Форматирование: - Создание раздела: fdisk /dev/sdX - Форматирование: mkfs.ext4 /dev/sdX1 - Монтирование: mount /dev/sdX1 /mnt/mydisk - Добавление в /etc/fstab для автоподключения Обязательно убедиться, что нужный диск выбран, чтобы избежать потери данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Repost from easyoffer
Черная пятница на easyoffer Скидка 70% на PRO до 29 ноября. 👉 https://easyoffer.ru/
Черная пятница на easyoffer Скидка 70% на PRO до 29 ноября. 👉 https://easyoffer.ru/

🤔 Что такое basic auth? Basic Auth (Basic Authentication) – это простой метод аутентификации HTTP-запросов. Он используется для ограничения доступа к ресурсам, отправляя логин и пароль в заголовке запроса. 🟠Как работает Basic Auth? Клиент делает запрос к серверу. Сервер отвечает 401 Unauthorized и требует аутентификацию:
   HTTP/1.1 401 Unauthorized  
   WWW-Authenticate: Basic realm="Restricted Area"
   
Клиент кодирует логин и пароль в Base64 и отправляет их в заголовке:
   Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
   
🟠Пример запроса с Basic Auth В curl
curl -u username:password http://example.com/protected
В Python (requests):
import requests
from requests.auth import HTTPBasicAuth

response = requests.get("http://example.com/protected", auth=HTTPBasicAuth("username", "password"))
print(response.text)
В JavaScript (fetch):
fetch("http://example.com/protected", {
  headers: {
    "Authorization": "Basic " + btoa("username:password")
  }
})
.then(response => response.text())
.then(data => console.log(data));
🚩МинусыНе безопасен без HTTPS данные передаются в открытом виде (Base64 — это не шифрование!). ➖Логин и пароль передаются в каждом запросе что делает систему уязвимой. ➖Нет механизма разлогинивания браузеры кэшируют креды, и их сложно сбросить. Ставь 👍 и забирай 📚 Базу знаний

🤔 Отличия IPv4 и IPv6? - Длина адреса: IPv4 — 32 бита (например, 192.168.1.1), IPv6 — 128 бит (например, 2001:0db8::1). - Количество адресов: IPv6 предоставляет намного больше адресов (2¹²⁸ против 2³²). - Формат: IPv4 использует десятичную точечную нотацию, IPv6 — шестнадцатеричную с двоеточиями. - NAT: В IPv6 NAT не обязателен, в IPv4 он широко используется. - Упрощённые заголовки: В IPv6 заголовок легче обрабатывается маршрутизаторами. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний