DevOps | Вопросы собесов
5.37K subscribers
30 photos
1.05K links
Download Telegram
Что показывает load average ?
Спросят с вероятностью 33%

Load average (средняя нагрузка) — это показатель, который используется для оценки загруженности системы за определённые промежутки времени. Этот показатель обычно отображается с помощью команды uptime или top и представлен тремя числами, которые отражают среднюю нагрузку системы за последние 1, 5 и 15 минут.

Что означают эти значения?

Каждое из трёх чисел показывает среднее количество процессов, находящихся в состоянии ожидания выполнения или активно выполняющихся за последнюю минуту, последние 5 минут и последние 15 минут соответственно. Эти значения позволяют оценить текущую и историческую загруженность системы.

Как интерпретировать эти значения?

Значение равное количеству ядер CPU: Если значение load average равно количеству логических ядер CPU, это означает, что система загружена на 100%. Например, для системы с четырьмя ядрами значение 4.00 означает полную загрузку.
Значение меньше количества ядер CPU: Значения ниже количества ядер указывают на то, что у системы есть свободные ресурсы, и она не перегружена.
Значение выше количества ядер CPU: Если значение превышает количество логических ядер CPU, это означает, что процессы конкурируют за ресурсы CPU, что может приводить к задержкам в выполнении. Например, значение 6.00 на системе с 4 ядрами означает, что некоторые процессы ждут доступа к процессору.

Как используются эти данные?

Данные о средней нагрузке используются системными администраторами для мониторинга производительности серверов и компьютеров. Это помогает определить, требуется ли увеличение ресурсов, оптимизация нагрузки или же система справляется со своими задачами. Понимание изменений в значениях load average со временем также может помочь выявить потенциальные проблемы с производительностью до того, как они станут критическими.

Load average — это важный показатель, который отражает не только количество активных процессов, ожидающих выполнения в очереди процессора, но и те, что уже выполняются. Он предоставляет быстрый обзор текущего состояния системы и её способности справляться с задачами. Понимание и правильная интерпретация значений load average помогают управлять ресурсами системы более эффективно.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍29🔥32😁2
Что будет происходить при kubectl apply ?
Спросят с вероятностью 13%

Команда kubectl apply — это инструмент для управления приложениями через командную строку для Kubernetes, который позволяет создавать и обновлять ресурсы в кластере на основе определений в YAML или JSON файлах. Это одна из наиболее часто используемых команд для работы, так как она поддерживает идемпотентность, что означает, что один и тот же файл конфигурации может быть применен несколько раз без изменения результата за пределами ожидаемого.

Как он работает:

1️⃣Чтение конфигурационного файла: Читает конфигурационный файл в форматах YAML или JSON, который описывает желаемое состояние ресурса или ресурсов, которые должны быть развернуты или обновлены в кластере.

2️⃣Сравнение с текущим состоянием: Сравнивает желаемое состояние, определенное в конфигурационном файле, с текущим состоянием ресурса в кластере. Это сравнение включает проверку всех атрибутов ресурса, чтобы определить, требуется ли создание нового ресурса, обновление существующего или не требуется никаких изменений.

3️⃣Обновление ресурса: Если конфигурация ресурса в файле отличается от того, что уже присутствует в кластере, kubectl apply обновляет ресурс в соответствии с этой конфигурацией. Это может включать изменение свойств, добавление или удаление компонентов и так далее.

4️⃣Аннотации и управление изменениями: Когда вы используете kubectl apply, Kubernetes автоматически добавляет специальные аннотации к ресурсу. Эти аннотации содержат предыдущую конфигурацию ресурса в сериализованном виде, что позволяет Kubernetes определять изменения между запусками команды.

5️⃣Отслеживание изменений: Если ресурс был изменен другими способами (не через kubectl apply), Kubernetes сможет определить эти изменения и интегрировать их, если они не конфликтуют с конфигурацией, применяемой через kubectl apply.
kubectl apply -f deployment.yaml


Это приведет к созданию или обновлению Deployment в соответствии с определениями в файле deployment.yaml.

kubectl apply является мощным инструментом для управления жизненным циклом Kubernetes ресурсов. Он обеспечивает гибкость, позволяя разработчикам и администраторам контролировать и управлять инфраструктурой через код, что способствует более эффективному, предсказуемому и безопасному управлению приложениями.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍17👀21
Что такое kafka ?
Спросят с вероятностью 33%

Apache Kafka — это распределённая платформа для потоковой обработки данных, ориентированная на высокую пропускную способность и надёжное хранение событий. Kafka разработана LinkedIn и впоследствии передана в Apache Software Foundation, где она стала одним из самых популярных проектов для обработки больших объёмов данных в реальном времени.

Основные компоненты:

1️⃣Продюсеры (Producers): Отправляют данные в Kafka. Продюсеры публикуют данные в топики (topics), которые можно сравнить с папками или категориями, где данные упорядочены и хранятся.

2️⃣Топики (Topics): Категории или каналы, в которые продюсеры публикуют свои данные. Топики в Kafka могут быть разделены на несколько сегментов, называемых партициями, что позволяет распределить данные между несколькими узлами для повышения производительности и надёжности.

3️⃣Партиции (Partitions): Сегменты внутри топика, которые позволяют данные топика быть распределёнными и параллельно обработанными. Каждая партиция может иметь одну или несколько реплик, что повышает доступность и устойчивость данных.

4️⃣Консьюмеры (Consumers): Подписываются на топики и читают данные, публикуемые продюсерами. Консьюмеры могут работать в группах для распределённой и параллельной обработки данных.

5️⃣Брокеры (Brokers): Серверы, которые хранят данные и обрабатывают запросы от продюсеров и консьюмеров. В распределённой среде Kafka может состоять из множества брокеров, управление которыми осуществляется через узел управления, называемый контроллером.

Особенности и преимущества:

Производительность: Способна обрабатывать сотни тысяч сообщений в секунду.
Масштабируемость: Систему можно масштабировать горизонтально, добавляя брокеров в кластер, что позволяет обрабатывать больше сообщений без простоя.
Надёжность: Данные автоматически реплицируются между брокерами, что обеспечивает высокий уровень доступности и устойчивость к сбоям.
Устойчивость к сбоям: Спроектирована так, чтобы выдерживать сбои отдельных компонентов без потери данных.
Временное хранение: Может хранить большие объёмы данных на определённый период времени, позволяя консьюмерам читать и перечитывать информацию по мере необходимости.

Использование

Применяется во многих областях, включая реальное логирование данных, мониторинг операций, потоковую обработку событий, интеграцию данных и создание распределённых систем реального времени. Она стала стандартом де-факто для организаций, стремящихся к эффективному сбору, хранению и обработке больших потоков данных.

Apache Kafka — это мощная и гибкая система для работы с потоками данных в реальном времени, которая поддерживает высокие нагрузки, обеспечивает надёжность и позволяет масштабировать обработку данных на уровне крупных предприятий. Она обеспечивает комплексное решение для сбора и передачи больших объёмов данных с минимальной задержкой.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍323🔥1
Чем отличаются deployment, replicaset ?
Спросят с вероятностью 13%

Deployment и ReplicaSet являются ключевыми компонентами, используемыми для управления развертыванием и масштабированием контейнеризированных приложений. Хотя оба они связаны с управлением подами, между ними есть существенные различия в функциональности и предназначении.

ReplicaSet

Это контроллер, который обеспечивает поддержание заданного количества копий подов в любой момент времени. Основная цель ReplicaSet — гарантировать, что указанное количество экземпляров пода всегда запущено и работает. Если поды перестают работать или удаляются, ReplicaSet автоматически заменяет их, чтобы поддерживать нужное количество экземпляров.

Основные особенности:
Поддерживает стабильное количество подов, основываясь на шаблонах, определенных в спецификации.
Автоматически заменяет поды, которые были повреждены или удалены.
Не управляет обновлениями приложений в подах; требуется внешнее управление для обновления или изменения версий приложений.

Deployment

Это более высокоуровневый контроллер, который управляет развертываниями приложений в Kubernetes, включая их обновления и откаты. Deployment использует ReplicaSet для поддержания экземпляров, но добавляет множество дополнительных возможностей.

Основные особенности:
Управляет жизненным циклом приложений, включая развертывание, обновление, масштабирование и откаты.
Позволяет объявлять желаемое состояние приложения, и Kubernetes стремится поддерживать это состояние.
Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), что позволяет обновлять приложение с минимальными прерываниями.
Автоматически управляет ReplicaSets, создавая новые и удаляя старые при обновлении версии приложения.

Основные различия:

Уровень абстракции: Это более низкоуровневый компонент, фокусирующийся на поддержании количества подов. Deployment работает на более высоком уровне, управляя не только подами, но и их жизненным циклом, включая стратегии обновления и отката.
Обновление приложений: Не умеет управлять процессом обновления приложений; его задача — только поддержание числа работающих подов. Deployment предоставляет механизмы для безопасного обновления приложений, с минимальными прерываниями доступности сервиса.
Использование: В обычных операциях администрирования и управления приложениями в Kubernetes предпочтительнее использовать Deployment, так как он автоматически создает нужные ReplicaSets и обеспечивает больше возможностей для управления состоянием приложений.

Deployment предлагает более богатый и удобный способ управления приложениями, делая его предпочтительным выбором для большинства сценариев развертывания и масштабирования приложений.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍193🔥1
Что такое kubernetes ?
Спросят с вероятностью 33%

Kubernetes (часто сокращенно K8s) — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Разработанная изначально в Google на основе их опыта работы с контейнерами в продакшене, он стал стандартом для оркестрации контейнеров в индустрии.

Основные концепции

1️⃣Поды (Pods): Базовая единица, которую создает и управляет Kubernetes. Под может содержать один или несколько контейнеров, которые разделяют сетевые настройки и хранилище.

2️⃣Узлы (Nodes): Физические или виртуальные машины, на которых запускаются поды. Каждый узел управляется мастер-узлом и содержит необходимые службы для запуска подов.

3️⃣Контроллеры (Controllers): Элементы для управления состоянием кластера. Они следят за тем, чтобы фактическое состояние кластера соответствовало желаемому. Примеры: ReplicaSet, Deployment, StatefulSet.

4️⃣Сервисы (Services): Абстракция, которая определяет логический набор подов и политику доступа к ним. Сервисы позволяют обращаться к подам, используя DNS или IP-адреса, и управляют балансировкой нагрузки.

5️⃣Пространства имен (Namespaces): Изоляция частей кластера. Позволяет разделять ресурсы кластера между несколькими пользователями.

6️⃣Конфигурационные данные (ConfigMaps and Secrets): Объекты для хранения конфигурационной информации и конфиденциальных данных соответственно, которые могут быть использованы подами.

Архитектура

Мастер-узел (Master Node): Управляет кластером и отвечает за основные решения о развертывании приложений (например, когда, где и как запускать поды).
Рабочие узлы (Worker Nodes): На этих узлах запускаются приложения. Узел содержит компоненты, необходимые для этого: Docker, kubelet, kube-proxy и другие.

Почему он стал популярен

1️⃣Масштабируемость: Kubernetes эффективно управляет тысячами контейнеров, работающих одновременно.
2️⃣Надежность и устойчивость: Автоматическое восстановление от сбоев (например, перезапуск неисправных контейнеров).
3️⃣Гибкость и портативность: Поддерживает различные среды — облака, виртуальные машины, физические сервера.
4️⃣Управление конфигурацией и секретами: Упрощает развертывание и управление конфигурационными данными и секретами.
5️⃣Самообслуживание и автоматизация: Упрощает разработку и операционную деятельность за счет автоматизации многих задач, связанных с развертыванием и масштабированием приложений.

Kubernetes предлагает мощные инструменты для работы с контейнеризированными приложениями на любой масштабируемой и распределенной инфраструктуре. Он помогает компаниям эффективно развертывать, масштабировать и управлять приложениями, что делает его неотъемлемой частью экосистемы облачных вычислений.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
🔥22👍18👀1
Чем отличаются роли от плейбуков ?
Спросят с вероятностью 33%

В контексте Ansible, который является одним из популярных инструментов автоматизации IT-инфраструктур, роли и плейбуки представляют собой ключевые компоненты, но они используются для различных целей и имеют разные области применения.

Плейбуки (Playbooks)

Это YAML-файлы, которые описывают задачи и процессы автоматизации, которые необходимо выполнить на одной или нескольких управляемых машинах. Они включают в себя одну или несколько "игр" (plays), каждая из которых может целиться на определённую группу хостов для выполнения заданных задач. Плейбук может описывать полную конфигурацию сервера, установку программного обеспечения, обновление системы и другие операционные задачи.

Пример простого плейбука:
- name: Update web servers
hosts: webservers
tasks:
- name: Ensure nginx is at the latest version
ansible.builtin.yum:
name: nginx
state: latest


Роли (Roles)

Предназначены для более удобной организации и повторного использования кода Ansible. Роль инкапсулирует чётко определённую функциональность, включая переменные, зависимости, файлы конфигурации и шаблоны, что позволяет переиспользовать эту функциональность в различных плейбуках и проектах. Структура роли строго организована, что помогает в её модульности и переносимости.

Стандартная структура роли включает:

tasks/ — Главные задачи роли.
handlers/ — Обработчики, которые вызываются по специальным триггерам.
defaults/ — Стандартные значения переменных, которые использует роль.
vars/ — Другие переменные, которые могут быть определены в роли.
files/ — Файлы, которые можно скопировать на управляемые машины.
templates/ — Шаблоны, которые можно обработать и скопировать на управляемые машины.
meta/ — Метаданные роли, включая зависимости от других ролей.

Основные отличия

Модульность: Роли предлагают высокий уровень модульности и переиспользования, в то время как плейбуки обычно определяют конкретные процедуры автоматизации для конкретных сценариев.
Организация: Плейбуки могут использовать роли для организации и сокращения количества кода, делая плейбуки более читаемыми и легкими для поддержки.
Повторное использование: Роли могут быть легко переиспользованы в разных проектах и плейбуках, в то время как плейбуки обычно специфичны для проекта.

Плейбуки являются основными файлами, которые вызывают роли и другие задачи для выполнения операций на управляемых машинах. Роли представляют собой модульные блоки, которые организуют код, связанный с определённой функциональностью, и позволяют его переиспользовать в различных плейбуках. Разделение задач и кода между плейбуками и ролями улучшает организацию, облегчает управление и повышает эффективность процесса автоматизации.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍282💊1
Привет, я Леха. Вопросы собеседований берутся с моего сайта easyoffer.ru. Его я делал как пет-проект, чтобы устроиться на работу, но сейчас проект уже перерастает в стартап и я пишу об этом в своем TG блоге Идущий к IT и на YouTube.

"Как считается вероятность вопросов?"

Об этом писал в статье на Habr

Если нашли ошибку в посте пишите @aurumsunset
Если хотите купить рекламу на канале пишите @easyoffer_adv
Чтобы получить доступ к приватной группе, где мы выкладываем реальные записи собеседований переходите в бота
Аналогично для тестовых заданий вот этот бот
Please open Telegram to view this post
VIEW IN TELEGRAM
👍138
DevOps | Вопросы собесов pinned «Привет, я Леха. Вопросы собеседований берутся с моего сайта easyoffer.ru. Его я делал как пет-проект, чтобы устроиться на работу, но сейчас проект уже перерастает в стартап и я пишу об этом в своем TG блоге Идущий к IT и на YouTube. "Как считается вероятность…»
Чем отличается Terraform от Ansible ELK stack ?
Спросят с вероятностью 33%

Terraform и Ansible — это инструменты для автоматизации, которые часто используются для разных целей. Каждый из них имеет свои особенности и лучше подходит для определённых задач.

Terraform

Это инструмент, разработанный HashiCorp, для создания, изменения и управления инфраструктурой как кодом (IaC). Он позволяет пользователям определять и предоставлять полную инфраструктуру (серверы, базы данных, сетевые устройства и т.д.) в различных облачных провайдерах (например, AWS, Azure, Google Cloud) с помощью конфигурационных файлов, которые описывают желаемое состояние инфраструктуры.

Основные характеристики:

Идемпотентность: Способен привести инфраструктуру в точное состояние, определённое в конфигурационных файлах, не внося повторных изменений в уже существующие ресурсы, если это не требуется.
Декларативный подход: Пользователь описывает "что" должно быть создано, а не "как" это должно быть сделано.
Управление состоянием: Отслеживает текущее состояние инфраструктуры и помогает управлять её изменениями.

Ansible

Это инструмент для автоматизации конфигурации, управления и оркестрации. В отличие от Terraform, Ansible лучше подходит для автоматической настройки и управления существующими ресурсами, такими как серверы, приложения и другие компоненты.

Основные характеристики:

Процедурный подход: Описывает серию "шагов" или "задач", которые необходимо выполнить для достижения желаемого состояния.
Идемпотентность: Как и Terraform, Ansible может повторно применять одни и те же настройки без внесения изменений, если текущее состояние уже соответствует желаемому.
Агентное-менее выполнение: Для своей работы Ansible использует существующую SSH-инфраструктуру и не требует установки дополнительных агентов на целевых системах.

ELK Stack

Это набор инструментов для сбора, агрегирования и анализа больших объёмов данных. ELK состоит из трёх основных компонентов: Elasticsearch (поисковая и аналитическая система), Logstash (инструмент для сбора, трансформации и хранения данных) и Kibana (инструмент для визуализации данных из Elasticsearch).

Основные характеристики:

Анализ данных: Используется для мониторинга, анализа логов и визуализации данных.
Интеграция данных: Может интегрироваться с различными источниками данных для сбора и агрегации информации.

Различия в использовании:

Terraform лучше использовать для создания и управления инфраструктурой на стадии инициализации проекта или при значительных изменениях инфраструктуры.
Ansible идеально подходит для непрерывного управления конфигурацией и автоматизации рутинных задач на уже существующих серверах и устройствах.
ELK Stack используется для мониторинга и анализа работы систем после их развёртывания, сбора логов и визуализации данных.

Terraform, Ansible и ELK Stack выполняют различные, но взаимодополняющие функции в управлении IT-инфраструктурой и обработке данных.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍15🤔86🤯2👀1
Что известно про rancher kubernetes ?
Спросят с вероятностью 13%

Rancher — это популярная платформа управления контейнерами, которая позволяет упростить процесс развертывания, управления и масштабирования приложений на основе контейнеров, включая тех, что работают в среде Kubernetes. Rancher обеспечивает интеграцию с различными инструментами и платформами, такими как Docker, Kubernetes, Microsoft Azure, Google Cloud Platform и Amazon Web Services.

Основные возможности и преимущества:

1️⃣Поддержка множества кластеров Kubernetes: Позволяет управлять несколькими кластерами Kubernetes, независимо от того, где они развернуты — будь то на ваших локальных серверах или в облаке.

2️⃣Удобный пользовательский интерфейс: Предоставляет графический интерфейс пользователя (GUI), который упрощает управление ресурсами Kubernetes, мониторингом, масштабированием и обновлениями.

3️⃣Интегрированная система безопасности: Включает средства для управления доступом, которые позволяют настроить политики безопасности на уровне пользователей и групп, а также интегрируется с внешними поставщиками идентификации через OpenID Connect, LDAP, Active Directory и другие.

4️⃣Управление каталогами приложений: Предоставляет каталоги, которые содержат готовые шаблоны приложений, упрощая развертывание стандартных сервисов и приложений.

5️⃣Проекты и пространства имен: Позволяет группировать ресурсы Kubernetes в проекты, что упрощает управление и изоляцию ресурсов между командами или приложениями.

6️⃣Масштабирование и автоматизация: Упрощает процесс масштабирования приложений и автоматизации операций с помощью различных инструментов и API.

Использование для управления Kubernetes

Предоставляет дополнительный слой абстракции и управления над кластерами Kubernetes, который включает:

Централизованное управление: Управляйте всеми вашими кластерами Kubernetes из единого интерфейса.
Автоматическое развертывание: Простое создание новых кластеров Kubernetes на различных облачных платформах или на локальных серверах.
Мониторинг и алерты: Встроенные средства для мониторинга состояния кластера и оповещения о проблемах.
Бэкап и восстановление: Инструменты для резервного копирования и восстановления состояния кластера.

Rancher является мощным инструментом для организаций, которые используют Kubernetes и стремятся упростить управление своей инфраструктурой контейнеров. Он обеспечивает дополнительные уровни управления, безопасности и масштабируемости, что делает его ценным решением для развертывания и управления контейнеризированными приложениями в различных средах.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍9
Какие есть способы задания переменных в Ansible ?
Спросят с вероятностью 13%

Переменные используются для хранения информации, которая может изменяться от одного выполнения плейбука к другому или от одного окружения к другому. Это делает Ansible более гибким и повторно используемым. Существует несколько способов определения и использования переменных в Ansible:

1️⃣Переменные в инвентарных файлах

Можно задать непосредственно в инвентарном файле. Это могут быть файлы в форматах INI или YAML. Пример в формате INI:
[webservers]
webserver1 ansible_host=192.168.1.100 http_port=80 max_requests=1000


В YAML формате это будет выглядеть так:
webservers:
hosts:
webserver1:
ansible_host: 192.168.1.100
http_port: 80
max_requests: 1000


2️⃣Файлы переменных в плейбуках

Могут быть организованы в файлы, обычно YAML, которые затем подключаются к плейбукам через директиву vars_files. Пример использования в плейбуке:
---
- hosts: all
vars_files:
- vars/main.yml


Где vars/main.yml содержит:
http_port: 80
max_requests: 1000


3️⃣Переменные в командной строке

Могут быть определены непосредственно при запуске плейбука через командную строку с помощью ключа -e или --extra-vars. Пример:
ansible-playbook playbook.yml -e "http_port=80 max_requests=1000"


4️⃣Переменные в плейбуках

Можно определить непосредственно в плейбуке под ключом vars:
---
- hosts: all
vars:
http_port: 80
max_requests: 1000


5️⃣Role Defaults и Vars

Каждая роль может иметь файлы defaults/main.yml и vars/main.yml. Переменные, определенные в defaults, имеют самый низкий приоритет и могут быть переопределены почти в любом месте. Переменные в vars имеют более высокий приоритет и переопределяются с трудом.

6️⃣Registered Variables

Переменные могут быть созданы во время выполнения плейбука с использованием модулей и зарегистрированы для использования в последующих задачах. Например:
- name: Get the date
command: date
register: current_date


7️⃣Facts

Собираются Ansible автоматически при выполнении плейбука и содержат информацию о удалённых системах. Facts можно использовать как переменные:
---
- hosts: all
tasks:
- name: Print OS family
debug:
msg: "The OS family is {{ ansible_os_family }}"


Каждый из этих способов имеет своё применение в зависимости от требований задачи, структуры данных и логики плейбука. Правильный выбор способа определения переменных помогает создать более читаемые, поддерживаемые и масштабируемые Ansible плейбуки и роли.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍16🔥1
Что такое blue green deployment ?
Спросят с вероятностью 13%

Blue-green deployment — это метод развертывания ПО, который предназначен для минимизации или устранения простоя при обновлении версии приложения. Этот подход включает в себя две идентичные среды, которые находятся в точном зеркальном отображении друг друга. Одна среда, обычно называемая "blue", активно служит трафиком пользователей, в то время как другая среда, "green", находится в готовности и используется для новой версии приложения.

Как он работает

1️⃣Подготовка двух сред: Настройте две параллельные среды ("blue" и "green"). Обе должны быть настроены так, чтобы могли поддерживать полную нагрузку вашего приложения.

2️⃣Развертывание в зеленую среду: Новая версия приложения развертывается в "green" среду, где она может быть тщательно протестирована и проверена на ошибки. В это время "blue" среда по-прежнему обрабатывает весь пользовательский трафик.

3️⃣Переключение трафика: После того как новая версия в "green" среде была проверена и готова к использованию, трафик пользователей перенаправляется со "старой" синей среды на "новую" зеленую. Это переключение обычно происходит путем изменения конфигурации DNS или с помощью балансировщика нагрузки.

4️⃣Мониторинг и откат при необходимости: После переключения трафика на "green" среду, она активно мониторится для выявления любых неожиданных проблем или сбоев. Если что-то идет не так, можно быстро выполнить откат, снова переключив трафик обратно на "blue" среду.

5️⃣Подготовка следующего обновления: После успешного переключения "green" среда становится новой "blue" средой для следующего цикла развертывания, а старая "blue" среда теперь будет использоваться для следующего обновления как "green".

Преимущества:

Минимизация простоя: Переключение между средами позволяет обновлять приложения без простоев.
Уменьшение риска: Тестирование новой версии в зеленой среде перед полноценным переключением трафика помогает убедиться в стабильности обновления.
Быстрый откат: Если новая версия содержит ошибки, можно быстро переключиться обратно на старую версию.

Недостатки:

Двойные затраты на инфраструктуру: Требуется поддерживать две рабочие среды, что удваивает затраты на ресурсы и управление.
Сложность управления данными: Синхронизация данных между двумя средами может быть сложной, особенно если приложение вносит значительные изменения в данные.

Blue-green deployment является эффективным способом обеспечения надежности и непрерывности бизнес-процессов при обновлении приложений, особенно в условиях критически важных продуктовых сред.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍193🔥1
Привет, ребят, хочу сделать так, чтобы для каждого вопроса было поясняющее видео в reels/shorts формате.

Ищу человека который с этим поможет, работу оплачу. Вопросы есть, нужен простой монтаж и озвучка. Все видосы делаются по шаблону.

Если интересует такая подработка напишите мне @kivaiko
🔥16👍83
В чем разница Deployment и DaemonSet ?
Спросят с вероятностью 26%

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, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле.

Особенности:

Гарантия запуска: Убедитесь, что каждый узел кластера запускает копию определённого пода.
Автоматическое размещение: Когда добавляются новые узлы, на них автоматически размещаются необходимые поды.
Службы уровня узла: Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие.

Пример DaemonSet в YAML-формате:
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


Deployment и DaemonSet выполняют различные функции в Kubernetes. Deployment лучше всего подходит для управления подами, которые представляют приложения, требующие масштабирования и обновлений. DaemonSet идеален для обеспечения работы сервисов на каждом узле кластера. Оба эти инструмента дополняют друг друга и используются в разных сценариях для эффективного управления и оркестрации контейнеров.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍18
Что такое API и зачем оно нужно ?
Спросят с вероятностью 13%

API (Application Programming Interface — программный интерфейс приложения) — это набор правил, спецификаций, инструментов и протоколов, который позволяет создавать ПО и приложения, обеспечивая взаимодействие между различными программными компонентами, системами и библиотеками.

Ключевые функции:

1️⃣Интерфейс: API определяет, каким образом программы и компоненты могут взаимодействовать друг с другом, без необходимости вникать в детали их внутренней реализации. Это позволяет разработчикам использовать функциональность, которую предоставляет API, не заботясь о сложности внутренних процессов.

2️⃣Абстракция: API абстрагирует сложность взаимодействия с нижележащими системными уровнями или внешними сервисами, предоставляя разработчикам простой и понятный интерфейс для использования.

3️⃣Стандартизация: API устанавливает стандартные методы для выполнения различных операций, что гарантирует совместимость и унификацию взаимодействия различных компонентов программного обеспечения.

Зачем он нужен?

1️⃣Интеграция систем: Позволяет различным системам и приложениям легко взаимодействовать друг с другом. Например, API веб-сервисов позволяет веб-приложениям запрашивать данные у серверов и выводить их пользователям в удобной форме.

2️⃣Расширение функциональности: С помощью сторонних API разработчики могут расширять функциональность своих приложений, используя уже готовые решения, такие как карты Google Maps, платежные системы PayPal или функции социальных сетей.

3️⃣Масштабируемость: Позволяет системам эффективно масштабироваться, предоставляя модульные компоненты, которые можно легко заменять или обновлять без влияния на другие части системы.

4️⃣Безопасность: С помощью можно контролировать доступ к различным функциям системы, обеспечивая безопасное взаимодействие между компонентами. API может служить прослойкой, которая проверяет и фильтрует запросы перед доступом к важным ресурсам.

5️⃣Разработка программного обеспечения: API упрощает разработку программ, позволяя разработчикам сосредоточиться на создании уникальных особенностей своего приложения, а не на реализации уже известных функций, доступных через API.

Примеры использования:

Веб-API: Позволяют веб-приложениям запрашивать данные с серверов. Например, RESTful API используется для обмена данными между клиентом и сервером через HTTP.
Операционные системы API: Как Windows API, позволяет разработчикам писать функции, которые могут взаимодействовать с ОС.
Библиотеки и фреймворки: Такие как jQuery в веб-разработке, предоставляют API, которые упрощают выполнение часто используемых задач, таких как AJAX-запросы.

API играет центральную роль в современной разработке ПО, делая возможной интеграцию и взаимодействие между различными программными продуктами и платформами.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍103🔥1
Что лучше: микросервисы или монолиты ?
Спросят с вероятностью 13%

Вопрос о том, что лучше — микросервисы или монолитные архитектуры, зависит от множества факторов, включая специфику проекта, размер и навыки команды, требования к масштабируемости и доступности. Каждый подход имеет свои преимущества и недостатки, и выбор должен основываться на конкретных потребностях бизнеса и технических требованиях. Давайте рассмотрим ключевые аспекты каждого подхода.

Монолитные архитектуры

Преимущества:
Простота разработки и развертывания: Все части приложения разработаны вместе, что упрощает тестирование, отладку и развертывание, поскольку требуется управлять только одним исполняемым файлом.
Простота управления зависимостями: Все зависимости находятся внутри одного проекта, что уменьшает сложность управления внешними зависимостями.
Подходит для маленьких и средних проектов: Монолиты могут быть более эффективными для маленьких команд или проектов с ограниченными ресурсами.

Недостатки:
Масштабируемость: Масштабирование всего приложения, даже если это необходимо только для одной части функционала, может быть ресурсоемким.
Гибкость разработки: Большие монолитные кодовые базы могут стать сложными для управления и медленными в разработке.
Трудности в обновлении технологий: Обновление или изменение технологического стека может быть сложным и рискованным для всего приложения.

Микросервисные архитектуры

Преимущества:
Масштабируемость: Микросервисы можно масштабировать независимо, что обеспечивает более эффективное использование ресурсов и улучшенное управление нагрузкой.
Гибкость разработки и внедрения новых технологий: Каждый микросервис может использовать наиболее подходящий для своих задач технологический стек.
Устойчивость к отказам: Отказ одного сервиса не обязательно влечет за собой сбой всей системы.
Простота обновления и поддержки: Меньший объем кода в каждом сервисе упрощает понимание, тестирование, обновление и поддержку.

Недостатки:
Сложность управления: Микросервисные архитектуры требуют сложной инфраструктуры, включая сетевые взаимодействия, обнаружение сервисов, балансировку нагрузки и управление конфигурацией.
Проблемы согласованности данных: Работа с распределенными данными и транзакциями может быть сложной.
Высокие требования к навыкам команды: Разработка и поддержка микросервисов требуют более глубоких знаний и опыта в области сетевой инфраструктуры, безопасности и разработки распределенных систем.

Выбор подхода

Для стартапов и небольших проектов с ограниченными ресурсами часто предпочтительнее монолит, поскольку он требует меньших затрат на начальном этапе и проще в управлении.
Для больших, сложных приложений, требующих высокой масштабируемости, устойчивости к отказам и быстрого внедрения изменений, микросервисы могут предложить значительные преимущества.

Выбор между монолитной и микросервисной архитектурой зависит от специфических целей проекта, требований к масштабируемости, ресурсов команды и стратегических бизнес-целей.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍151
Что такое репликасет, деплоймент ?
Спросят с вероятностью 26%

ReplicaSet и Deployment — это контроллеры, которые используются для управления жизненным циклом подов (групп контейнеров). Оба они предназначены для обеспечения отказоустойчивости и масштабируемости приложений, но они отличаются по функциональности и уровню абстракции.

ReplicaSet

Это контроллер, который обеспечивает, чтобы указанное количество копий пода всегда было запущено в кластере Kubernetes. Основная задача ReplicaSet — поддерживать стабильное количество реплик пода, которое определено в его конфигурации. Если поды неожиданно падают или удаляются, ReplicaSet автоматически запускает новые поды, чтобы компенсировать недостающие или избыточные экземпляры.

Пример:
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-replicaset
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: myapp:1.0
В этом примере ReplicaSet гарантирует, что всегда будут запущены три пода с приложением
myapp.

Deployment

Это более высокоуровневый контроллер по сравнению с ReplicaSet и предоставляет дополнительные возможности для управления развертыванием и обновлением приложений. Deployment управляет ReplicaSets и подами за вас, что позволяет легко обновлять приложения с использованием стратегий, таких как "Rolling Update" (постепенное обновление), которые минимизируют время простоя при обновлении приложения.

Автоматически управляет созданием новых ReplicaSets для каждого нового обновления приложения и может откатывать к предыдущим версиям, если обновление не удаётся или отменяется.

Пример:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: myapp:2.0

В этом примере Deployment управляет созданием подов с использованием образа myapp:2.0 и обеспечивает их постепенное обновление с минимальным простоем.

ReplicaSet предназначен для поддержания заданного числа копий пода в работе, не обеспечивая дополнительных функций для управления версиями или стратегий обновления.
Deployment предоставляет более комплексные функции управления, включая обновления, откаты и масштабирование приложений. Deployment использует ReplicaSets для поддержания стабильности приложений, но добавляет возможности для более гибкого управления конфигурациями и версиями.

Использование Deployment рекомендуется для большинства приложений, так как оно обеспечивает больше возможностей и гибкости при управлении развертываниями.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍13
Зачем нужен multi stage ?
Спросят с вероятностью 13%

Многоэтапная сборка (multi-stage build) — это метод, который позволяет организовать Dockerfile более эффективно, оптимизируя размер конечного образа и уменьшая его атакуемую поверхность. Это достигается за счет использования нескольких инструкций FROM в одном Dockerfile, каждая из которых создаёт новый этап сборки. Такой подход позволяет использовать одни базовые образы для сборки и компиляции приложения, а другие — для выполнения, что существенно уменьшает размер и содержание финального образа.

Преимущества:

1️⃣Оптимизация размера образа: В процессе сборки можно использовать тяжелые образы с большим количеством инструментов и зависимостей, необходимых для компиляции или тестирования приложения. Для запуска приложения используются минимальные образы, содержащие только необходимые зависимости. Это снижает размер финального образа, что ускоряет загрузку и развертывание.

2️⃣Уменьшение атакуемой поверхности: Минимизированный финальный образ содержит меньше компонентов, что уменьшает потенциальные уязвимости и упрощает поддержку безопасности.

3️⃣Эффективное кэширование и быстрота сборки: Использование многоэтапной сборки позволяет более эффективно использовать кэш Docker, поскольку изменения в одном этапе не влияют на кэш других этапов.

4️⃣Разделение зависимостей: Разработка и запуск могут требовать разных зависимостей, и многоэтапная сборка позволяет четко их разделить, снижая риски конфликтов и ошибок во время выполнения.
# Этап сборки
FROM gcc:8.3.0 as builder
WORKDIR /app
COPY . .
RUN g++ -o myapp main.cpp

# Этап запуска
FROM alpine:latest
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]


В этом примере:
Первый этап использует образ gcc:8.3.0 для компиляции приложения.
Второй этап использует минимальный образ alpine, в который копируется только исполняемый файл myapp, собранный на предыдущем этапе.

Многоэтапные сборки Docker предлагают мощный способ уменьшить размер и повысить безопасность Docker-образов, упростить процессы CI/CD и улучшить управление зависимостями в приложениях. Это делает их идеальным выбором для производственных сред, где важны как производительность, так и безопасность.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍21
Для чего нужен бюджет ошибок ?
Спросят с вероятностью 13%

Бюджет ошибок (error budget) — это концепция, используемая в области управления надёжностью систем и DevOps, которая определяет допустимый уровень риска или количество времени простоя, которое можно "потратить" без вреда для пользовательского опыта или бизнес-целей. Эта концепция особенно популярна в методологиях SRE (Site Reliability Engineering, инженерия надёжности сайтов), разработанной в Google для управления масштабируемыми и надёжными IT-инфраструктурами.

Назначение:

1️⃣Установление показателей надёжности: Бюджет ошибок помогает определить, какой уровень надёжности требуется для приложения или сервиса. Например, если у сервиса цель SLA (Service Level Agreement) 99.95% доступности, это означает, что допустимое время простоя — примерно 4.38 часа в год.

2️⃣Сбалансированное управление рисками и инновациями: Бюджет ошибок позволяет командам разработки и эксплуатации сбалансировать между стабильностью сервиса и скоростью внедрения новых изменений. Если бюджет ошибок не исчерпан, команды могут рисковать больше, внедряя инновации. Если бюджет перерасходован, команды должны сосредоточиться на улучшении стабильности и надёжности.

3️⃣Повышение ответственности и прозрачности: Установление бюджета ошибок создаёт чёткие ожидания и цели для команды, способствует развитию культуры измерения и ответственности за качество и надёжность.

4️⃣Оптимизация процессов разработки и эксплуатации: Бюджет ошибок может стать отправной точкой для анализа и оптимизации процессов разработки, тестирования и управления инфраструктурой.

Предположим, что у вас есть веб-сервис с SLA, установленным на уровне 99.9% доступности. Это означает, что ваш сервис может быть недоступен до 8.76 часов в год без нарушения SLA. Если в течение квартала вы уже исчерпали 2 часа вашего бюджета ошибок из-за непредвиденных сбоев, у вас остаётся 6.76 часов на оставшуюся часть года. Эта информация может повлиять на принятие решений о запуске новых функций, которые потенциально могут привести к дополнительным рискам.

Бюджет ошибок — это мощный инструмент для управления рисками, качеством и скоростью инноваций в IT-проектах. Он помогает командам находить оптимальное соотношение между надёжностью и быстрым внедрением изменений, а также поддерживает культуру постоянного улучшения качества и надёжности сервисов.

👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1119 вопросов на DevOps. Ставь 👍 если нравится контент

🔐 База собесов | 🔐 База тестовых
👍111
🔥Тесты для подготовки к собеседованию🔥
Выбери своё направление:

1. Frontend
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. С/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔2