ru
Feedback
DevOps | Вопросы собесов

DevOps | Вопросы собесов

Открыть в Telegram
5 543
Подписчики
+224 часа
+97 дней
+4430 день
Архив постов
🤔 Из чего состоит control plane? В Kubernetes Control Plane — это набор компонентов, которые управляют всей кластерной системой. Он отвечает за контроль над состоянием кластера, управлением узлами (nodes) и развертыванием приложений. 🟠kube-apiserver Что делает: Это центральный компонент, предоставляющий API для управления кластером. Почему нужен: Все взаимодействия, включая добавление/удаление узлов, создание подов и настройку сетей, проходят через API-сервер. Как работает: Принимает запросы от пользователей, kubectl, и других компонентов. Проверяет подлинность запросов и валидирует данные. Передает команды другим компонентам через REST API. 🟠etcd Что делает: Это распределённое key-value хранилище, которое сохраняет все данные о состоянии кластера. Почему нужен: Все данные о конфигурации, статусе и метаданных кластера сохраняются в etcd. Если etcd выходит из строя, кластер теряет свою управляемость. Как работает: Хранит информацию о подах, конфигурации сетей и статусе всех компонентов. Поддерживает консенсус между узлами, обеспечивая надёжность данных. 🟠kube-scheduler Что делает: Назначает поды на доступные узлы. Почему нужен: Без планировщика поды не смогут быть развернуты на узлах. Как работает: Считывает незапланированные поды из API-сервера. Анализирует доступные узлы на основе их ресурсов (CPU, память и т.д.). Назначает узел для каждого пода на основе алгоритмов (например, минимальная загрузка). 🟠kube-controller-manager Что делает: Управляет контроллерами, которые следят за состоянием ресурсов в кластере. Почему нужен: Контроллеры — это "надсмотрщики", которые автоматически исправляют отклонения от желаемого состояния. Как работает: Включает несколько встроенных контроллеров: Node Controller: Следит за доступностью узлов. Replication Controller: Поддерживает нужное количество реплик подов. Endpoint Controller: Обновляет Endpoints-объекты. Service Account Controller: Создает учетные записи для сервисов. 🟠cloud-controller-manager Что делает: Управляет интеграцией с облачными провайдерами (например, AWS, GCP). Почему нужен: Позволяет использовать облачные функции, такие как балансировка нагрузки, управление дисками и маршрутизацией. Как работает: Отвечает за создание LoadBalancer. Управляет постоянными томами (Persistent Volumes), связанными с облачными хранилищами. Ставь 👍 и забирай 📚 Базу знаний

❕ Бесплатный вебинар: «GitOps + Flux — ваш путь к автоматизированному деплою в Kubernetes»! Вы хотите развернуть приложение в
Бесплатный вебинар: «GitOps + Flux — ваш путь к автоматизированному деплою в Kubernetes»! Вы хотите развернуть приложение в Kubernetes без тонны ручных команд и нервов? Мечтаете о системе, где код сам «доставляется» в прод по принципу «закоммитил — заработало»? Приглашаем вас на открытый урок в рамках курса «Инфраструктурная платформа на основе Kubernetes , где разберём»: - как перестать вручную деплоить приложения; - как добиться стабильного состояния кластера; - как сделать процессы прозрачными и контролируемыми. 🗓 Когда: 23.12, в 20-00 Для кого: DevOps‑инженеры, разработчики, администраторы Kubernetes, все, кто хочет автоматизировать деплой. На уроке вы узнаете: 💚 Что такое GitOps и почему это новый стандарт работы с Kubernetes. 💚 Как Flux автоматизирует синхронизацию кластера с Git‑репозиторием. 💚Практические примеры настройки Flux для реальных сценариев. 💚Как избежать типичных ошибок при внедрении GitOps. 💚Какие преимущества даёт подход «конфигурация как код». После урока вы сможете: - настроить базовый пайплайн GitOps с Flux; - понять, как интегрировать Flux в существующую инфраструктуру; - оценить, подходит ли GitOps для вашего проекта. ➡️ Регистрирация: https://otus.pw/LUdW/ Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

🤔 Как Kafka записывает сообщения и как их отдаёт? - Producer отправляет сообщение в топик, который разбит на партиции. - Kafka записывает в лог-файл на диск. - Consumer читает сообщения, обращаясь к нужной партиции. - Каждый consumer хранит offset, Kafka ничего не удаляет, пока не истечёт retention. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Можно ли на лету изменить настройки dns контейнре через cli? Нет, нельзя изменить DNS у уже запущенного контейнера напрямую через CLI. Но есть обходные способы! 🚩Остановка и перезапуск контейнера с новыми DNS Самый надежный способ — перезапустить контейнер с нужными DNS-серверами
docker run --dns 8.8.8.8 --dns 8.8.4.4 -d my_container
Или задать DNS через docker network
docker network create mynet --dns=1.1.1.1
docker run --net=mynet -d my_container
🚩Изменение `/etc/resolv.conf` внутри контейнера (может сработать) Можно изменить DNS вручную внутри работающего контейнера
docker exec -it my_container sh
echo "nameserver 1.1.1.1" > /etc/resolv.conf
🚩Использование `network connect` (только для user-defined сетей) Можно подключить контейнер к другой сети с нужными DNS:
docker network create mynewnet --dns=8.8.8.8
docker network connect mynewnet my_container
🚩Изменение настроек `systemd-resolved` (для контейнеров с `host`-сетью) Если контейнер использует сеть хоста (--network host), можно поменять DNS на хосте:
resolvectl dns eth0 8.8.8.8
Ставь 👍 и забирай 📚 Базу знаний

🤔 Во сколько зонах можно включить репликацию в RDS Aurora? Aurora поддерживает до 5 read-replicas в разных зонах/регионах с высокой доступностью и кросс-региональным фейловером. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как оптимизировать имедж? Оптимизация Docker-имеджа (или другого контейнерного имеджа) необходима для уменьшения его размера, ускорения сборки, повышения безопасности и повышения производительности контейнеров. 🟠Используйте минимальную базовую ОС Почему: Базовый образ сильно влияет на размер. Например, alpine занимает ~5 МБ, в то время как ubuntu или debian могут превышать сотни мегабайт. Как: Замените базовый образ:
FROM alpine:latest
🟠Удаляйте ненужные файлы Почему: Временные файлы, кэш или артефакты сборки занимают место. Как: Добавьте команды для очистки временных данных:
RUN apt-get update && apt-get install -y curl \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
🟠Используйте многоэтапную сборку (multi-stage builds) Почему: Стадия сборки может содержать инструменты, которые не нужны в финальном образе. Как
# Стадия сборки
FROM golang:1.20 as builder
WORKDIR /app
COPY . .
RUN go build -o app .

# Финальный образ
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]
🟠Минимизируйте количество слоёв Почему: Каждый RUN, COPY, ADD создаёт новый слой. Слишком много слоёв увеличивают размер образа. Как: Объединяйте команды:
RUN apt-get update && apt-get install -y curl wget \
    && apt-get clean && rm -rf /var/lib/apt/lists/*
🟠Не сохраняйте секреты Почему: Переменные окружения с паролями или токенами могут быть случайно унаследованы. Как: Используйте Docker secrets или .env-файлы и исключайте их из COPY
ENV APP_ENV=production
🟠Кэшируйте зависимости Почему: Частое скачивание зависимостей замедляет сборку. Как: Переносите команды загрузки зависимостей ближе к началу:
COPY go.mod go.sum ./
RUN go mod download
🟠Проверяйте зависимости Почему: Устаревшие или ненужные зависимости увеличивают размер и могут содержать уязвимости. Как: Используйте сканеры вроде Trivy или Docker Scan для анализа.
trivy image myimage:latest
🚩Пример полного Dockerfile
# 1. Используем минимальный базовый образ
FROM node:20-alpine as builder

# 2. Устанавливаем зависимости
WORKDIR /app
COPY package*.json ./
RUN npm install

# 3. Копируем код
COPY . .

# 4. Собираем проект
RUN npm run build

# Финальный минимальный образ
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
CMD ["nginx", "-g", "daemon off;"]
Ставь 👍 и забирай 📚 Базу знаний

Пост для тех, кто устал от бесконечных отказов на собеседованиях. Все говорят: «Войти в IT легко!» Но на практике собеседован
Пост для тех, кто устал от бесконечных отказов на собеседованиях. Все говорят: «Войти в IT легко!» Но на практике собеседования валятся одно за другим. И это не потому что вы «не подходите». А потому что на джуна смотрят не по сертификатам и не по словам «ничего не знаю, но легко обучаем!», а по конкретным хард-скиллам. К сожалению или счастью, но это именно так. Эти хард-скиллы ждут уже на входе: • умение работать с логами • понимание, как работает API и авторизация • базовый SQL • умение разобрать ошибку, а не гадать • техническое мышление хоть на уровне основ Без этого кандидат теряется, и это чаще всего видно сразу. В канале Кирилла, руководителя технической поддержки T-Банка – эти навыки разбираются простыми, рабочими примерами: что спрашивают на собесах, что проверяют в тестовых, какие ошибки чаще всего допускают новички. Если хотите подготовиться, а не просто смотреть курсы ради мнимой уверенности на собесе – начните отсюда: 🔥@openstudyiteng

🤔 Какой номер порта используется для ping-коммуникации? Ping не использует порты, так как работает на уровне ICMP, а не TCP или UDP. ICMP — это протокол сетевого уровня, используемый для диагностики (например, ping, traceroute). Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Для чего используется clickhouse? ClickHouse – это высокопроизводительная колоночная база данных для аналитики. Она предназначена для быстрого выполнения аналитических запросов на больших объемах данных (миллиарды строк). Используется в BI-системах, логировании, мониторинге и обработке событий. 🚩Основные возможности 🟠Очень быстрые запросы за счёт хранения данных по колонкам и сжатия. 🟠Отлично масштабируется работает на одной машине или в кластере. 🟠Поддержка SQL работает с привычными SQL-запросами. 🟠Хорош для real-time аналитики обработка миллионов событий в секунду. 🟠Без индексов использует Primary Key + MergeTree, что упрощает оптимизацию. 🟠Хорошее сжатие данных благодаря специальным алгоритмам хранения. 🚩Где используется? 🟠Аналитика и отчёты BI-системы (анализ продаж, маркетинга, поведения пользователей). Агрегация данных по времени (финансы, реклама, ретеншн). 🟠Логирование и мониторинг Хранение логов (NGINX, Kubernetes, Clickstream). Аналитика событий в реальном времени. 🟠IoT и Big Data Обработка телеметрии с датчиков. Анализ поведения пользователей в приложениях. 🟠Пример работы с ClickHouse 1⃣Создание таблицы
CREATE TABLE visits (
    user_id UInt32,
    url String,
    duration UInt32,
    event_time DateTime
) ENGINE = MergeTree()
ORDER BY event_time;
2⃣Вставка данных
INSERT INTO visits VALUES (1, 'https://example.com', 30, now());
3⃣Аналитический запрос (например, среднее время посещения сайта)
SELECT url, AVG(duration) 
FROM visits 
GROUP BY url 
ORDER BY AVG(duration) DESC;
Ставь 👍 и забирай 📚 Базу знаний

🤔 Какие есть сущности в Kubernetes, минимальные и далее по возрастанию? - Pod — минимальная сущность, может содержать один или несколько контейнеров. - ReplicaSet — управляет количеством pod'ов. - Deployment — управляет ReplicaSet'ами, обновлениями и откатами. - Service — обеспечивает доступ к pod'ам. - Namespace — логическое разделение ресурсов. - Node — физическая или виртуальная машина. - Cluster — объединение всех вышеуказанных компонентов. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как определить опции запуска пайплайна при редактировании определенных ресурсов в гите? При работе с CI/CD (GitHub Actions, GitLab CI, Jenkins) часто нужно запускать пайплайн только при изменении определенных файлов. Это помогает оптимизировать сборку, экономить ресурсы и время. 🚩В GitHub Actions (on: push, paths) В GitHub Actions можно указать файлы, изменения в которых запустят пайплайн.
name: Infra Pipeline
on:
  push:
    paths:
      - 'infra/**'
      - 'k8s/**'
  pull_request:
    paths:
      - 'infra/**'
      - 'k8s/**'
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
      - name: Deploy Infrastructure
        run: ./deploy.sh
🚩В GitLab CI/CD (only: changes) В GitLab можно настроить запуск пайплайна по изменению файлов с помощью only: changes.
stages:
  - deploy

terraform:
  stage: deploy
  script:
    - terraform apply -auto-approve
  only:
    changes:
      - terraform/**
🚩В Jenkins (when { changes }) В Jenkins Declarative Pipeline можно использовать when { changes } для проверки измененных файлов.
pipeline {
    agent any
    stages {
        stage('Deploy Ansible') {
            when { changes path: 'ansible/**' }
            steps {
                sh './deploy_ansible.sh'
            }
        }
        stage('Deploy Helm') {
            when { changes path: 'helm/**' }
            steps {
                sh './deploy_helm.sh'
            }
        }
    }
}
Ставь 👍 и забирай 📚 Базу знаний

Акриловые подоконники — финальный штрих ремонта Пластиковый подоконник портит весь вид? Пора на уровень выше. Акриловый камен
Акриловые подоконники — финальный штрих ремонта Пластиковый подоконник портит весь вид? Пора на уровень выше. Акриловый камень — материал, который выглядит дорого, служит десятилетиями и не боится влаги и не теряет первоначальный вид. ✅ 14 оттенков в наличии. ✅ Фиксированная цена — от 2700 ₽. ✅ Быстрая доставка. ✅ 15 лет гарантии. Выбирайте подоконник, который подчеркнёт стиль вашего дома. Перейти на сайт #реклама podokonniki-online.ru О рекламодателе

🤔 Что будет происходить после внесения изменений в image? - Сборка создаст новый слой поверх существующего; - Старый image сохраняется, пока не удалён; - Изменения можно сравнить, протестировать или запушить в репозиторий; - При развертывании — будет использоваться обновлённая версия образа. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Какие Enterprise Firewall знаешь? В мире корпоративных (Enterprise) межсетевых экранов (firewall) существует множество решений от разных вендоров. Основные из них: 🟠Palo Alto Networks (Next-Generation Firewall, NGFW) Palo Alto — один из лидеров в сфере NGFW. Он использует глубокий анализ трафика и машинное обучение для выявления угроз. Контроль трафика на уровне приложений (App-ID) Инспекция SSL/TLS Встроенная защита от вредоносных программ (WildFire) Интеграция с SIEM/SOAR 🟠Cisco Firepower (ранее ASA с FirePOWER Services) Cisco Firepower объединяет традиционные возможности Cisco ASA с функциями, полученными после покупки Sourcefire. IPS/IDS (интеграция с Snort) Защита от атак нулевого дня Автоматизация защиты на базе машинного обучения Полная интеграция с экосистемой Cisco 🟠3. Fortinet FortiGate Fortinet — это NGFW, ориентированный на производительность и безопасность. Встроенный SD-WAN Антивирусный сканер и веб-фильтрация DLP (Data Loss Prevention) Поддержка IoT и OT-безопасности 🟠Check Point Next Generation Firewall Check Point — один из старейших игроков в сфере межсетевых экранов, известный своими решениями безопасности. Инспекция шифрованного трафика Защита от APT (Advanced Persistent Threats) Встроенный Threat Intelligence (ThreatCloud) - Многослойная защита от DoS/DDoS 🟠Juniper Networks SRX Juniper предлагает мощные межсетевые экраны, которые часто используются в телекоммуникациях. Высокая производительность Поддержка виртуализации (vSRX) Гибкая маршрутизация и VPN Интеграция с AI для автоматического обнаружения угроз 🟠Huawei USG (Unified Security Gateway) Huawei предлагает сетевые экраны для корпоративного и государственного сектора. Интеграция с 5G-сетями Встроенные функции DDoS-защиты Высокая масштабируемость Ставь 👍 и забирай 📚 Базу знаний

🤔 С каким флагом использовать pg_dump, чтобы сжать бэкап? Чтобы получить сжатый архив, используй формат custom: - Флаг -Fc — это формат custom, который: - создаёт сжатый файл - можно частично восстанавливать - совместим с pg_restore Или можешь перенаправить в gzip, но -Fc предпочтительнее, если нужен сжатый дамп с гибкой структурой. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Купите квартиру на Юге. Отдыхайте на море и в горах! ЖК "Гарантия PRIME" в Краснодаре — это: 😊 Теплый климат и природа за ок
Купите квартиру на Юге. Отдыхайте на море и в горах! ЖК "Гарантия PRIME" в Краснодаре — это: 😊 Теплый климат и природа за окном Просыпайтесь в окружении парков, леса и набережной. Дышите чистым воздухом, гуляйте вечерами в авторском саду с фонтанами. 🚗 Море и горы — на расстоянии выезда на выходные Всего 2 часа до пляжей Черного моря и 4 часа до склонов Красной Поляны. Ваш активный отдых доступен каждые выходные! 🏠 Всё для жизни «здесь и сейчас» Свой гастрономический кластер, арт-пространство и деловой хаб прямо во дворе. Живите в ритме южного курорта, не выезжая из города. 🎓 Среда для роста: от детского сада до университета. Ваши дети учатся в престижных школах прямо во дворе, а Университет КубГУ в 10 мин езды. Система образования по международным стандартам для Ваших детей. Ваша личная резиденция на Юге! Узнать больше Проектная декларация на сайте https://наш.дом.рф/. #реклама gk-garantiaprime.ru О рекламодателе

🤔 Почему плохо запускать контейнер от рута? Запуск контейнеров от имени пользователя root (рута) в Docker является обычной практикой, но это может привести к серьезным проблемам безопасности. Вот основные причины, почему это считается плохой практикой: 🟠Повышение рисков безопасности: Эксплуатация уязвимостей: Если злоумышленник получает доступ к контейнеру, запущенному от имени root, он может легко использовать уязвимости контейнера для атаки на хост-систему. Злоумышленники: Контейнеры могут содержать уязвимые или злонамеренные коды, которые при запуске с привилегиями root могут получить доступ к чувствительной информации или вызвать сбои. 🟠Отсутствие изоляции: Гостевая изоляция: Контейнеры должны быть изолированы от хост-системы. Запуск контейнера от имени root нарушает эту изоляцию, так как root внутри контейнера — это также root на хосте. Повышенные привилегии: Контейнеры, запущенные от имени root, могут иметь доступ к системным ресурсам, что увеличивает риск нарушения безопасности. 🟠Нарушение принципа наименьших привилегий: Принцип наименьших привилегий: Этот принцип гласит, что процесс должен иметь только те привилегии, которые необходимы для выполнения его задач. Запуск контейнера от имени root нарушает этот принцип, предоставляя ему избыточные права. 🚩Примеры проблем 🟠Повышение привилегий: Если в контейнере, запущенном от имени root, найдена уязвимость, злоумышленник может использовать ее для выполнения команд с привилегиями root на хосте, что может привести к серьезным нарушениям безопасности. 🟠Доступ к файловой системе хоста: Контейнер, запущенный от имени root, может получить доступ к критически важным файлам хостовой системы, изменять их или удалять, что может привести к нарушению работы всей системы. 🚩Как избежать запуска контейнеров от рута Использование непривилегированных пользователей: В Dockerfile можно создать пользователя с ограниченными привилегиями и переключиться на него.
FROM ubuntu:20.04
RUN useradd -m myuser
USER myuser
CMD ["myapp"]     
Использование флага --user: При запуске контейнера можно использовать флаг --user, чтобы указать непривилегированного пользователя.
docker run --user 1000:1000 myapp
Использование механизмов безопасности Docker: Использование профилей seccomp для ограничения системных вызовов. Использование AppArmor или SELinux для ограничения доступа контейнеров к системным ресурсам. Ставь 👍 и забирай 📚 Базу знаний

Спокойствие длится до первого напоминания о налогах Вы едете в отпуск, думаете о море и тёплом солнце, и вдруг всплывает мысль: декларация так и не сдана. Теперь вместо отдыха в голове только сроки и возможные штрафы. Это и есть реальность предпринимателя без поддержки: бизнес стоит, отдых не отдых. ✨ С «Моим делом» отчётность уходит вовремя, напоминания приходят заранее, и никакой сюрприз не застанет вас в дороге. Вы отдыхаете, а мы берём на себя всё остальное. Узнать больше #реклама autsorsing.moedelo.org О рекламодателе

🤔 Какие уровни модели TCP/IP? 1. Прикладной (Application) — HTTP, FTP, DNS, SMTP и др. 2. Транспортный (Transport) — TCP, UDP. 3. Сетевой (Internet) — IP, ICMP, ARP. 4. Канальный (Link/Network Access) — Ethernet, Wi-Fi, драйверы устройств. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Видим что места нет находим большой файл 5 Гб например удаляем его а пишет что места всё равно нет в чём причина? В Linux удаленный файл может оставаться в памяти, если он все еще используется запущенным процессом. Это происходит, потому что файл не удаляется физически, пока его дескриптор (file descriptor) открыт. Файл все еще используется процессом Файл удален, но все еще открыт (deleted в /proc) Файл удален, но был записан в смонтированный том 🚩Проверить, какие процессы держат удаленный файл (`lsof`) Команда
lsof | grep deleted
Вывод
nginx     1234  www-data   4w   REG  8,1  5G   /var/log/nginx/access.log (deleted)
Решение: Перезапустить процесс:
systemctl restart nginx
или
kill -HUP 1234  # Закрыть процесс (PID = 1234)
🚩Освободить место вручную (`/proc`) Если процесс нельзя перезапустить, можно освободить занятую память без перезапуска.
ls -l /proc/*/fd/ | grep deleted
Вывод
lrwx------ 1 root root 64 Feb 21 14:23 /proc/5678/fd/4 -> /var/log/nginx/access.log (deleted)
Очистить файл, не перезапуская процесс
> /proc/5678/fd/4
🚩Проверить монтирование (Docker, NFS, tmpfs) Если файл хранился в смонтированном томе, он может не удалиться сразу. Проверить монтированные диски:
df -h
mount | grep /var/log
Если файл был в Docker-контейнере, проверить объемы:
docker system df
Ставь 👍 и забирай 📚 Базу знаний