uz
Feedback
Библиотека собеса по DevOps | вопросы с собеседований

Библиотека собеса по DevOps | вопросы с собеседований

Kanalga Telegram’da o‘tish

Вопросы с собеседований по DevOps и ответы на них. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/d7e18893 Для обратной связи: @proglibrary_feeedback_bot

Ko'proq ko'rsatish
3 423
Obunachilar
-124 soatlar
+27 kunlar
+1830 kunlar
Postlar arxiv
Какие существуют хорошие практики для создания проб? Испытания должны оценивать работоспособность функционала приложения, используемого для обработки запросов пользователей. Например, если в приложении имеется панель администратора и веб-сайт, необходимо проверить ответ от сайта, который не просто передает простой код ответа, а запускает функцию, использующую механизмы приложения, аналогичные обработке реальных запросов пользователей. Пробы должны быть легкими и не нагружать инфраструктуру приложения, а также не запускаться слишком часто. Им следует избегать проверки функционала, зависящего от внешних сервисов, чтобы избежать каскадных сбоев. Особенно внимательно нужно относиться к liveness-пробам, которые могут вызвать дополнительные проблемы, особенно в периоды высокой нагрузки. Рекомендуется выделить отдельный пул воркеров для прохождения liveness-пробы. Для readiness-пробы лучше создавать сквозные проверки, например, проверять только location nginx, который проксирует php-fpm, одним запросом проверяя оба сервиса.

Если нам всё равно нужно описывать Kubernetes service для публикации ingress, то зачем нам ingress? Преимущество использования ingress-контроллера заключается в том, что после его настройки мы можем направлять трафик ко всем нашим приложениям внутри кластера k8s, которые работают по протоколу HTTP и используют маршрутизацию на основе URL/locations, HTTP headers и cookie. Кроме того, при необходимости мы можем использовать несколько ingress-контроллеров в кластере, разделяя их по ingress class.

Можем ли мы опубликовать приложение, работающее по бинарному протоколу, например postgresql, через ingress? Да, хотя многие ингресс-контроллеры могут поддерживать публикацию бинарных протоколов, это не всегда удобно. Обычно Kubernetes ingress самостоятельно публикуется с помощью Kubernetes service. Однако для каждой публикации приложения через ingress с использованием бинарного протокола потребуется дополнительное описание Kubernetes service.

Каким образом мы можем улучшить стабильность работы приложения в k8s? Прежде всего необходимо описать probe для контейнеров в PODе, а также указать ресурсы запросов / лимиты. Затем целесообразно описать антиаффинити для PODов наших приложений, чтобы упростить обработку сбоев на конкретных узлах. Если в нашем кластере работают как продуктовые, так и тестовые среды, хорошей практикой будет указать node selector и taints/tolerations, чтобы запускать продуктовые приложения на отдельных узлах. Если нет возможности выделить узлы под продакшн или мы можем выделить особо важные (ядреные) сервисы в рамках продакшн, рекомендуется установить priority classes для них. Также стоит описать бюджет нарушения работы POD для особо важных приложений. В случае использования многопользовательской модели (multitenant) в пространствах имен пользователей следует указывать resourceQuotas и limitRanges.

Что будет если на сервере LA = 100? Вероятно, что на сервере будет наблюдаться замедленная работа сервисов, но если параметр LA равен количеству ядер в системе или количеству потоков в системе, то данная нагрузка является нормальной.

Перечислите некоторые меры безопасности, которые вы можете предпринять при использовании Kubernetes. Вот некоторые меры безопасности, которые мы можем принять: ✍🏻 Ограничить доступ к ETCD ✍🏻 Внедрить сегментацию сети ✍🏻 Определить квоту источника ✍🏻 Обеспечьте ограниченный доступ к узлам Kubernetes

Что делает kube-scheduler? Kube-scheduler позволяет узлам планировать только что созданные модули. Он определяет, какие узлы являются лучшими для каждого модуля в очереди планирования в соответствии с доступными ресурсами и ограничениями. Этот планировщик выбирает оптимальный узел для каждого нового или незапланированного пода, на котором они будут работать. Но тем не менее, каждый контейнер в подах имеет разные требования к ресурсам и потребностям.

Gift
x10

Lotereya mukofotlari

10 Telegram Premium obuna bo'lishi 3 oy

Tugash sanasi

+1
📌 Большая шпаргалка по Kubernetes

Расскажите о балансировщиках нагрузки в Kubernetes. В Kubernetes балансировщик нагрузки — это компонент, который распределяет входящий сетевой трафик между несколькими экземплярами приложения, работающего в кластере. Балансировщик нагрузки отправляет подключения к одному серверу в пуле на основе алгоритма определения следующего сервера и отправляет новые подключения к следующему доступному серверу. Этот алгоритм идеален там, где виртуальные машины требуют значимых затрат, например в размещенных средах. Некоторые из стратегий, используемых для балансировки нагрузки, — это циклический перебор, бесконечность сеансов и хеширование IP.

Назовите инструменты Ansible Вот список различных инструментов, которые вы можете упомянуть во время собеседования с разработчиком: Ansible Galaxy: веб-сайт Galaxy позволяет вам находить роли в сообществе и делиться ими, чтобы сэкономить ваше время. Ansible Tower: инструмент командной строки (также с графическим компонентом), предоставляющий дополнительные функциональные возможности. Visual Studio Code: разработанный Microsoft редактор кода с поддержкой YAML и Ansible посредством расширений. Atom: текстовый редактор с открытым исходным кодом для отслеживания изменений проекта, полезный для интеграции с файлами YAML.

Какие типы монтирования доступны в Docker? Bind mount: подключаются к любой точке файловой системы сервера; Volume mount: управляются Docker и хранятся как часть файловой системы сервера; tmpfs mount: хранятся в оперативной памяти сервера, поэтому никогда не пишутся на реальную файловую систему сервера.

Расскажите о командах systemd для управления Docker Для запуска Docker многие дистрибутивы Linux используют systemd. Для запуска сервисов используется команда systemctl. Если ее нет, следует использовать команду service. $ sudo systemctl start docker $ sudo service docker start Чтобы добавить сервис в автозагрузку, либо убрать его: $ sudo systemctl enable docker $ sudo systemctl disable docker Для проверки параметров запуска сервиса и их изменения: $ sudo systemctl edit docker Просмотра связанных с сервисом журналов: $ journalctl -u docker

Назовите продвинутые команды Docker Наиболее важные из них: docker -version: узнать установленную версию Docker; docker ps: перечислить все запущенные контейнеры вместе с дополнительной информацией о них; docker ps -a: перечислить все контейнеры, включая остановленные, вместе с дополнительной информацией о них; docker exec: войти в контейнер и выполнить в нем команду; docker build: собрать образ из Dockerfile; docker rm: удалить контейнер с указанным идентификатором; docker rmi: удалить образ с указанным идентификатором; docker info: получить расширенную информацию об установленном Docker, например, сколько запущено контейнеров, образов, версию ядра, доступную оперативную память и т.п.; docker cp: сохранить файл из контейнера в локальную систему; docker history: показать историю образа с указанным именем.

🐰 Как решить проблему высокой связанности сервисов с помощью событийно-ориентированной архитектуры и RabbitMQ В этой статье
🐰 Как решить проблему высокой связанности сервисов с помощью событийно-ориентированной архитектуры и RabbitMQ В этой статье я расскажу, как оптимизировать сложную систему микросервисов через брокер сообщений, в данном случае RabbitMQ. Мы рассмотрим вариант решения проблемы высокой связанности между сервисами через переход на событийно-ориентированную архитектуру (EDA). Читать статью

Можно ли использовать JSON вместо YAML в файле для docker-compose, если да — как? Да, так можно сделать. Для этого нужно явно указать имя файла, например так: docker-compose -f docker-compose.json up

Что такое объекты Docker? Под объектами понимают образы, сервисы и контейнеры. Образы — шаблоны с инструкциями только для чтения для создания контейнеров. Контейнеры — запущенные экземпляры образов. Сервисы — можно запустить несколько контейнеров поверх нескольких сервисов Docker, работающих совместно как swarm. Еще объектами можно назвать сети и тома.

Что такое виртуализация? В момент появления понятия виртуализации, оно представляло собой метод логического разделения мейнфреймов для одновременной работы нескольких приложений. Однако с развитием технологий появилась возможность одновременной работы нескольких операционных систем на одном сервере x86, что значительно изменило смысл виртуализации. В результате виртуализация позволяет запускать две различные операционные системы на одном устройстве. Первая операционная система может использоваться для административных целей, в то время как остальные гостевые операционные системы загружаются как обычно, включая инициализацию и загрузку ядра. Этот метод также обеспечивает повышенный уровень безопасности, так как гостевая операционная система не имеет полного доступа к управляющей (host) операционной системе, что помогает избежать возможных уязвимостей в безопасности. Есть три типа виртуализации: ✍🏻 Паравиртуализация ✍🏻 Эмуляция ✍🏻 Контейнерная виртуализация

Приведите необходимые шаги для развертывания докеризированного приложения, сохраненного в репозитории Git Шаги, необходимые для развертывания приложения зависят от окружения, основной процесс развертывания будет таким: ✍🏻 Сборка приложения с использованием Docker build в каталоге с кодом приложения ✍🏻 Тестирование образа ✍🏻 Выгрузка образа в Registry ✍🏻 Уведомление удаленного сервера приложений, что он может скачать образ из Registry и запустить его ✍🏻 Перестановка порта в прокси HTTP(S) ✍🏻 Остановка старого контейнера

🗿🔨 Как мы разбили монолит на маленькие кусочки и что из этого вышло В этой статье мы поделимся своим опытом миграции, расск
🗿🔨 Как мы разбили монолит на маленькие кусочки и что из этого вышло В этой статье мы поделимся своим опытом миграции, расскажем о преимуществах микросервисов и роли Domain-Driven Design в этом процессе. Читать статью #гайд