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

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Какая компонента запускает под на ноде, какая отвечает за сеть?

Поды на ноде запускает kubelet — это агент, который работает на каждой ноде Kubernetes. Он получает команды от kube-apiserver и запускает контейнеры через container runtime (например, containerd).
За сеть отвечает kube-proxy, который настраивает маршруты и правила iptables/ipvs для обеспечения сетевого доступа к сервисам. Также сетью управляет CNI-плагин (например, Calico или Flannel), который обеспечивает назначение IP-адресов и маршрутизацию между подами.


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

В 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
👍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
👍7🔥1
Forwarded from easyoffer
📅 Осталось 7 дней до конца краудфандинга

Мы на финишной прямой!

Если ты планировал присоединиться, но ещё не успел, сейчас идеальный момент.

Вознаграждения за поддержку:

🚀 PRO подписка к easyoffer 2.0 на 1 год по цене месячной подписки. Активировать подписку можно в любой момент, например, когда начнешь искать работу.
Приглашение на закрытое бета-тестирование

👉 Поддержать easyoffer 2.0

Не откладывай на последний момент

📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
🤔 Назовите пять команд, состоящих из двух букв

Примеры:
- ls — просмотр содержимого каталога.
- cd — переход между каталогами.
- df — информация о дисковом пространстве.
- ps — отображение процессов.
- ip — работа с сетевыми интерфейсами.


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

Admission Webhooks – это механизмы, которые перехватывают запросы к API Kubernetes перед их применением, позволяя изменять или запрещать создание/обновление ресурсов.

🚩Виды Webhooks

Mutating Admission Webhook – изменяют запрос (например, добавляют аннотации).
Validating Admission Webhooks – проверяют запрос и могут его отклонить.

🚩Автоматическое добавление sidecar-контейнеров (MutatingWebhook)

Пример: Добавляем в каждый под контейнер с агентом мониторинга (например, Prometheus или Istio).
Когда создается Pod, Webhook добавляет в него sidecar-контейнер.
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: add-sidecar
webhooks:
- name: add-sidecar.k8s.io
admissionReviewVersions: ["v1"]
clientConfig:
service:
name: sidecar-webhook
namespace: monitoring
path: "/mutate"
rules:
- apiGroups: [""]
apiVersions: ["v1"]
operations: ["CREATE"]
resources: ["pods"]


🚩Запрет запуска подов с `latest` образом (ValidatingWebhook)

Запрещаем развертывание контейнеров с image: latest, чтобы избежать непредсказуемого поведения.
Если контейнер использует latest, Webhook отклоняет создание Pod.
{
"apiVersion": "admission.k8s.io/v1",
"kind": "AdmissionReview",
"request": {
"object": {
"spec": {
"containers": [
{
"image": "nginx:latest"
}
]
}
}
}
}


🚩Принудительное применение security-контекстов (MutatingWebhook)

Автоматически добавляем securityContext в контейнеры, чтобы избежать запуска от root.
Если в PodSpec нет securityContext, Webhook добавляет его автоматически.
securityContext:
runAsUser: 1000
runAsGroup: 1000
readOnlyRootFilesystem: true


🚩Запрет подов без определенных меток (ValidatingWebhook)

Требуем, чтобы все Pods имели метку team.
Если под не содержит metadata.labels.team, Webhook отклоняет запрос.
{
"response": {
"allowed": false,
"status": {
"message": "Pod must have a 'team' label"
}
}
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🤔 Топ метрик CPU (для мониторинга)?

- CPU usage % (utilization)
- Load average
- CPU steal time
- CPU system/user time
- Context switches
- CPU iowait


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7👍2
🤔 Расскажи про разницу PVC и full stack?

Понимание этих двух терминов поможет нам различить их предназначение и использование в контексте Kubernetes и программного обеспечения.

🚩PVC (Persistent Volume Claim)

Это объект в Kubernetes, который позволяет пользователям запрашивать выделение постоянного хранилища для подов. PVC абстрагирует детали физического хранилища, позволяя разработчикам и администраторам фокусироваться на объеме и типе хранилища, необходимого для приложения, без необходимости управлять деталями самого хранилища.

🚩Основные аспекты PVC

🟠Запрос хранилища
PVC определяет запрос на объем хранилища и его характеристики, такие как размер и класс хранилища (Storage Class).

🟠Абстракция хранилища
PVC абстрагирует конкретные детали физического хранилища, предоставляя единый интерфейс для запросов хранилища.

🟠Динамическое и статическое связывание
PVC может использовать как динамическое связывание (где Kubernetes автоматически создает PV на основе PVC), так и статическое связывание (где администраторы заранее создают PV).

🟠Совместимость с подами
PVC могут быть подключены к подам, обеспечивая постоянное хранилище для приложений.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: standard


🚩Full Stack

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

🚩Основные аспекты Full Stack разработки

🟠Фронтенд
Создание пользовательских интерфейсов с использованием HTML, CSS, JavaScript и фреймворков, таких как React, Angular или Vue.js.

🟠Бэкенд
Разработка серверной логики и API с использованием языков программирования, таких как Python, Node.js, Ruby, Java или PHP.

🟠Базы данных
Работа с реляционными (например, MySQL, PostgreSQL) и нереляционными (например, MongoDB, Redis) базами данных.

🟠DevOps
Управление развертыванием, настройкой серверов, CI/CD пайплайнами, мониторингом и масштабированием приложений.

🟠Сетевые технологии
Понимание протоколов, таких как HTTP/HTTPS, REST, WebSockets, и работа с серверными технологиями, такими как Nginx или Apache.

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

- Если PVC/Pod удалён, но политика Retain, то PV остаётся.
- Если политика Delete, то PV и физическое хранилище удаляются.
- При Recycle (устаревшая) — том очищается и повторно используется.


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

Чтобы мониторить 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"}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Forwarded from easyoffer
Офигеть, вот это поддержка! 🔥

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

Но больше всего я боялся, что запущу кампанию, и не получится собрать даже 300 т. Это был бы провал. Так много усилий, времени и денег вложено в проект… и если бы всё закончилось ничем — это бы сильно демотивировало.

Но, ребята, мы превысили изначальную цель в 10 раз —
3 031 040 рублей! 🤯

Вся эта кампания — это одна большая проверка бизнес-модели на прочность. И я супер рад, что запустил всё публично. Люди видят, что EasyOffer реально нужен. Теперь нет сомнений — проект актуален, он будет прибыльным и будет развиваться.

Мне приходит огромное количество сообщений в личку: кто-то когда-то давно пользовался сайтом, он помог с трудоустройством, и сейчас они уже не ищут работу — но всё равно поддержали.
Это прям очень круто и трогательно.

Никак не могу отделаться от мысли, что easyoffer — это ведь мой первый сайт. Учебный, пет-проект, просто для портфолио. И вот что из него вышло. Просто офигеть.

Я не зря ушёл с работы, чтобы заниматься только им.
Я поверил в этот проект — и сейчас вижу, что вы тоже в него верите. Для меня это очень многое значит.

Огромное спасибо за вашу поддержку! ❤️
👍1💊1
🤔 Что делал в ESXi?

ESXi — гипервизор от VMware. Возможные задачи:
- Разворачивание ВМ;
- Настройка ресурсов CPU/RAM/Disk;
- Использование vSphere для управления;
- Работа с снапшотами и шаблонами;
- Настройка сети и vSwitch;
- Мониторинг хоста.


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

Когда GitLab CI/CD скачивает код (git clone), он начинает выполнять pipeline, состоящий из job'ов и stage'ов.
Определяется gitlab-ci.yml
Запускается раннер (GitLab Runner)
Определяются переменные окружения
Запускаются before_script, script, after_script
Артефакты сохраняются и передаются между stage'ами

🚩Определение `gitlab-ci.yml`

После скачивания кода GitLab ищет .gitlab-ci.yml в репозитории.
stages:
- build
- test
- deploy

build:
stage: build
script:
- echo "Building project..."


🚩Запуск GitLab Runner

GitLab CI/CD отправляет задачу в GitLab Runner, который выполняет команды. Runner может работать в Docker, Kubernetes, Shell, VM.
Running with gitlab-runner 15.0.0 (abcdef12)
Using Docker executor with image python:3.9 ...


🚩Определение переменных окружения

Перед выполнением script, GitLab загружает переменные окружения.
CI_COMMIT_REF_NAME=main
CI_PROJECT_NAME=my-repo
CI_PIPELINE_ID=12345


Можно использовать их в script
script:
- echo "Branch: $CI_COMMIT_REF_NAME"


🚩Выполнение команд (`before_script`, `script`, `after_script`)

GitLab выполняет основные команды pipeline
before_script:
- echo "Preparing environment..."

script:
- echo "Running main job..."
- python build.py

after_script:
- echo "Cleaning up..."


🚩Сохранение артефактов и передача данных

Если один stage создает файлы, их можно передать в следующий stage через artifacts.
build:
stage: build
script:
- echo "Compiling..." > build.log
artifacts:
paths:
- build.log

test:
stage: test
script:
- cat build.log


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Forwarded from easyoffer
Осталось 3 дня!

Финальный отсчёт пошёл — осталось всего 3 дня до окончания краудфандинга easyoffer 2.0

Сейчас можно получить максимум пользы за минимальные деньги. После окончания кампании цены вырастут и вознаграждения станут недоступны.

👉 Поддержи easyoffer 2.0 и получи:

🚀 PRO подписка к easyoffer 2.0 на 1 год по цене месячной подписки. Активировать подписку можно в любой момент, например, когда начнешь искать работу. Приглашение на закрытое бета-тестирование

Поддержи проект сейчас, чтобы не забыть!

📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
🤔 Что такое автоматическая инкрементация в разных БД?

Это механизм автоматического увеличения значения первичного ключа:
- В PostgreSQL — SERIAL или GENERATED ALWAYS AS IDENTITY.
- В MySQL — AUTO_INCREMENT.
- В Oracle — SEQUENCE.
- В Hibernate — можно указать генератор
@GeneratedValue(strategy = ...).
Используется для уникальных ID без ручного ввода.


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

Если процесс удерживает файловые дескрипторы и вам нужно их освободить, то есть несколько способов это сделать.

🟠Завершение процесса
Самый простой способ — завершить процесс, который удерживает файловые дескрипторы.
kill <PID>


или принудительно
kill -9 <PID>


Чтобы найти процессы, удерживающие файлы
lsof | grep <filename>


или
fuser <filename>


🟠Закрытие дескриптора вручную
Если вы хотите закрыть файловый дескриптор, не завершая процесс, можно использовать lsof и /proc

1⃣Найдите открытые дескрипторы процесса:
ls -l /proc/<PID>/fd/


2⃣Закройте конкретный дескриптор:
exec 3>&-


🟠Использование `gdb` для вмешательства в процесс
Если процесс нельзя перезапустить, но вы имеете к нему доступ, можно закрыть дескриптор через gdb:
gdb -p <PID>
(gdb) call close(<FD>)
(gdb) detach
(gdb) quit


🟠Перемонтирование файловой системы
Если файл удален, но все еще удерживается процессом, можно принудительно перемонтировать файловую систему:
mount -o remount /


Или использовать lsof для очистки удаленных файлов
lsof | grep deleted


🟠Использование `systemctl restart` для сервисов
Если файлы удерживаются службой (например, Nginx, Apache, MySQL), можно перезапустить службу
systemctl restart <service>


или
service <service> restart


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Forwarded from easyoffer
Завтра последний день!

Краудфандинг заканчивается уже завтра, и второй попытки не будет.

👉 Поддержи easyoffer 2.0 и получи:

🚀 PRO подписка к easyoffer 2.0 на 1 год по цене месячной подписки. Активировать подписку можно в любой момент, например, когда начнешь искать работу. Приглашение на закрытое бета-тестирование

📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
🤔 Может ли Deployment существовать без ReplicaSet?

Нет, Deployment всегда управляет минимум одним ReplicaSet. ReplicaSet отвечает за поддержание желаемого числа подов, а Deployment добавляет возможность обновлений и откатов.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1💊1
Forwarded from easyoffer
🚨 Последний шанс!

Сегодня — последний день краудфандинга.
Через несколько часов всё закроется, и больше невозможно будет поучаствовать.

Если ты хотел, но откладывал — СЕЙЧАС самое время. Займёт 2 минуты, но изменит твой подход к собеседованиям надолго.

Поддержи easyoffer 2.0 и получи:

🚀 PRO подписка к easyoffer 2.0 на 1 год по цене месячной подписки. Активировать подписку можно в любой момент, например, когда начнешь искать работу. Приглашение на закрытое бета-тестирование

PRO подписка к easyoffer 2.0:

Доступ к списку вопросов, которые задаются на собеседованиях + вероятность встречи этих вопросов + их фильтрация по грейдам, типам интервью, компаниям

Доступ к лучшим ответам на вопросы

Список самых частых задач, которые задаются на собеседовании + их фильтрация по грейдам и компаниям

Доступ к лучшим ответам на задачи

Список тестовых заданий компаний + лучшее решение

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

Доступ к тренажеру "Реальное собеседование", который позволит тренироваться проходить собеседование в конкретную компанию

До конца кампании — остались часы.
Поддержать: https://planeta.ru/campaigns/easyoffer

📌 Если не получается оплатить через карту РФ — напишите мне @kivaiko, и мы найдём удобный способ
🤔 Как мы можем с помощью cloudfront сохранить бюджет на использование сервисов?

Amazon CloudFront — это CDN (Content Delivery Network), которая помогает оптимизировать затраты на трафик и нагрузку на серверы. Использование CloudFront позволяет экономить бюджет на AWS-сервисах следующими способами:

🟠Кеширование контента (уменьшение нагрузки на бэкенд)
CloudFront кэширует статический и динамический контент, что снижает количество запросов к вашим основным серверам (например, EC2, S3, API Gateway, Lambda).
Меньше запросов к S3 (меньше операций GET, а они платные).
Меньше запросов к API Gateway и Lambda (так как CloudFront может кешировать ответы API).
Экономия на EC2 и RDS, так как нагрузка перераспределяется.

🟠Использование бесплатного трафика между CloudFront и S3
Когда CloudFront забирает файлы из S3 в том же регионе, за исходящий трафик из S3 не взимается плата. Исходящий трафик из S3 в интернет стоит ≈ $0.09 за ГБ. Исходящий трафик из CloudFront в интернет дешевле (например, первые 1 ТБ в месяц — бесплатно).

🟠Снижение стоимости глобального трафика
Если у вас клиенты в разных странах, CloudFront дешевле, чем стандартный AWS-трафик. Исходящий трафик из CloudFront в интернет в среднем на 30-50% дешевле, чем прямой выход из EC2 или S3. AWS часто снижает цены на CloudFront трафик в рамках программ оптимизации.

🟠Фильтрация ненужного трафика (ботов, DDoS, парсеров)
CloudFront позволяет использовать AWS WAF (Web Application Firewall) для блокировки вредоносных запросов. Меньше запросов к бэкенду (EC2, API Gateway, Lambda). Защита от DDoS (AWS Shield Standard бесплатен для CloudFront).

🟠Кеширование динамического контента
CloudFront поддерживает TTL (Time-to-Live) для кэширования даже динамических API-ответов. Вместо запроса к API Gateway/Lambda, CloudFront может вернуть кэшированный ответ. Можно настроить "Stale While Revalidate" — клиент получает устаревший контент, пока идет обновление.

🟠Гибкое управление ценой через региональные edge-локации
CloudFront позволяет управлять ценами, ограничивая определенные регионы. Можно исключить дорогие регионы (например, Южную Америку, где трафик дороже). Можно использовать AWS Origin Shield для дополнительного кеширования между регионами.

🟠Использование CloudFront Functions вместо AWS Lambda
CloudFront поддерживает CloudFront Functions, которые выполняются прямо на edge-узлах и дешевле, чем Lambda@Edge. CloudFront Functions работают быстрее и стоят $0.10 за миллион запросов. Lambda@Edge стоит $0.60 за миллион запросов + плата за выполнение.

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