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

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

Примеры:
- 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
Forwarded from easyoffer
Такого больше не будет!

Всего пара часов и больше не будет возможности получить:

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

👉 Поддержать: https://planeta.ru/campaigns/easyoffer
🤔 Каким образом можно скопировать файл с сервера на сервер?

Самые популярные способы:
- scp — простая и прямая копия по SSH.
- rsync -e ssh — надёжная синхронизирующая копия, эффективна для больших данных.
- sftp — интерактивный файловый обмен через SSH.
- В облаках также часто используют rclone, s3cmd, gsutil и др.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Forwarded from easyoffer
Финальный отсчёт:
3 часа до конца краудфандинга easyoffer 2.0!


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

За последние недели:
💥 Нас поддержали уже больше 1450 человек;
🔥 Вместе собрали больше 4,5 млн. рублей на запуск проекта;

Но сейчас важнее другое.

Через 3 часа всё закончится.
– Больше не будет подписки за 3 200 руб. на целый год!
– Не будет шанса первыми воспользоваться EasyOffer 2.0 на бета-тестировании

Если вы:

+ Планируете менять работу в этом или следующем году;
+ Хотите иметь под рукой 40,000+ вопросов собеседований с разборами, видео-ответами и тренажёрами;
+ Хотите зафиксировать лучшую цену на целый год… (потом будет в 12 раз дороже)

👉 Тогда просто переходите и поддержите нас сейчас:
https://planeta.ru/campaigns/easyoffer

📢 Три часа — и всё.
Не откладывайте на потом.

Спасибо всем, кто уже с нами! 💙
Forwarded from easyoffer
🚨 60 минут до финала

Через час мы закроем краудфандинг easyoffer 2.0
Это последний шанс вписаться в самые выгодные условия.

👉 https://planeta.ru/campaigns/easyoffer
Please open Telegram to view this post
VIEW IN TELEGRAM