Библиотека задач по DevOps | тесты, код, задания
2.87K subscribers
115 photos
3 videos
2 files
150 links
Задачи и тесты по DevOps для тренировки и обучения.

По рекламе: @proglib_adv

Наши каналы: https://yangx.top/proglibrary/9197

Учиться у нас: https://proglib.io/w/2b07c285

Работать у нас: https://job.proglib.io/
加入频道
Какой тип базы данных использует Prometheus?

Prometheus использует TSDB (time series database).
Как посмотреть нагрузку на диски?

Установить утилиту sysstat, проверить нагрузку на диски iostat -xtc.
Чем tag отличается от branch?

И
tag и branch представляют собой указатели на коммиты.

Ветка представляет собой отдельный поток разработки, который может выполняться одновременно с другими разработками в той же кодовой базе. Коммит в ветке указывает на изменения, которые добавляются в новых коммитах
Тег представляет собой версию определенной ветки в определенный момент времени.
Tag представляет собой версию той или иной ветки в определенный момент времени. Branch представляет собой отдельный поток разработки, который может выполнятся одновременно с другими разработками в той же кодовой базе.
В каких случаях не отработает перенос пода на другую ноду?

Если на другой ноде нет ресурсов для размещения пода или нет сетевой доступности до ноды.
В конфиге nginx некоторого проекта есть два десятка различных location, которые делятся на три базовых типа - memcache, dynamic, static. Лог проекта единый, но для анализа требуется различать записи в логе каким-либо способом. По именам файлов тип location различить нельзя, разделить на три лога также нельзя. Предложите решение.

Использовать вывод в syslog и определить tag. Например:
location /memcache {
access_log syslog:server=unix:/dev/log,tag=nginx_memcache;
error_log syslog:server=unix:/dev/log,tag=nginx_memcache;
}

location /dynamic {
access_log syslog:server=unix:/dev/log,tag=nginx_dynamic;
error_log syslog:server=unix:/dev/log,tag=nginx_dynamic;
}
/static - соответственно. Вывод в определенный файл syslog можно указать опцией :syslogtag
Для чего нужен terragrunt?

Terragrunt — это обертка для Terraform, позволяющая решать проблемы, связанные с масштабированием и переиспользованием кода для настройки инфраструктуры. Он позволяет повторно использовать конфигурационные параметры и поддерживает многоуровневые конфигурации и зависимости.
Что находится на master ноде?

Kube
-apiserver отвечает за оркестрацию всех операций кластера.
Controller-manager (Node controller + Replication Controller) Controller отвечает за функции контроля за нодами, репликами.
ETCD cluster (распределенное хранилище ключ-значение) ETCD хранит информацию о кластере и его конфигурацию.
Kube-sheduler отвечает за планирование приложений и контейнеров на нодах.

По-умолчанию на master ноде не размещаются контейнеры приложений, но данный фунционал возможно настроить.
Что такое роль в Ansible? Что содержит в себе Ansible роль?

Ansible роль представляет собой структурированный плейбук, содержащий, как минимум, набор задач (tasks) и дополнительно — обработчики событий (handlers), переменных (default и vars), файлов (files), шаблонов (templates), описание и зависимости (metadata) и тесты (tests).
Чем отличается COPY от ADD в Dockerfile?

Инструкция COPY копируют файлы и директории с хостовой машины внутрь контейнера, инструкция ADD копирует файлы и директории с хостовой машины внутрь контейнера и может распаковывать .tar архивы.
Что находится на worker ноде?

Kubelet слушает инструкции от kube-apiserver и разворачивает или удаляет контейнеры на нодах.
Kube-proxy отвечает за взаимодействие между сервисами на разных нодах кластера.

На worker нодах по-умолчанию размещаются контейнеры приложений. На каждой ноде кластера устанавливается Docker или другая платформа контейнеризации (например RKT или containterd). На Master ноде также устанавливается Docker, если необходимо использовать компоненты Kubernetes в контейнерах.
Необходимо проходить по списку URL'ов и проверять их доступность. Условия:
Список URL'ов находится в файле /urls.txt;
Доступный URL - значит код ответа не 5XX или 4XX;
Проверка должна быть оформлена в виде функции bash, которая должна вызываться внутри скрипта;
Функция должна принимать в качестве входного параметра путь к файлу с URL'ами;
При любом ответе недоступности от сервиса - прерывать дальнейшую проверку. Временное ограничение 20 мин.

Скрипт проверки. Запускать ./script.sh <путь до файла с URLs>

#!/usr/bin/env bash

set -xueo pipefail

FILE_URLS=${1:-}
if [[ -z "${FILE_URLS}" ]]; then
echo "File with URLs list do not defined."
exit 1
fi

function checkUrls() {
local URLS=$1
for URL in $(cat $URLS); do
STATUS=curl -LI "${URL}" -o /dev/null -w '%{http_code}' -s
if [[ "${STATUS}" == "500" ]] || [[ "${STATUS}" == "400" ]]; then
echo "URL ${URL} unavailable!"
exit 1
else
echo "URL ${URL} available."
fi
done
}

checkUrls "${FILE_URLS}"
Что выполняет конструкция extends: .plan в gitlab CI?

extends используется для повторного использования секции пайплайна (аналог фунции). .plan указывает на имя повторяемой секции в пайплайне. Первым в шаге выполняется скрипт из extends.
Как установить Kubernetes?

1. Следовать инструкции установки kubeadm.

2. Установка с использованием kubespray.
Почему DaemonSet не нужен scheduler?

DaemonSet гарантирует, что определенный под будет запущен на всех нодах кластера. При наличии DaemonSet в кластере на любой из существующих и будущих нод в кластере зарезервированы ресурсы для пода на ноде.

Здесь стоит сделать оговорку насчет того, что DaemonSet может работать не на всех нодах кластера, а на некоторых, выбранных, например, по nodeSelector. К примеру, у нас есть GPU ноды и нам нужно на все эти ноды задеплоить микросервис выполняющий вычисления на GPU.
Администратор выполняет команду kubectl apply -f deployment.yaml. Опишите по порядку что происходит в каждом из узлов Kubernetes и в каком порядке.

Клиент kubectl обращается к мастер-серверу kube-apiserver (стандартно на порт 6443), адрес мастер сервер задан в .config файле. В запросе передаётся информация, которую нужно применить в кластере обращения. API-сервер обращается к etcd хранилищу, проверяет наличие конфигурации запрашиваемого ресурса. Если конфигурация в хранилище etcd есть, то API-сервер сравнивает новую конфигурацию с конфигурацией в базе данных: если конфигурация одинаковая, то изменений в кластере не происходит, клиенту отдается ответ об успешности запрашиваемого действия, если конфигурации нет в etcd, то если требуемое действие касается создания сущностей, которые требуют ресурсов кластера (создания подов, хранилища pv/pvc и т.д.), scheduler проверяет возможность размещения подов на нодах и после чего происходит создание подов, при этом controll-manager контроллирует создание нужного поличества реклик сущности. После создания трубуемой сущности, происходит запись в etcd, controll-manager продолжает отслеживать состояние сущностей на протяжении всего цикла его жизни.
Чем отличается StatefulSet от Deployment?

Deployment — ресурс Kubernetes предназнваенный для развертывания приложения без сохранения состояния. При использовании PVC все реплики будут использовать один и тот же том, и ни один из них не будет иметь собственного состояния.

StatefulSet — поддерживают состояние приложений за пределами жизненного цикла отдельных модулей pod, например для хранилища. Используется для приложений с отслеживанием состояния, каждая реплика модуля будет иметь собственное состояние и будет использовать свой собственный том.
В чем разница между DevOps и Agile?

Agile — это набор ценностей и принципов в отношении производственных методов, таких как разработка ПО. Например, если у кого-то есть идея и он хочет преобразовать концепцию в практическое программное обеспечение, он может использовать ценности и принципы Agile для достижения этой цели. Однако программное обеспечение может работать только на компьютере разработчика или в тестовой среде. Чтобы легко и быстро перенести ПО в производственную инфраструктуру безопасным и простым способом, им потребуются инструменты и методы DevOps.
Поговорим о сервере логов Nagios.

Целью сервера логов Nagios является упрощение поиска данных логов. Таким образом, он лучше всего подходит для таких задач, как настройка оповещений, уведомлений о потенциальных угрозах, запрос данных логов и быстрый аудит системы. Использование сервера логов Nagios позволяет разместить все данные логов в одном месте с высокой доступностью.