DevOps | Вопросы собесов
5.19K subscribers
31 photos
816 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Чем бэкапить кластер?

- Velero — стандартный инструмент бэкапа Kubernetes:
- Бэкап объектов + PVC.
- Поддержка S3/MinIO.
- Etcdctl snapshot — если бэкапить etcd вручную.
- Kasten K10, Trilio, Stash — коммерческие и open-source альтернативы.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5
🤔 При попытке создания файла на диске на linux ошибка что места нет проверяете место есть с чем это может быть связано

Если при создании файла в Linux появляется ошибка, что места нет, но df -h показывает свободное место, проблема может быть в следующем:

🚩Закончились inodes

Inodes – это структуры, которые хранят метаданные о файлах. Даже если есть свободное место, но inodes кончились, новые файлы создать нельзя.
df -i


Найти каталоги с множеством маленьких файлов:

  find /path -xdev -type f | wc -l  # Количество файлов в каталоге


🚩Ограничение дискового квотирования (quota)

В системе могут быть настроены дисковые квоты, которые ограничивают использование диска для пользователя или группы.
quota -v


🚩Заполнен раздел `/var`, `/tmp` или `/home`

В системе может быть несколько дисковых разделов (/, /var, /home и т. д.). Если один из них заполнен, в него нельзя записывать файлы.
df -hT


🚩Файловая система смонтирована в режиме `read-only`

Если файловая система перешла в режим «только для чтения» (read-only) из-за ошибки или сбоя, запись на неё невозможна.
mount | grep ' ro,'


Если файловая система смонтирована с `ro`, значит, запись запрещена. Перемонтировать диск:

  mount -o remount,rw /path


Проверить диск на ошибки:

  dmesg | tail -20  # Лог ошибок
fsck /dev/sdX # Проверка диска


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Какие таблицы прописывал в iptables?

В iptables есть несколько таблиц, каждая отвечает за свою цель:
- filter — основная таблица для разрешения/запрета трафика.
- nat — используется для трансляции адресов (SNAT, DNAT, маскарадинг).
- mangle — модификация пакетов (TTL, приоритет и т.п.).
- raw — используется для исключения пакетов из connection tracking.
- security — дополнительная таблица для меток SELinux (редко используется).
Наиболее часто используются filter и nat.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊2🔥1
🤔 Что за протокол http, зачем он нужен?

HTTP (HyperText Transfer Protocol) — это протокол передачи данных в интернете. Он используется для обмена данными между клиентом (браузером) и сервером.

🚩Пример работы HTTP

Браузер отправляет запрос → "GET /index.html HTTP/1.1".
Сервер отвечает → HTML-страницей (200 OK).
Браузер отображает страницу.

🚩Основные принципы HTTP

Клиент-серверная модель → браузер запрашивает, сервер отвечает.
Без состояния (stateless) → каждый запрос независим (нет сессий).
Текстовый протокол → данные передаются в читаемом формате.

🚩Структура HTTP-запроса

Пример запроса от браузера к серверу
GET /index.html HTTP/1.1  
Host: example.com
User-Agent: Mozilla/5.0


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Как узнать IP-адрес какого-нибудь сайта?

Используйте команду nslookup <домен> или dig <домен> для получения IP-адреса через DNS. Также можно использовать ping <домен> для получения IP-адреса, к которому идёт запрос.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6💊3🔥1
🤔 Какие процессы убивает long killer?

Это системный механизм в Astra Linux (и некоторых других дистрибутивах на базе Debian), который убивает "долгоиграющие" процессы, потребляющие слишком много ресурсов. Он предотвращает зависания системы и защищает от неэффективного использования вычислительных мощностей.

🚩Какие процессы убивает Long Killer?

Long Killer анализирует процессы и завершает те, которые:
Запущены от обычного пользователя (не root).
Работают слишком долго (по умолчанию >10 минут).
Потребляют много CPU (по умолчанию >90% CPU).
Используют много памяти (если система близка к OOM – Out of Memory).
Не имеют активности (зависли, например, ожидание ввода).

Он не убивает root-процессы.
Системные службы (например, sshd, systemd) остаются нетронутыми.
Если процесс выполняется интерактивно (например, работа в vim или nano), он обычно не трогает его.

🚩Как проверить, что процесс убит Long Killer?

Если подозреваете, что ваш процесс завершился из-за Long Killer, посмотрите логи
journalctl -u long-killer.service --no-pager | tail -n 20


Также можно проверить dmesg
dmesg | grep "killed by Long Killer"


🚩Как отключить или настроить Long Killer?

Файл конфигурации находится здесь
/etc/long-killer.conf


Пример настроек
MAX_CPU_USAGE=90     # Максимальная загрузка CPU (%)
MAX_EXEC_TIME=600 # Максимальное время выполнения (секунды)
EXCLUDE_USERS=root # Не убивать процессы от root


После изменения перезапустите сервис
systemctl restart long-killer.service


Чтобы полностью отключить Long Killer
systemctl stop long-killer.service
systemctl disable long-killer.service


🚩Как избежать убийства процессов?

Запуск от root (если это безопасно):
sudo my_long_process

Снижение приоритета процесса (nice/renice)
nice -n 10 my_process
renice -n 10 -p <PID>

Использование nohup или screen для фоновых задач
nohup my_script.sh &


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
🤔 Как примонтировать диск?

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


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1💊23👍3
🤔 Как в линуксе посмотреть список дескрипторов файлов?

В Linux список дескрипторов файлов можно посмотреть, используя утилиты и команды, которые позволяют работать с процессами и их открытыми файлами. Основным методом является использование файловой системы /proc, которая содержит информацию о процессах, включая их открытые файловые дескрипторы.

🚩Основные способы

🟠Команда `ls` в каталоге `/proc/[PID]/fd`
Каждый процесс в Linux имеет свой подкаталог в /proc с идентификатором процесса (PID). В подкаталоге fd хранятся ссылки на открытые дескрипторы файлов.
ls -l /proc/$(pidof <имя_процесса>)/fd


Вывод
lrwx------ 1 user user 64 Dec 23 12:00 0 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 1 -> /dev/pts/0
lrwx------ 1 user user 64 Dec 23 12:00 2 -> /dev/pts/0


🟠Использование `lsof`
Команда lsof (list open files) отображает список всех открытых файлов в системе.
lsof -p <PID>


Пример для всех процессов
lsof


Вывод
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash 1234 user cwd DIR 8,1 4096 256 /home/user
bash 1234 user rtd DIR 8,1 4096 2 /
bash 1234 user 0u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 1u CHR 136,0 0 3 /dev/pts/0
bash 1234 user 2u CHR 136,0 0 3 /dev/pts/0


🟠Использование `lsfd`
Утилита lsfd (из пакета util-linux) удобна для просмотра файловых дескрипторов.
lsfd


Вывод
PID    FD TTY      TYPE      DEVICE SIZE/OFF   NODE NAME
1234 0 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 1 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0
1234 2 /dev/pts/0 CHR 136,0 0 3 /dev/pts/0


🚩Полезные флаги и фильтрация

Список дескрипторов определенного пользователя:
lsof -u <имя_пользователя>


Список файлов определенного типа (например, сокеты):
lsof -i


Фильтрация по определенному файлу или устройству:
lsof /path/to/file


🚩Почему важно знать про дескрипторы?

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

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3
🤔 RDS Aurora: автоскейлинг — базовая функция?

Нет, не включён по умолчанию. Нужно:
- Активировать Aurora Auto Scaling;
- Настроить CloudWatch alarms;
- Привязать к read-replicas или write-секциям.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
🤔 Как linux выбирает, какой из процессов завершить?

Она использует механизм, известный как OOM Killer (убийца процессов при нехватке памяти), для завершения процессов с целью освобождения памяти. Выбор процесса для завершения базируется на ряде критериев, чтобы минимизировать влияние на работу системы.

🚩Как работает OOM Killer?

🟠Очки OOM (OOM Score)
Каждому процессу присваиваются очки OOM, которые рассчитываются на основе нескольких факторов, таких как: Объем памяти, используемой процессом. Приоритет процесса. Важность процесса для системы (например, системные демоны имеют более низкие очки).

🟠Формула расчета OOM Score
Основной фактор при расчете очков - это объем потребляемой процессом памяти. Чем больше памяти потребляет процесс, тем выше его OOM Score. Операционная система также учитывает приоритет процесса (nice value) и некоторые другие параметры.

🟠Принудительное завершение
Процесс с наибольшим OOM Score считается наименее критичным для системы и завершается первым.

🚩Пример расчета OOM Score

🟠Вот пример того, как может быть рассчитан OOM Score (упрощенный)
Процесс A использует 1 ГБ памяти.
Процесс B использует 2 ГБ памяти.
Процесс C использует 500 МБ памяти, но это критический системный процесс.
🟠OOM Score для этих процессов может выглядеть так
Процесс A: 300
Процесс B: 600
Процесс C: 100 (низкий, так как процесс критический)

🚩Настройка OOM Killer

Администраторы могут влиять на работу OOM Killer, настраивая параметры OOM Score для конкретных процессов с помощью файлов в каталоге /proc. Например, для изменения приоритета процесса:
echo -1000 > /proc/<PID>/oom_score_adj


🚩Логирование и мониторинг

При срабатывании OOM Killer соответствующие сообщения записываются в системный журнал (обычно /var/log/syslog или /var/log/messages), что позволяет администраторам анализировать причины и предпринимать меры по предотвращению в будущем.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍2
🤔 Как установить Node.js на Astra Linux?

1. Добавить репозиторий nodesource:
2. curl -fsSL
https://deb.nodesource.com/setup_18.x | sudo -E bash -
3. Установить Node.js:
4. sudo apt install -y nodejs
5. Проверить версию:
6. node -v
7. npm -v
Если Astra использует жёсткое разделение уровней доступа (например, в SE версии), может потребоваться временно изменить политику безопасности или установить из исходников.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊14🔥2🤔1
🤔 Как посмотреть размер папки на диске?

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

🚩Windows

🟠Использование проводника (Explorer)
Откройте Проводник Windows.
Наведите на папку, размер которой вы хотите узнать.
Кликните правой кнопкой мыши и выберите "Свойства".
В открывшемся окне "Свойства" вы увидите размер папки в разделе "Размер".

🟠Использование командной строки
Откройте командную строку (Cmd) или PowerShell.
Введите следующую команду, заменив ПутьКПапке на путь к интересующей вас папке:
du -sh ПутьКПапке   


Для PowerShell можно использовать
      Get-ChildItem ПутьКПапке -Recurse | Measure-Object -Property Length -Sum


🚩macOS и Linux

Использование терминала
Откройте терминал.
Введите команду du, чтобы узнать размер папки. Вот пример команды, которая показывает размер папки в читаемом виде (суммарный размер всех файлов)
du -sh /путь/к/папке


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Какие стейджи входят в пайп (CI/CD pipeline)?

Обычно pipeline в GitLab CI включает следующие стадии:
- build — сборка приложения или зависимостей
- test — выполнение unit/integration тестов
- lint/code-quality — проверка качества кода
- package — упаковка приложения в артефакт (например, Docker-образ)
- deploy — развёртывание на окружение
- cleanup — удаление временных файлов, очистка после деплоя
Конкретные стейджи зависят от проекта, но выше — наиболее распространённый порядок.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥9👍4
🤔 Как версионируете чарты?

Helm-чарты должны быть версионированы, чтобы отслеживать изменения и управлять развертываниями.

Версии чарта (Chart.yaml)
Версии приложения (appVersion)
Репозиторий Helm (helm repo)
Git-теги и CI/CD

🚩Версия чарта (`Chart.yaml`)

Каждый Helm-чарт содержит Chart.yaml, где указывается версия чарта.
yaml  
apiVersion: v2
name: my-app
description: Helm chart for my application
version: 1.2.3
appVersion: 2.0.1


🚩Хранение и обновление чарта в репозитории Helm

Helm-чарты можно хранить в локальном или удаленном репозитории.
sh  
helm package my-chart/


Обновить индекс в репозитории
sh  
helm repo index .


Добавить новый чарт в Helm-репозиторий
sh  
helm repo add my-repo https://charts.example.com
helm push my-app-1.2.3.tgz my-repo


🚩Автоматическое версионирование через Git и CI/CD

Обычно чарты хранятся в Git, и версии обновляются автоматически через CI/CD.

Пример автоматического увеличения версии (version) в Chart.yaml через helm/chart-releaser-action
yaml  
name: Release Helm Chart

on:
push:
tags:
- 'v*'

jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3

- name: Set up Helm
uses: azure/setup-helm@v3
with:
version: 'latest'

- name: Package Helm Chart
run: helm package my-chart/

- name: Upload to Helm Repo
uses: helm/chart-releaser-action@v1


🚩Как установить конкретную версию чарта?

Чтобы развернуть определенную версию Helm-чарта, указываем --version
sh  
helm install my-app my-repo/my-app --version 1.2.3

Или обновить до новой версии:
sh  
helm upgrade my-app my-repo/my-app --version 1.2.4


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍3
🤔 Что такое shared memory и зачем она?

Разделяемая память (/dev/shm, shmget, mmap) — используется для IPC между процессами.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2💊1
🤔 Что такое cherry pick?

Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.

🚩Когда используется

🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям, cherry-pick позволяет аккуратно перенести только нужные коммиты.

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

🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick коммита
git cherry-pick <commit-hash>


🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>


🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>


🚩Разрешение конфликтов

1⃣Разрешите конфликты в файлах.

2⃣Добавьте изменения в индекс
git add <filename>   


3⃣Завершите процесс cherry-pick
git cherry-pick --continue   


🚩Прерывание

Если вы хотите прервать процесс cherry-pick, можно использовать команду
git cherry-pick --abort


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Как можно увеличить скорость чтения по большой таблице?

- Использовать индексы на полях фильтрации.
- Денормализация или кэширование популярных данных.
- Разбивка на шарды или партиции.
- Чтение batch-ами, а не всё сразу.
- Оптимизация запросов, EXPLAIN PLAN.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🤔 Зачем нужны теги в Ansible?

Теги в Ansible позволяют запускать только определенные задачи или роли, а не весь плейбук. Это ускоряет выполнение и упрощает управление конфигурацией.

🚩Когда использовать теги?

🟠Запуск только нужных задач
если плейбук содержит много шагов, можно выполнить только нужные.
🟠Разделение задач по категориям
например, отдельно установка, обновление, настройка сервиса.
🟠Оптимизация CI/CD
ускорение развертывания, выполняя только измененные задачи.

🚩Как использовать теги?

🟠Теги в задачах (`tasks`)
Простой пример – установка и перезапуск Nginx
yaml  
- name: Установить Nginx
apt:
name: nginx
state: present
tags: install

- name: Перезапустить Nginx
service:
name: nginx
state: restarted
tags: restart



Запуск только установки (install)
sh  
ansible-playbook playbook.yml --tags install



Запуск только перезапуска (restart)
sh  
ansible-playbook playbook.yml --tags restart



🟠Теги в ролях (`roles`)
Если у вас несколько ролей, можно запускать только нужную:
yaml  
- hosts: all
roles:
- { role: nginx, tags: web }
- { role: database, tags: db }



Запуск только роли database
sh  
ansible-playbook playbook.yml --tags db



🟠Исключение тегов (`--skip-tags`)
Можно пропустить выполнение определенных задач
sh  
ansible-playbook playbook.yml --skip-tags restart


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Как проверять merge request в бесплатном GitLab?

- Использовать pipelines only for MRs:
- only:
- merge_requests
- Включить проверки на наличие:
- mr.labels, mr.title, mr.assignee.
- Автоматизировать через .gitlab-ci.yml с rules и only.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊8
🤔 Что такое SLA, SLO, SLI?

Эти три термина относятся к управлению надежностью и качеством IT-сервисов. Они помогают определить, измерить и гарантировать уровень обслуживания пользователей.

🚩SLI (Service Level Indicator) – Показатель уровня сервиса

SLI – это метрика, которая показывает, насколько хорошо работает сервис.
- Доступность (например, uptime 99.9%)
- Время ответа API (например, менее 200 мс)
- Ошибки запросов (например, не более 1% 5xx ошибок)

🚩SLO (Service Level Objective) – Целевой уровень сервиса

SLO – это цель, которую компания ставит для SLI.
Доступность 99.9% сервиса в месяц.
Среднее время ответа API ≤ 200 мс.

🚩SLA (Service Level Agreement) – Соглашение об уровне сервиса

SLA – это официальное соглашение между клиентом и провайдером сервиса, которое описывает обязательства и штрафы за их невыполнение.
- Если доступность меньше 99.9%, клиент получает возврат денег.
- Если среднее время ответа API больше 500 мс, клиент получает скидку.

🚩Как они связаны?

SLI (метрика) → измеряет, насколько хорош сервис.
SLO (цель) → устанавливает, каким должен быть сервис.
SLA (договор) → фиксирует обязательства и штрафы.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4