DevOps | Вопросы собесов
5.28K subscribers
27 photos
887 links
Download Telegram
🤔 Что такое port forwarding?

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


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

Чтобы использовать новый диск в Linux, его нужно разметить, создать файловую систему и примонтировать.

🚩Разметить диск (`fdisk`)

Запустить fdisk для диска sdb
sudo fdisk /dev/sdb


🚩Создать файловую систему (`mkfs`)

Форматировать раздел в ext4
sudo mkfs.ext4 /dev/sdb1


Если нужен xfs
sudo mkfs.xfs /dev/sdb1


🚩Автоматическое монтирование при загрузке (`/etc/fstab`)

Найти UUID диска
blkid /dev/sdb1


Вывод
/dev/sdb1: UUID="12345678-abcd-1234-efgh-56789abcdef0" TYPE="ext4"


Добавить в /etc/fstab
echo 'UUID=12345678-abcd-1234-efgh-56789abcdef0 /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab


Применить изменения
sudo mount -a


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

Модуль — это переиспользуемый блок конфигурации Terraform.
Он может содержать:
- Ресурсы
- Переменные
- Выходные значения
Модули позволяют:
- Упростить и структурировать код
- Использовать одну и ту же логику в разных местах
- Упростить поддержку конфигураций


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

В Linux информация о версии дистрибутива и ядра хранится в нескольких файлах.

🟠Основной файл — `/etc/os-release`
Этот файл есть во всех современных дистрибутивах (Debian, Ubuntu, RHEL, CentOS, Fedora).
cat /etc/os-release


Пример содержимого /etc/os-release
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
PRETTY_NAME="Ubuntu 22.04.3 LTS"
VERSION_ID="22.04"
HOME_URL="https://www.ubuntu.com/"


🟠Альтернативный файл — `/etc/issue`
Некоторые дистрибутивы используют /etc/issue.
cat /etc/issue


Вывод
Ubuntu 22.04.3 LTS \n \l


🟠Информация о ядре — `/proc/version`
Этот файл содержит версию ядра и информацию о компиляции.
cat /proc/version


Вывод
Linux version 5.15.0-84-generic (buildd@lcy02-amd64-016) (gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0) #93-Ubuntu SMP


🟠Команды для проверки версии ОС
Проверить версию через lsb_release
lsb_release -a


Вывод
Distributor ID: Ubuntu  
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy


Проверить ядро через uname
uname -r


Вывод
5.15.0-84-generic


Можно также вывести полную информацию:
uname -a


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что даёт load balancer?

Load Balancer распределяет входящий трафик между несколькими серверами или контейнерами, обеспечивая высокую доступность и отказоустойчивость. Он также помогает избежать перегрузки отдельных узлов и улучшает производительность системы.

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

Для отображения всех работающих процессов в Linux можно использовать несколько команд. Самые популярные из них: ps, top, htop и pgrep. Каждая из них имеет свои особенности.

🚩Команда `ps`

ps выводит снимок (snapshot) текущих процессов в момент выполнения команды.
🟠`ps aux`
Показывает все процессы, запущенные в системе, включая пользователей и системные демоны.
ps aux


🟠`ps -ef`
Альтернативный стиль вывода всех процессов с более детальной информацией.
ps -ef


🚩Команда `top`

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

Запуск
top


🚩Команда `htop`

htop — более современная и удобная версия top. Требуется предварительная установка:
sudo apt install htop  # Для Ubuntu/Debian
sudo yum install htop # Для CentOS/RHEL


Запуск
htop


🚩Команда `pgrep`

pgrep используется для поиска процессов по имени, но с дополнительными опциями можно вывести все процессы.

Пример
pgrep -a ""


🚩Команда `systemctl` (для сервисов)

Если вы хотите посмотреть системные службы
systemctl list-units --type=service


🚩Какую команду выбрать?

🟠Для быстрого снимка
ps aux.
🟠Для мониторинга в реальном времени
top или htop.
🟠Для поиска конкретного процесса
pgrep <имя процесса>.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Как управлять в GitLab CI чувствительными данными и как их передаёте?

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

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

В Kubernetes разные компоненты отвечают за запуск подов и сетевые настройки.

🚩Какая компонента запускает под на ноде? (`kubelet`)

Получает команды от kube-scheduler (назначение подов)
Запускает контейнеры через Container Runtime (Docker, containerd, CRI-O)
Следит за состоянием подов и перезапускает их при сбоях
systemctl status kubelet


Посмотреть логи kubelet
journalctl -u kubelet -f


🚩Какая компонента отвечает за сеть? (CNI)

Назначает IP-адреса подам
Организует маршрутизацию трафика между подами и нодами
Настраивает Network Policies (безопасность сети)
Проверить работающие сетевые плагины
kubectl get pods -n kube-system


Вывод (если CNI работает нормально)
NAME               READY   STATUS    RESTARTS   AGE
calico-node-xyz 1/1 Running 2 3d


Если CNI не работает, поды могут застрять в ContainerCreating
kubectl get pods

NAME          READY   STATUS              RESTARTS   AGE
web-server 0/1 ContainerCreating 0 10m


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

В Kafka replica count (replication factor) — это количество копий партиции, хранящихся на разных брокерах.
- Повышает отказоустойчивость.
- Один из брокеров — лидер, остальные — фолловеры.


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

DRCP (Database Resident Connection Pooling) — это механизм в Oracle Database, который уменьшает нагрузку на базу данных за счет повторного использования соединений между клиентами и сервером. DRCP полезен для сред с большим количеством краткоживущих соединений, например, веб-приложений.

🚩Почему нужен DRCP?

Экономит ресурсы – вместо создания новых соединений база использует пул уже существующих.
Снижает нагрузку на сервер – меньше процессов, меньше потребления памяти и CPU.
Ускоряет работу – повторное использование соединений сокращает время на установку нового подключения.
Идеально для многопоточных сред – например, PHP-приложений, где соединения краткосрочные.

🚩Как DRCP работает?

🟠Клиент делает запрос на подключение
Клиент (например, веб-приложение) отправляет запрос на подключение к базе. Вместо создания нового процесса сервер ищет свободное соединение в пуле DRCP.

🟠DRCP предоставляет соединение
Если в пуле есть свободное соединение, оно передается клиенту. Если нет – создается новое (если не превышен лимит).

🟠Клиент выполняет SQL-запрос
После завершения работы клиент "освобождает" соединение. Вместо закрытия соединение возвращается в пул, чтобы быть использованным другим клиентом.

🟠Диспетчер соединений управляет пулом
Connection Broker (диспетчер соединений) следит за балансировкой нагрузки и распределяет соединения между клиентами.

🚩Как включить DRCP?

Включаем DRCP на сервере
EXEC DBMS_CONNECTION_POOL.START_POOL();


Проверяем статус пула
SELECT * FROM V$CPOOL_STATS;


Подключаем клиента с использованием DRCP
CONNECT user/password@database:pooled


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

- Использовать VPN (OpenVPN, WireGuard);
- Настроить Bastion Host;
- Применить SSH-туннелирование;
- Использовать прокси или zero-trust платформы (например, Tailscale).


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

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

🚩Локальный почтовый сервер (SMTP)

1⃣Установка
sudo apt update
sudo apt install postfix


2⃣Настройка
Отредактируйте /etc/postfix/main.cf
myhostname = local.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination


3⃣Перезапуск Postfix
sudo systemctl restart postfix   


4⃣Проверка
echo "Test email" | mail -s "Test Subject" [email protected]


🚩Локальный мессенджер (Mattermost)

1⃣Установка Mattermost
Следуйте [документации](https://docs.mattermost.com/install/self-managed-install.html).

2⃣Настройка
Создайте каналы и пользователей.

3⃣Интеграция с мониторингом
Используйте веб-хуки Mattermost для уведомлений.

🚩Системы управления инцидентами (Zabbix)

1⃣Установка Zabbix
Следуйте [документации](https://www.zabbix.com/download).

2⃣Настройка
Настройте хосты, триггеры и действия.

3⃣Настройка уведомлений
Медиатипы: Настройте Email и SMS. Пользователи: Создайте пользователей и уведомления.

🚩Локальный стек мониторинга (Prometheus, Alertmanager)

1⃣Установка Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
tar xvf prometheus-2.26.0.linux-amd64.tar.gz
cd prometheus-2.26.0.linux-amd64
./prometheus --config.file=prometheus.yml


2⃣Установка Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
cd alertmanager-0.21.0.linux-amd64
./alertmanager --config.file=alertmanager.yml


3⃣Настройка алертинга в Prometheus
groups:
- name: example-alerts
rules:
- alert: HighCPUUsage
expr: avg_over_time(node_cpu_seconds_total{mode="idle"}[5m]) < 20
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
description: "CPU usage is above 80% for more than 2 minutes"


4⃣Настройка Alertmanager
global:
smtp_smarthost: 'localhost:25'
smtp_from: '[email protected]'
route:
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: '[email protected]'
send_resolved: true


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

Пользователи описаны в системном файле, содержащем имя, ID, домашний каталог и shell. Это основной источник данных о локальных пользователях.


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

При запуске Ansible-плейбука через консоль командой
ansible-playbook playbook.yml


Первая строка, которая появится в консоли
PLAY [имя_плейбука] *****************************************************


Пример запуска
ansible-playbook site.yml


Вывод в консоли:
PLAY [Install and configure web server] *********************************


Если name: не указан в плейбуке, будет:
PLAY [Unnamed Play] ****************************************************


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

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

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

Если запустить микросервис просто в контейнере (например, через docker run), он будет работать как отдельный процесс, без встроенной системы управления и оркестрации.
Но если запустить его в Kubernetes, он будет работать в поде (Pod).

🚩Когда использовать контейнер, а когда под?

Если нужен просто контейнер → docker run my-app.
Если нужен отказоустойчивый микросервис → Kubernetes Pod.
Если несколько контейнеров должны работать вместе (например, приложение + sidecar) → Pod.

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

- RBAC (Role-Based Access Control) — основной встроенный механизм.
- OPA (Open Policy Agent) и Gatekeeper — для политик доступа на уровне объектов.
- kube-apiserver + Authentication + Authorization + Admission controllers.


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

DNS Records – это записи, которые управляют маршрутизацией домена в интернете. Они определяют, куда направлять запросы, какие IP-адреса использовать и какие сервисы подключены к домену.

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

A-запись (IP-адрес домена)
example.com.   IN  A   192.168.1.1


CNAME-запись (псевдоним)
www.example.com.  IN  CNAME  example.com.


MX-запись (почтовый сервер)
example.com.  IN  MX  10 mail.example.com.


TXT-запись (SPF, верификация)
example.com.  IN  TXT  "v=spf1 include:_spf.google.com ~all"


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

Необходимо настроить планировщик Kubernetes так, чтобы он размещал часть подов на конкретных физических узлах. Для этого используются механизмы node affinity, taints/tolerations или nodeSelector.


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

Выполнить rebase на main в Git означает "перенести" ваши изменения поверх актуального состояния основной ветки (main).

🟠Переключаемся на вашу текущую ветку
Допустим, вы работаете в ветке feature-branch:
git checkout feature-branch


🟠Выполняем rebase на `main`
Сначала убедимся, что main обновлена:
git checkout main
git pull origin main


Теперь выполняем сам rebase:
git checkout feature-branch
git rebase main


🟠Разрешение конфликтов (если есть)
Если у вас есть конфликты, Git остановит процесс и попросит их решить.
Откройте файлы с конфликтами, исправьте их.
Добавьте исправленные файлы:

   git add <файл>


Продолжите rebase:

   git rebase --continue


🟠Обновление удалённого репозитория
Если rebase прошёл успешно, вам нужно форсированно обновить удалённую ветку (так как история изменилась):
git push origin feature-branch --force


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