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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Чем отличается Docker Compose от Docker Swarm?

- Docker Compose — инструмент для локальной разработки и управления многоконтейнерными приложениями с помощью docker-compose.yml.
- Docker Swarm — это средство оркестрации, позволяющее масштабировать, балансировать и управлять сервисами на кластере машин.


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

В Kubernetes есть несколько механизмов, которые могут запретить или ограничить запуск подов на определенных нодах.

🚩Taints & Tolerations (Метки и допуска)

Taints – метки на нодах, запрещающие размещение подов, если у них нет соответствующего допуска (Toleration).
Используется для изоляции, приоритизации узлов или резервирования ресурсов.
kubectl taint nodes my-node key=value:NoSchedule


Разрешить конкретному поду запускаться на этой ноде
tolerations:
- key: "key"
operator: "Equal"
value: "value"
effect: "NoSchedule"


🚩Node Selectors (Выбор ноды по меткам)

Запрещает запускаться на всех нодах, кроме указанных.
Используется для привязки подов к определенным серверам.
spec:
nodeSelector:
disktype: ssd


🚩Node Affinity (Расширенные правила выбора ноды)

Позволяет задать гибкие условия (обязательные и предпочтительные).
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: region
operator: In
values:
- us-east-1


🚩Pod Disruption Budget (Ограничение количества перезапусков)

Запрещает запуск новых подов, если их уже запущено определенное количество.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: my-pdb
spec:
maxUnavailable: 3
selector:
matchLabels:
app: my-app


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

Используется параметр serial в playbook, который задает количество серверов, на которые применяется роль одновременно. Например, serial: 1 обновляет по одному серверу за раз, что снижает риски при развертывании.


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

Multi-stage (многоэтапная сборка) — это метод создания Docker-образов, позволяющий уменьшить их размер и повысить безопасность.

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

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

🚩Пример использования Multi-stage в Docker

Допустим, у нас есть приложение на Go. Мы сначала компилируем его в одном контейнере, а затем создаем минимальный образ для запуска.
# Этап 1: сборка
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Этап 2: минимальный образ для запуска
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]


🚩Использование в React / Angular / Vue

При сборке фронтенда мы можем сначала установить зависимости и собрать проект, а затем развернуть его на nginx.
# Этап 1: сборка приложения
FROM node:18 AS builder
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build

# Этап 2: деплой на nginx
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]


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

1. 2xx (Успех): успешное выполнение запроса (например, 200 OK).
2. 3xx (Перенаправление): клиенту нужно выполнить дополнительные действия (например, 301 Moved Permanently).
3. 4xx (Ошибка клиента): ошибка в запросе клиента (например, 404 Not Found).
4. 5xx (Ошибка сервера): сервер не смог обработать запрос (например, 500 Internal Server Error).


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

Маска подсети (subnet mask) — это число, которое определяет, какая часть IP-адреса относится к сети, а какая — к хостам внутри этой сети.
Пример:
IP-адрес: 192.168.1.10
Маска подсети: 255.255.255.0

В двоичном виде
IP:    11000000.10101000.00000001.00001010  (192.168.1.10)
Маска: 11111111.11111111.11111111.00000000 (255.255.255.0)


🚩 Зачем нужна маска подсети?

Разделять сеть на логические сегменты (разделение на подсети). Определять, находятся ли два устройства в одной сети или им нужен маршрутизатор. Экономить IP-адреса, разбивая сеть на нужное количество хостов.

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

Если два устройства в одной подсети, они могут общаться напрямую. Если в разных — нужен маршрутизатор.

🚩CIDR-нотация

Вместо маски 255.255.255.0 можно записать /24.
Пример: 192.168.1.10/24 (означает, что первые 24 бита — это сеть).

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

Кроме URL и тела (body), у HTTP-запроса есть:
- заголовки (headers) — содержат метаинформацию (тип данных, авторизация, длина и т.д.);
- метод (method) — GET, POST и т.д.;
- параметры запроса (query parameters);
- статус ответа (в ответе сервера).


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔 Что внутри директории 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: Информация о разделах жесткого диска.

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

UNIQUE:
- Применяется для гарантии уникальности значений в столбце или группе столбцов.
- Можно использовать одновременно с NULL, но NULL не считается повтором (в большинстве СУБД).


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

В Python лямбда-выражение — это анонимная (безымянная) функция, создаваемая с помощью ключевого слова lambda.

Синтаксис
lambda аргументы: выражение


🚩Примеры

Простая лямбда-функция
add = lambda x, y: x + y
print(add(3, 5)) # Выведет: 8


Эквивалентно обычной функции
def add(x, y):
return x + y


Лямбда внутри map()
nums = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, nums))
print(squares) # [1, 4, 9, 16]


Лямбда внутри sorted()
words = ["apple", "banana", "kiwi"]
sorted_words = sorted(words, key=lambda w: len(w))
print(sorted_words) # ['kiwi', 'apple', 'banana']


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

Наиболее распространённый способ — использовать ingressClassName в ресурсе Ingress. Это современный подход с Kubernetes 1.19+. Указание через аннотации контроллера (
kubernetes.io/ingress.class) всё ещё встречается, но считается устаревшим.

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