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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Что такое ключ в таблице?

Ключ — это уникальный идентификатор строки в таблице БД.
- Первичный ключ (PRIMARY KEY) — уникален, не NULL.
- Используется для поиска, индексации и ссылок (внешних ключей). Пример: id клиента, номер счёта.


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

Init-контейнеры (init containers) – это специальные контейнеры в поде, которые запускаются перед основным приложением. Они выполняют подготовительные задачи, а затем завершаются.

🚩Основные сценарии использования Init-контейнеров

🟠Подготовка окружения
Создание директорий, загрузка конфигураций или файлов перед запуском основного контейнера.
🟠Ожидание зависимостей
Проверка доступности БД, API или других сервисов перед запуском приложения.
🟠Миграции БД
Выполнение migrations перед стартом веб-приложения.
🟠Проверка и валидация данных
Убеждаемся, что все файлы и настройки корректны.

🚩Как работают Init-контейнеры?

Запускаются последовательно (поочередно).
Должны завершиться успешно, иначе весь под не стартует.
Не перезапускаются после завершения.
Не делят volume'ы с основным контейнером (могут передавать данные через shared volumes).

🚩Пример: Init-контейнер, проверяющий доступность БД

apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
containers:
- name: main-app
image: my-app:latest
ports:
- containerPort: 8080
initContainers:
- name: wait-for-db
image: busybox
command: ['sh', '-c', 'until nc -z db-service 5432; do echo waiting for DB; sleep 2; done;']


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

Автоскалирование — это механизм, при котором Kubernetes автоматически увеличивает или уменьшает количество подов в зависимости от нагрузки (CPU, память, запросы и др.).
Варианты:
- Horizontal Pod Autoscaler (HPA) — масштабирует количество подов.
- Vertical Pod Autoscaler (VPA) — меняет ресурсы пода.
- Cluster Autoscaler — масштабирует сами узлы в облаке.


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

Security-тестирование – это процесс проверки системы на уязвимости, угрозы и риски атак. Оно помогает защитить данные и сервисы от хакеров.

🚩Сканеры уязвимостей (Nessus, OpenVAS)

- Загружают базу известных уязвимостей (CVE).
- Проверяют систему на наличие этих уязвимостей.
- Используют сигнатурный анализ (по шаблонам) и эвристический анализ (поведенческий).

🚩SQL-инъекции (SQLmap, Burp Suite)

- Автоматически подставляют вредоносные SQL-запросы (' OR 1=1 --).
- Проверяют, есть ли доступ к базе данных.
- Выполняют дамп данных, если нашли уязвимость.
SELECT * FROM users WHERE username = 'admin' --' AND password = 'password'


🚩Поиск XSS-уязвимостей (DOM-XSS, Stored-XSS, Reflected-XSS)

- Вставляют вредоносный JavaScript-код в форму ввода.
- Если скрипт исполняется в браузере – уязвимость найдена.
<script>alert('XSS!')</script>


🚩Подбор паролей (Brute Force, Dictionary Attack)

- Пробуют тысячи вариантов паролей (rockyou.txt).
- Используют John the Ripper, Hydra, Hashcat.
hydra -l admin -P passwords.txt 192.168.1.1 ssh


🚩Анализ трафика (MITM, Sniffing, Packet Analysis)

Захватывают пакеты сети (tcpdump, Wireshark).
Ищут передаваемые пароли, сессии, токены.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что значит процесс-сирота?

Процесс, чей родитель завершился — становится сиротой и переназначается init (PID 1).


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

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

🚩Deployment

Это контроллер, который обеспечивает декларативное обновление подов и ReplicaSets (другой тип контроллера, который управляет одновременным запуском нескольких экземпляров одного и того же пода). Deployment поддерживает непрерывное развертывание, откат к предыдущим версиям, а также масштабирование подов.

🟠Масштабирование
Вы можете увеличивать или уменьшать количество подов в зависимости от нужд.
🟠Обновления
Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), которое помогает минимизировать простои при обновлении приложения.
🟠Самовосстановление
Автоматически перезапускает поды, которые перестали работать, находятся в ошибочном состоянии или не отвечают.

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80


🚩DaemonSet

Это контроллер, который гарантирует, что на каждом узле кластера Kubernetes запущен экземпляр заданного пода. Когда добавляется новый узел, на нем автоматически запускается под, управляемый DaemonSet, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле.

🟠Гарантия запуска
Убедитесь, что каждый узел кластера запускает копию определённого пода.
🟠Автоматическое размещение
Когда добавляются новые узлы, на них автоматически размещаются необходимые поды.
🟠Службы уровня узла
Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие.

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: fluent/fluentd:v1.0
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true


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

Идемпотентность в Ansible означает, что повторный запуск плейбука не должен менять систему, если она уже в нужном состоянии. Это важно для предсказуемости, удобства автоматизации и предотвращения ненужных изменений или сбоев.

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

Проверить, установлен ли NGINX на сервере, можно несколькими способами:

Проверка запущенного процесса
ps aux | grep nginx


Если NGINX работает, будет вывод с процессами, например:
root      1234  0.0  0.1  123456  7890 ? Ss   10:00   0:00 nginx: master process /usr/sbin/nginx


Проверка через systemctl (если systemd)
systemctl status nginx


Если NGINX установлен и работает, будет что-то вроде:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since ...


Проверка через nginx -v (версия)
nginx -v


Если NGINX установлен, покажет версию, например:
nginx version: nginx/1.20.1


Проверка пакетов (dpkg или rpm)
Если сервер на Debian/Ubuntu:
dpkg -l | grep nginx


Если сервер на CentOS/RHEL:
rpm -qa | grep nginx


Проверка открытых портов (если сервер работает)
netstat -tulnp | grep :80


или
ss -tulnp | grep :80


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

Существует два типа:
- ValidatingAdmissionWebhook — проверяет объект и может отклонить создание/обновление.
- MutatingAdmissionWebhook — может изменить объект перед сохранением (например, добавить аннотации, изменить контейнер).


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

Если SSH завис, не стоит сразу закрывать терминал. Есть несколько причин и решений.

🚩Проверить, можно ли выйти без разрыва сессии
Если SSH завис, но сессия не разорвана, попробуйте выйти без закрытия терминала:
~.


Переключение в режим управления SSH
~Ctrl+Z


🚩Проверить соединение с сервером

Если SSH завис, причина может быть в разрыве соединения. Проверьте:

Работает ли пинг до сервера:
ping server_ip

🔹 Открыт ли SSH-порт (22):
nc -zv server_ip 22


🚩Перезапустить SSH-клиент

Если только один SSH-клиент завис, попробуйте:
pkill -9 ssh


или
killall -9 ssh


Затем переподключитесь
ssh user@server_ip


🚩Проверить SSH-сервер

Если сервер доступен, но SSH зависает, войдите через консоль или другой метод (например, VNC, IPMI).

Если SSH не отвечает, перезапустите его:
sudo systemctl restart ssh


или
service ssh restart


🚩Отключить TCP KeepAlive или изменить таймауты

Иногда SSH зависает из-за разрыва соединения на роутере или файрволе.

Добавьте в ~/.ssh/config на клиенте
Host *
ServerAliveInterval 60
ServerAliveCountMax 5


Или в /etc/ssh/sshd_config на сервере
ClientAliveInterval 60
ClientAliveCountMax 5


Затем перезапустите SSH
sudo systemctl restart ssh


🚩Убить зависшую SSH-сессию на сервере

Если осталось зависшее подключение, найдите его и завершите:
who  # Показывает активные пользователи
ps aux | grep ssh # Показывает процессы SSH
pkill -9 -u username # Завершает все сессии пользователя


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

Работа с диском идёт через:
1. Файловую систему — разбивка данных на блоки, управление метаданными.
2. ОС и драйверы — планируют чтение/запись, оптимизируют доступ.
3. Кэширование — часто используется буферизация в RAM.
4. Контроллер диска — управляет физическим доступом на уровне блоков.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊6
🚀 Хотите научиться интегрировать Apache Kafka и ClickHouse для эффективной обработки и анализа данных? 🚀

Присоединяйтесь к открытому уроку 20 августа в 20:00 МСК!

📚 Мы разберём, как настроить потоковую передачу данных, обеспечить надёжность и производительность, а также оптимизировать хранение и запросы. Вы узнаете, как использовать нативные коннекторы и Kafka Connect для интеграции этих двух мощных инструментов.

Мы покажем реальные кейсы, лучшие практики и как избежать частых ошибок при работе с Kafka и ClickHouse. Это знание поможет вам настроить эффективный pipeline и ускорить загрузку данных.

Присоединяйтесь и получите скидку на курс «Apache Kafka»:

https://otus.pw/NupM/

🎯 Не пропустите!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🤔 Как найти запущенный процесс?

В операционных системах на базе Unix и Linux для поиска запущенных процессов используются различные команды.

🟠Команда `ps`
Команда ps отображает список текущих процессов. Часто используемые опции:
ps aux: Показывает все процессы в системе.
ps -ef: Альтернативный формат вывода всех процессов.
ps aux | grep <имя_процесса>


🟠Команда `top`
Команда top показывает список процессов в реальном времени, обновляя его каждые несколько секунд. Это удобно для мониторинга системы и поиска процессов с высокой загрузкой CPU или памяти.
top


🟠Команда `htop`
Команда htop — это улучшенная версия top, предоставляющая более удобный интерфейс для мониторинга процессов. Она должна быть установлена отдельно.
sudo apt-get install htop
htop


🟠Команда `pgrep`
Команда pgrep используется для поиска процессов по имени. Она возвращает идентификаторы (PID) процессов, соответствующих критериям поиска.

Пример использования:
pgrep <имя_процесса>


🟠Команда `pidof`
Команда pidof возвращает идентификаторы (PID) процессов с указанным именем.
pidof <имя_процесса>


🟠Команда `ps` с фильтрацией
Для более точного поиска можно использовать команду ps с фильтрацией через grep.
ps aux | grep <имя_процесса> | grep -v grep


🟠Команда `lsof`
Команда lsof отображает список открытых файлов и может использоваться для поиска процессов, открывающих определенные файлы.
sudo lsof -i :<номер_порта>


🚩Пример поиска конкретного процесса

Допустим, вам нужно найти процесс с именем nginx. Вот несколько способов сделать это
Использование ps
ps aux | grep nginx | grep -v grep


Использование pgrep
pgrep nginx


Использование pidof
pidof nginx


🚩Использование `top` или `htop`

Запустите top или htop и найдите процесс nginx в интерактивном режиме.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как уменьшить размер Docker image?

Чтобы уменьшить размер Docker image, используйте минимальные базовые образы (например, alpine), удаляйте временные файлы после сборки, объединяйте команды в Dockerfile и избегайте ненужных зависимостей.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Сколько часов живёт один вал Prometeus CICD?

Вал (или "валидность данных") в Prometheus определяется настройками временного диапазона хранения данных. Обычно данные в Prometheus живут столько, сколько задано в параметре --storage.tsdb.retention.time, который устанавливает период хранения временных рядов.

🟠По умолчанию
Если не указать параметр --storage.tsdb.retention.time, данные хранятся 15 дней. Это соответствует 360 часам.

🟠Как изменить время жизни данных
Вы можете настроить период хранения данных, передав значение параметра при запуске Prometheus:

CLI-параметр:
prometheus --storage.tsdb.retention.time=30d


🟠Конфигурационный файл
Если Prometheus запускается как часть системы CI/CD через Docker Compose, Kubernetes или другой инструмент, параметр указывается в соответствующем разделе.
services:
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=7d' # 7 дней (168 часов)


🚩Почему это важно?

🟠Оптимизация дискового пространства
Большие периоды хранения требуют больше дискового пространства. Если валидация данных больше не нужна, лучше очищать старые временные ряды.
🟠Баланс производительности
Длительное хранение может замедлить обработку запросов, особенно если используемые метрики застарелые или редко запрашиваются.
🟠Потребности CI/CD
Для CI/CD-пайплайнов обычно достаточно короткого периода (например, 7–15 дней), чтобы сохранять данные релевантными и свежими.

🟠Пример настройки в CI/CD контексте
Если вы хотите, чтобы метрики для CI/CD жили 12 часов (подходящий срок для проверки тестов и сборок), настройте
prometheus:
image: prom/prometheus
command:
- '--storage.tsdb.retention.time=12h'


🚩Как проверить текущий срок хранения?

🟠В интерфейсе Prometheus
Перейдите на страницу /status/status/flags, где можно увидеть значение параметра --storage.tsdb.retention.time.
🟠Через командную строку
Проверьте журнал запуска Prometheus или конфигурационный файл.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4💊2🔥1
🤔 Что такое port forwarding?

Port forwarding — это механизм проброса порта из пода или контейнера на локальную машину. Это позволяет получить доступ к сервисам внутри кластера без необходимости их публикации наружу.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊4
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3