DevOps | Вопросы собесов
Open in Telegram
Сайт: https://easyoffer.ru/ Все каналы: t.me/+xGeAw6ckJ4liYzQy Контакт для рекламы: @sendme_ads
Show more5 561
Subscribers
-324 hours
-127 days
-230 days
Posts Archive
🤔 Какие есть правила, которые запрещают запускаться какой-либо ноде?
Существует несколько правил и механизмов:
- taints — метки, не позволяющие запускать pod'ы на ноде без соответствующего toleration.
- nodeSelector, nodeAffinity — указывают, на каких нодах pod может или не может работать.
- Ресурсные ограничения — если pod требует больше ресурсов, чем нода может предоставить.
- Зоны доступности (topologySpreadConstraints), политики безопасности (PodSecurityPolicy) тоже могут ограничивать размещение.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Что такое config map в кубере?
ConfigMap в Kubernetes – это механизм хранения конфигурационных данных. Он позволяет разделять код приложения и настройки, храня конфигурацию в виде ключ-значение. ConfigMap удобен для передачи переменных окружения, файлов конфигурации, командных аргументов без изменения образа контейнера.
🚩Основные способы использования ConfigMap
🟠Переменные окружения
передача настроек через ENV.
🟠Файлы конфигурации
монтирование в контейнер как файл.
🟠Параметры командной строки
передача аргументов в
command.
🚩Как создать ConfigMap?
1⃣Создание из манифеста
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
APP_ENV: "production"
LOG_LEVEL: "debug"
CONFIG_FILE: |
[settings]
mode = "production"
debug = true
2⃣Создание из командной строки
kubectl create configmap my-config --from-literal=APP_ENV=production --from-literal=LOG_LEVEL=debug
3⃣Создание из файла
kubectl create configmap my-config --from-file=config.ini
🚩Как использовать ConfigMap в подах?
1⃣Как переменные окружения
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: my-app
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: APP_ENV
2⃣Как монтируемый файл
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: app
image: my-app
volumeMounts:
- name: config-volume
mountPath: "/etc/config"
volumes:
- name: config-volume
configMap:
name: my-config
Ставь 👍 и забирай 📚 Базу знанийГде вести задачи и проекты?
В Битрикс24 ✅
Бесплатный онлайн-сервис для бизнеса и совместной работы.
— Удобный планировщик задач для всей команды с чек-листами и комментариями.
— Популярные проектные методики: канбан, скрам, диаграмма ганта.
— Видеозвонки в один клик из чата.
— Календарь и слоты для совместного планирования.
— Умный ИИ-помощник для постановки четких тз.
Полный комплект для эффективности вашей команды.
Ставьте первую задачу прямо сейчас⚡
Начать
#реклама 16+
task-24.bitrix24.ru
О рекламодателе
🤔 Как обновлять чарты в Helm?
- Обновить значения в values.yaml.
- Выполнить:
- helm upgrade <release-name> <chart-path> -f values.yaml
Или в CI/CD — helm upgrade с актуальными переменными среды.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие метрики стоит снимать с докер контейнеров?
Чтобы мониторить Docker-контейнеры, нужно отслеживать ключевые метрики, которые помогут определить нагрузку, утечки памяти, падения контейнеров и проблемы с сетью.
CPU (Нагрузка на процессор)
Memory (Использование памяти)
Network (Сетевой трафик)
Disk I/O (Диск и файловая система)
Container Lifecycle (Состояние контейнеров)
🟠CPU (Загрузка процессора)
% использования CPU контейнером
% CPU в системе и пользователе
Throttling (ограничение CPU)
docker stats --format "table {{.Name}}\t{{.CPUPerc}}"
Метрика в Prometheus (cadvisor)
rate(container_cpu_usage_seconds_total{name="my-container"}[5m]) * 100
🟠Memory (Использование памяти)
RSS (реальная память, используемая процессами)
Cache (используемая кэшированная память)
OOM (Out of Memory kills)
docker stats --format "table {{.Name}}\t{{.MemUsage}}"
Метрика в Prometheus
container_memory_usage_bytes{name="my-container"}
🟠Network (Сетевой трафик)
Rx/Tx Bytes (входящий и исходящий трафик)
Количество соединений
docker stats --format "table {{.Name}}\t{{.NetIO}}"
Метрика в Prometheus
rate(container_network_transmit_bytes_total{name="my-container"}[5m])
🟠Disk I/O (Чтение/запись на диск)
Количество операций чтения/записи
Объем данных, записанных/прочитанных контейнером
docker stats --format "table {{.Name}}\t{{.BlockIO}}"
Метрика в Prometheus
rate(container_fs_writes_bytes_total{name="my-container"}[5m])
🟠Container Lifecycle (Состояние контейнеров)
Перезапуски контейнера (Restart Count)
Состояние контейнера (Running, Exited, Dead)
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Restarts}}"
Метрика в Prometheus
container_start_time_seconds{name="my-container"}
Ставь 👍 и забирай 📚 Базу знаний🤔 В чём разница в директориях /var и /default?
- /var — стандартная директория Linux для хранения изменяемых данных: логи, спулы, кэш, временные данные;
- /default — не является стандартной и может быть частью прикладных настроек, например, конфигураций по умолчанию в /etc/default/.
Важно не путать её с системными каталогами.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Какие таблицы прописывал в iptables?
В
iptables есть 5 таблиц, но чаще всего работают с тремя:
🟠`filter`
основная таблица для контроля трафика (используется по умолчанию)
🟠`nat`
для трансляции адресов (SNAT, DNAT, редиректы)
🟠`mangle`
для изменения пакетов (маркировка, TTL, QoS)
🟠`raw`
для исключения пакетов из обработки conntrack
🟠`security`
используется в SELinux для меток безопасности
🚩Таблица `filter` (фильтрация пакетов)
Используется для разрешения или блокировки трафика.
iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
🚩Таблица `nat` (трансляция адресов)
Используется для NAT, порт-форвардинга, маскарадинга.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Пример: Проброс порта (DNAT) – входящие пакеты на 80 порт перенаправляем на 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
🚩Таблица `mangle` (изменение пакетов)
Используется для маркировки пакетов, изменения TTL, QoS.
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
Пример: Маркировка пакетов для использования в tc (QoS)
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 1
Ставь 👍 и забирай 📚 Базу знаний7 популярных мифов о Service mesh, которые мешают вам его освоить 🚫
Service mesh окружен заблуждениями, из-за которых многие его боятся внедрять или считают бесполезным:
➖«У него огромный оверхед из-за нагрузки на систему»
➖«Для разработчика это лишнее, пусть DevOps разбираются»
➖«Зачем он нужен, если есть API Gateway?
И многое другое.
Собрали противоречивые утверждения в одном файле и разобрались, где – правда, а где – миф.
📌 Забирайте полезный материал у бота-помощника в один клик.
Запустите рекламу в телеграм-каналах с Яндекс Директом
Перфоманс-реклама теперь в телеграм-каналах ⚡
Яндекс Директ знает, как привлечь целевую аудиторию 💰👌
Попробовать
#реклама
yandex.ru
О рекламодателе
🤔 Какие есть уровни изоляции в SQL?
- READ UNCOMMITTED — видны даже незакоммиченные изменения (опасно).
- READ COMMITTED — читаем только закоммиченные данные (по умолчанию в PostgreSQL).
- REPEATABLE READ — данные не изменяются в рамках транзакции.
- SERIALIZABLE — максимальная защита, как будто операции идут последовательно.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
REKONFA Live
6 ноября приглашаем всех, кто имеет отношение к маркетингу и рекламным технологиям, обсудить рынок, тренды, вызовы и их решения.
С докладами на актуальные темы выступят лидеры индустрии и медийные спикеры.
Принять участие можно офлайн и онлайн. Мероприятие бесплатное, нужно только зарегистрироваться.
Зарегистрироваться
#реклама 18+
ya.rekonfa.ru
О рекламодателе
🤔 Удалил файлы, но место не очищается, в чем дело?
Если вы удалили файлы, но место на диске не освободилось, это может происходить по нескольким причинам.
🚩Файл все еще используется процессом
Если файл удален, но он открыт каким-либо процессом, его содержимое остается в памяти или файловой системе до завершения работы этого процесса. Это называется "удаление с дескриптором".
🟠Как проверить:
Используйте команду
lsof (list open files), чтобы найти процессы, удерживающие файл
lsof | grep deleted
🟠Как исправить
Перезапустите процесс или завершите его с помощью kill:
kill -9 <PID>
🚩Файл удален, но он находился в другом файловом пространстве
Например:
- Файл был удален внутри Docker-контейнера, но место занято в образе.
- Файл находился на смонтированном диске, и удаление произошло в другом контексте.
🟠Как проверить
Убедитесь, что вы работаете в правильной файловой системе:
df -h
🟠Как исправить
Убедитесь, что удаление происходит в нужной директории или файловой системе.
🚩Файл был удален из директории, но находится в другой ссылке (hard link)
Если файл имеет несколько жестких ссылок, удаление одного из них не освободит место до тех пор, пока не удалены все ссылки.
🟠Как проверить
Используйте команду find, чтобы найти оставшиеся ссылки:
find / -samefile <имя_файла>
🟠Как исправить
Удалите все ссылки на файл.
🚩Файл был удален, но находился в файловой системе с квотой
Если используется файловая система с ограничением (например, квоты пользователей или групп), возможно, квота пользователя исчерпана, и это мешает очистке.
🟠Как проверить
Проверьте квоты:
quota -u <username>
🟠Как исправить
Убедитесь, что квоты настроены правильно, или освободите больше места.
🚩Кэшированные данные или временные файлы
Иногда удаленные файлы остаются в виде кэша, временных данных или не удаляются из корзины.
🟠Как проверить
Очистите кэш или проверьте корзину. Например, для очистки временных файлов
sudo du -sh /tmp
sudo rm -rf /tmp/*
🟠Как исправить
Удалите временные файлы, очистите кэш:
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
Ставь 👍 и забирай 📚 Базу знанийБесплатный курс по дизайну: веб, графический и UX/UI
Получи востребованные навыки:
- создание дизайна сайтов и приложений
- создание инфографики и карточек для маркетплейсов
- работа в графическом редакторе Figma и др.
Студенты курса в среднем зарабатывают от 68 000 ₽ уже во время обучения💰
Зарегистрироваться
#реклама 16+
ydaev.ru
О рекламодателе
🤔 Есть приложение, мы его запускаем, и оно завершается с кодом, не равным 0. Как его подебажить?
1. Посмотреть exit code — может указать тип ошибки.
2. Проверить логи приложения.
3. Добавить логирование и вывод ошибок в консоль.
4. Запустить через strace или gdb.
5. Проверить зависимости, переменные окружения, права на доступ.
Ненулевой код означает ошибку исполнения — важно найти её источник.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Курс "Дизайн карточек для WB и Ozon". Бесплатно и с нуля
Дизайнер карточек для маркетплейсов — востребованная и доходная профессия 💰
Научись ей бесплатно!
- Бесплатный доступ
- Разбор ДЗ от наставника
- Мощные кейсы в портфолио
Узнать больше
#реклама 16+
yudaevschool24.online
О рекламодателе
🤔 Что внутри директории Linux: /proc?
Это виртуальная файловая система, предоставляющая доступ к информации о процессах и системе в реальном времени. Она не занимает место на диске, так как данные в ней формируются ядром Linux динамически. Эта файловая система называется procfs (процессная файловая система).
🚩Основное назначение `/proc`
Предоставляет информацию о запущенных процессах, ресурсах системы и конфигурации ядра. Позволяет взаимодействовать с ядром, изменять параметры системы и получать данные о состоянии процессов.
🚩Ключевые элементы внутри `/proc`
🟠Каталоги с идентификаторами процессов (`/proc/[PID]`)
Каждый процесс в системе имеет каталог в
/proc, название которого соответствует его PID (Process ID). В этих каталогах содержится информация о конкретном процессе:
/proc/[PID]/cmdline: Команда, запустившая процесс.
/proc/[PID]/cwd: Символическая ссылка на текущую рабочую директорию процесса.
/proc/[PID]/exe: Символическая ссылка на исполняемый файл процесса.
/proc/[PID]/fd: Директория с открытыми файловыми дескрипторами.
/proc/[PID]/status: Детализированная информация о состоянии процесса (UID, GID, память и т.д.).
🟠Файлы системы
/proc/cpuinfo
Информация о процессоре (модель, частота, количество ядер).
cat /proc/cpuinfo
/proc/meminfo
Информация о памяти (доступная память, кэш, использованная память).
cat /proc/meminfo
/proc/diskstats: Статистика ввода-вывода для дисков.
/proc/uptime: Время работы системы с момента загрузки.
/proc/loadavg: Средняя нагрузка на систему за последние 1, 5 и 15 минут.
🟠Конфигурационные файлы ядра
/proc/sys: Содержит настраиваемые параметры ядра. Например, можно изменить значение максимального количества открытых файлов:
echo 100000 > /proc/sys/fs/file-max
Некоторые популярные настройки
/proc/sys/net/ipv4/ip_forward: Управление пересылкой IPv4-пакетов.
/proc/sys/kernel/pid_max: Максимальный PID, который может быть назначен процессу.
🟠Сетевые интерфейсы
/proc/net:
Информация о сетевых соединениях и интерфейсах.
Примеры:
/proc/net/dev: Статистика сетевых интерфейсов.
/proc/net/tcp: Состояние TCP-соединений.
🟠Информация об устройствах
/proc/devices: Список всех зарегистрированных устройств (символьных и блочных).
/proc/partitions: Информация о разделах жесткого диска.
Ставь 👍 и забирай 📚 Базу знаний🤔 Почему плохо запускать контейнер от рута в Kubernetes?
- Повышенный риск эксплойта и компрометации хоста;
- Нарушение принципов наименьших привилегий;
- Некоторые security policies запрещают root-контейнеры;
- Контейнер может получить доступ к host namespace и ресурсам.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Как задать права на всё?
В Linux права доступа к файлам и папкам регулируются с помощью команд
chmod и chown.
🟠Назначение всех прав (777)
Если вам нужно дать полный доступ ко всем файлам и папкам, используйте
chmod -R 777 /путь/к/папке
-R (recursive) — применяет права ко всем вложенным файлам и каталогам.
777 означает:
7 (чтение, запись, выполнение) для владельца
7 (чтение, запись, выполнение) для группы
7 (чтение, запись, выполнение) для всех остальных
🟠Передача владения (если нет прав)
Если текущий пользователь не владеет файлами, назначьте нового владельца
chown -R username:group /путь/к/папке
username — новый владелец
group — новая группа
🟠Лучший вариант — более безопасные права
Вместо 777 лучше дать только нужные права:
Для исполняемых файлов: chmod 755
Для конфигураций и данных: chmod 644
Для приватных ключей и чувствительных файлов: chmod 600
Ставь 👍 и забирай 📚 Базу знаний🤔 Что означает команда ping ::1?
Эта команда выполняет ping на локальный IPv6-адрес, аналог IPv4 127.0.0.1. ::1 — это loopback-адрес в IPv6, используемый для проверки работы стека IPv6 на устройстве.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
🤔 Когда выполняются пробы?
Пробы выполняются для оценки и проверки возможностей, навыков или функций, обычно в контексте экспериментов, тестирования или практических заданий. Это может касаться научных экспериментов, технических испытаний или проверок навыков в различных сферах, например, на актерских или рабочих прослушиваниях.
🚩Существует три основных типа:
🟠Liveness Probe (Проверка жизнеспособности)
Liveness Probe проверяет, работает ли контейнер. Если проверка liveness не удалась, Kubernetes перезапускает контейнер.
🟠Readiness Probe (Проверка готовности)
Readiness Probe проверяет, готов ли контейнер обслуживать запросы. Если проверка readiness не удалась, под будет исключен из службы (service) и не будет получать трафик.
🟠Startup Probe (Проверка при запуске)
Startup Probe проверяет, что контейнер успешно запустился. Если проверка startup не удалась, Kubernetes считает, что контейнер не может запуститься, и перезапускает его.
🚩Когда они выполняются:
🟠Периодически в течение жизни контейнера, начиная после заданного периода
initialDelaySeconds. Используется для проверки состояния контейнеров, которые могут войти в неопределенное состояние и требуют перезапуска для восстановления работоспособности.
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3
🟠Периодически в течение жизни контейнера, начиная после заданного периода initialDelaySeconds. Используется для проверки готовности контейнеров, которые могут быть временно не готовы обслуживать трафик, например, во время загрузки данных или выполнения миграций.
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 3
periodSeconds: 3
failureThreshold: 3
🟠В начале жизни контейнера, начиная с момента запуска и до тех пор, пока проверка не будет успешной или пока не истечет заданное время. Используется для контейнеров, которые могут долго запускаться, что предотвращает преждевременные сбои liveness и readiness проб.
startupProbe:
httpGet:
path: /startup
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
failureThreshold: 30
🚩Механизмы
🟠HTTP GET:
Проверка выполняется путем отправки HTTP GET запроса к контейнеру.
httpGet:
path: /healthz
port: 8080
🟠TCP Socket:
Проверка выполняется путем установления TCP-соединения с контейнером.
tcpSocket:
port: 8080
🟠Exec:
Проверка выполняется путем выполнения команды внутри контейнера.
exec:
command:
- cat
- /tmp/healthy
Ставь 👍 и забирай 📚 Базу знаний