cookie

Мы используем файлы cookie для улучшения сервиса. Нажав кнопку «Принять все», вы соглашаетесь с использованием cookies.

avatar

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

Вопросы с собеседований по DevOps и ответы на них. Список наших каналов: https://t.me/proglibrary/8353 Учиться у нас: https://proglib.io/w/907158ab Обратная связь: @proglibrary_feedback_bot По рекламе: @proglib_adv Прайс: @proglib_advertising

Больше
Рекламные посты
1 996
Подписчики
+524 часа
+907 дней
+15330 дней

Загрузка данных...

Прирост подписчиков

Загрузка данных...

Что такое Kubernetes probes? Эти проверки выполняются в течение жизненного цикла PODа и описываются для каждого контейнера в PODе. Существует три типа проверок. Startup probe запускается сразу после запуска PODа и используется для приложений с длительной процедурой инициализации. Другие проверки не запускаются, пока эта не завершится. Readiness probe проверяет готовность PODа обрабатывать трафик (POD не добавляется в маршрутизацию трафика в сервисе, пока эта проверка не будет пройдена). Liveness probe проверяет, работает ли приложение (в случае неудачной проверки процесс в контейнере PODа перезапускается). Readiness и Liveness — независимые и запускаются после прохождения Startup probe. Существуют exec-, http-, tcp- и grpc-проверки. Проверки выполняются сервисом kubelet на узле, на котором запущен целевой POD.
Показать все...
Каким образом мы можем управлять вычислительными ресурсами в k8s? Для эффективного управления ресурсами в кластере k8s используются resources requests / limits. Они могут быть настроены для CPU, памяти и, в последних версиях k8s, для GPU. Requests используются для определения типичного потребления ресурсов нашим приложением. На основе этих данных Kubernetes scheduler выбирает ноды для запуска PODов (сумма всех request'ов контейнеров во всех PODах не должна превышать доступные ресурсы на ноде). Limits служат как механизм предотвращения, ограничивая потребление ресурсов контейнером в PODе. При превышении лимита процессорного времени применяется thermal throttling, а при превышении лимита памяти — механизм OOM. Модель, при которой requests меньше limits, называется burstable QoS, а когда requests равны limits — guaranteed QoS. Кроме того, можно установить квоты ресурсов на namespace (CPU, память, количество запущенных PODов, размер диска persistent volume) и указать требования к resources requests на PODах в namespace с помощью limit ranges. Для управления ресурсами приложений также можно использовать автоскейлеры. В k8s доступны HPA (horizontal pod autoscaler), который регулирует количество PODов в зависимости от потребления CPU и/или памяти, и VPA (vertical pod autoscaler), который управляет resources requests / limits. Существуют также реализации автоскейлеров, которые могут использовать внешние метрики (например, длину очереди), такие как carpenter или KEDA. В облачном окружении можно использовать cluster autoscaler для добавления или удаления нод в зависимости от общей загрузки кластера.
Показать все...
👍 2
Каким образом мы можем управлять размещением PODов на конкретных нодах кластера k8s? Есть несколько вариантов. NodeSelector/node affinity — это механизм, который позволяет запускать PODы на узлах с определенным набором меток. Это может быть полезно, если, например, PODы требуют специфического оборудования, например, у нас есть группа узлов с GPU для задач машинного обучения. Taints/tolerations — это механизм, который позволяет запрещать запуск PODов на узле (taint — описывается на узле), если они не имеют соответствующего разрешения (toleration — описывается на POD'е). Это может быть полезно, если у нас в кластере есть несколько окружений — мы можем выделить узлы для production и с помощью taint запретить запуск PODов тестовых окружений на них. Pod affinity/antiAffinity — это механизм, который позволяет группировать PODы различных приложений на общих узлах (если им важен быстрый сетевой доступ) или, наоборот, заставлять их запускаться на разных узлах (например, для распределения PODов одного приложения по узлам кластера для повышения отказоустойчивости в случае сбоя на узле).
Показать все...
👍 1
Самые полезные каналы для программистов в одной подборке! Сохраняйте себе, чтобы не потерять 💾 🔥Для всех Библиотека программиста — новости, статьи, досуг, фундаментальные темы Книги для программистов IT-мемы Proglib Academy — тут мы рассказываем про обучение и курсы 🤖Про нейросети Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка Библиотека нейротекста | ChatGPT, Gemini, Bing Библиотека нейровидео | Sora AI, Runway ML, дипфейки Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion #️⃣C# Книги для шарпистов | C#, .NET, F# Библиотека шарписта — полезные статьи, новости и обучающие материалы по C# Библиотека задач по C# — код, квизы и тесты Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel ☁️DevOps Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps Вакансии по DevOps & SRE Библиотека задач по DevOps — код, квизы и тесты Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования 🐘PHP Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP Вакансии по PHP, Symfony, Laravel Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по PHP — код, квизы и тесты 🐍Python Библиотека питониста — полезные статьи, новости и обучающие материалы по Python Вакансии по питону, Django, Flask Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Python — код, квизы и тесты ☕Java Книги для джавистов | Java Библиотека джависта — полезные статьи по Java, новости и обучающие материалы Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Java — код, квизы и тесты Вакансии для java-разработчиков 👾Data Science Книги для дата сайентистов | Data Science Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Data Science — код, квизы и тесты Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту 🦫Go Книги для Go разработчиков Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по Go — код, квизы и тесты Вакансии по Go 🧠C++ Книги для C/C++ разработчиков Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++ Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования Библиотека задач по C++ — код, квизы и тесты Вакансии по C++ 💻Другие каналы Библиотека фронтендера Библиотека мобильного разработчика Библиотека хакера Библиотека тестировщика Вакансии по фронтенду, джаваскрипт, React, Angular, Vue Вакансии для мобильных разработчиков Вакансии по QA тестированию InfoSec Jobs — вакансии по информационной безопасности 📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈 Также у нас есть боты: Бот с IT-вакансиями Бот с мероприятиями в сфере IT Мы в других соцсетях: 🔸VK 🔸YouTube 🔸Дзен 🔸Facebook * 🔸Instagram * * Организация Meta запрещена на территории РФ
Показать все...
Каким образом мы можем вывести ноду из работы для обслуживания? Мы можем остановить запуск PODов на узле с помощью команды kubectl cordon и высвободить узел от PODов при помощи команды kubectl drain.
Показать все...
Что такое POD eviction? Этот механизм позволяет удалить ноду от избыточных PODов. Существуют evict'ы по ресурсам (когда нода не имеет достаточно памяти, дискового пространства или PID для процессов) и вызов API - когда мы запускаем kubectl drain node.
Показать все...
Что такое priority classes? Этот механизм в Kubernetes позволяет определить приоритет PODов для наших процессов. Например, если у нас есть продакшн и тестовые окружения в одном кластере Kubernetes, мы можем установить более высокий приоритет для PODов продакшн с помощью priority class. Таким образом, если возникнет нехватка ресурсов на узле, в первую очередь будут удалены PODы тестовых окружений.
Показать все...
👍 1
Допустим, у нас postgresql в кластере k8s, и разработчики просят к ней доступ. Каким образом мы можем решить этот вопрос? В первую очередь, мы можем развернуть в кластере веб-интерфейс для работы с базой данных, например, pgAdmin, и опубликовать его через ingress для разработчиков. Также возможен вариант использования инструмента, который позволит разработчикам получить доступ к кластеру, например, Kubernetes Dashboard или Lens, с возможностью выполнения команд в POD и доступом к базе через утилиту командной строки. Если разработчикам требуется прямой сетевой доступ к базе данных (например, для использования своего любимого инструмента для работы с БД), мы можем создать аккаунт для разработчиков в кластере и использовать kubectl proxy для публикации порта базы данных на локальной машине разработчика. Также можно установить сервер VPN в кластере. В конечном итоге, можно опубликовать базу данных через Kubernetes Service или Ingress, но в этом случае необходимо обеспечить защиту соединения с базой данных (пользователи, доступы) и использовать шифрование протокола.
Показать все...
Какие существуют хорошие практики для создания проб? Испытания должны оценивать работоспособность функционала приложения, используемого для обработки запросов пользователей. Например, если в приложении имеется панель администратора и веб-сайт, необходимо проверить ответ от сайта, который не просто передает простой код ответа, а запускает функцию, использующую механизмы приложения, аналогичные обработке реальных запросов пользователей. Пробы должны быть легкими и не нагружать инфраструктуру приложения, а также не запускаться слишком часто. Им следует избегать проверки функционала, зависящего от внешних сервисов, чтобы избежать каскадных сбоев. Особенно внимательно нужно относиться к liveness-пробам, которые могут вызвать дополнительные проблемы, особенно в периоды высокой нагрузки. Рекомендуется выделить отдельный пул воркеров для прохождения liveness-пробы. Для readiness-пробы лучше создавать сквозные проверки, например, проверять только location nginx, который проксирует php-fpm, одним запросом проверяя оба сервиса.
Показать все...
👍 1
Если нам всё равно нужно описывать Kubernetes service для публикации ingress, то зачем нам ingress? Преимущество использования ingress-контроллера заключается в том, что после его настройки мы можем направлять трафик ко всем нашим приложениям внутри кластера k8s, которые работают по протоколу HTTP и используют маршрутизацию на основе URL/locations, HTTP headers и cookie. Кроме того, при необходимости мы можем использовать несколько ingress-контроллеров в кластере, разделяя их по ingress class.
Показать все...