Logo
TGCATALOG
Каталог Подборки Блог
DevOps - вопросы собесов

DevOps - вопросы собесов

Собесы DevOps.

Нет оценок
2,065
27.10.2026
2,065
27.10.2026
Нет оценок
2,065
27.10.2026
Безопасный переход через бот
О канале

Собесы DevOps.

Подписчиков 5,577
Тематика Технологии
Язык Русский
Ссылка t.me/easy_devops

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Вопросы для собеседований по DevOps.

Последние посты

DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Как дебажить поды в Kubernetes? Когда под (Pod) не работает или ведёт себя странно, нужно уметь его дебажить. 🟠Проверить статус пода Сначала смотрим, работает ли под вообще kubectl get pods 🟠Посмотреть логи контейнера Если под запустился, но работает странно, смотрим логи: kubectl logs pod-name Если в поде несколько контейнеров: kubectl logs pod-name -c container-name Если под перезапускается, а нам нужны старые логи: kubectl logs pod-name --previous 🟠Проверить события (`describe`) Смотрим подробную информацию о поде: kubectl describe pod pod-name 🟠Зайти внутрь контейнера (`exec`) Если под запущен, можно подключиться внутрь и посмотреть файлы, процессы: kubectl exec -it pod-name -- /bin/sh Если в контейнере есть только bash: kubectl exec -it pod-name -- /bin/bash Полезные команды внутри контейнера: ps aux # Смотрим запущенные процессы netstat -tulnp # Проверяем открытые порты env # Проверяем переменные окружения cat /etc/resolv.conf # Проверяем DNS 🟠Проверить манифест пода (`get pod -o yaml`) Если под ведёт себя странно, можно посмотреть его полное описание: kubectl get pod pod-name -o yaml 🟠Проверить ресурсы (describe node) Иногда под не запускается из-за нехватки CPU или памяти. Проверяем узел (node): kubectl describe node node-name Если проблема с ресурсами, будет что-то вроде: Warning FailedScheduling insufficient memory 🟠Проверить сеть (`nslookup`, `ping`, `curl`) Если под не может достучаться до сервиса, тестируем сеть: kubectl exec -it pod-name -- nslookup service-name kubectl exec -it pod-name -- ping 8.8.8.8 kubectl exec -it pod-name -- curl Ссылка скрыта 🟠Дебажить с помощью `kubectl debug` (Kubernetes 1.23+) Если под не стартует, можно запустить дебажный контейнер kubectl debug pod-name -it --image=busybox Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Удалил файлы, но место не очищается, в чем дело? Если вы удалили файлы, но место на диске не освободилось, это может происходить по нескольким причинам. 🚩Файл все еще используется процессом Если файл удален, но он открыт каким-либо процессом, его содержимое остается в памяти или файловой системе до завершения работы этого процесса. Это называется "удаление с дескриптором". 🟠Как проверить: Используйте команду lsof (list open files), чтобы найти процессы, удерживающие файл lsof | grep deleted 🟠Как исправить Перезапустите процесс или завершите его с помощью kill: kill -9 🚩Файл удален, но он находился в другом файловом пространстве Например: - Файл был удален внутри Docker-контейнера, но место занято в образе. - Файл находился на смонтированном диске, и удаление произошло в другом контексте. 🟠Как проверить Убедитесь, что вы работаете в правильной файловой системе: df -h 🟠Как исправить Убедитесь, что удаление происходит в нужной директории или файловой системе. 🚩Файл был удален из директории, но находится в другой ссылке (hard link) Если файл имеет несколько жестких ссылок, удаление одного из них не освободит место до тех пор, пока не удалены все ссылки. 🟠Как проверить Используйте команду find, чтобы найти оставшиеся ссылки: find / -samefile 🟠Как исправить Удалите все ссылки на файл. 🚩Файл был удален, но находился в файловой системе с квотой Если используется файловая система с ограничением (например, квоты пользователей или групп), возможно, квота пользователя исчерпана, и это мешает очистке. 🟠Как проверить Проверьте квоты: quota -u 🟠Как исправить Убедитесь, что квоты настроены правильно, или освободите больше места. 🚩Кэшированные данные или временные файлы Иногда удаленные файлы остаются в виде кэша, временных данных или не удаляются из корзины. 🟠Как проверить Очистите кэш или проверьте корзину. Например, для очистки временных файлов sudo du -sh /tmp sudo rm -rf /tmp/* 🟠Как исправить Удалите временные файлы, очистите кэш: sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое squash в Docker? В Docker термин "squash" (от англ. "раздавить", "сплющить") относится к процессу объединения нескольких слоев образа Docker в один. Это делается для уменьшения размера итогового образа и оптимизации хранения. 🚩Зачем нужен `squash`? Docker-образы состоят из последовательности слоев. Каждый слой создается на основе команд в Dockerfile. Например, если ваш Dockerfile выглядит так: FROM ubuntu:latest RUN apt update && apt install -y nginx RUN echo "Hello, World!" > /usr/share/nginx/html/index.html 🚩Как использовать `squash`? В Docker squash можно выполнить с помощью флага --squash при сборке образа: docker build --squash -t my-squashed-image . Для включения экспериментального режима: 1. Открываем /etc/docker/daemon.json (или создаем, если его нет). 2. Добавляем строку "experimental": true. 3. Перезапускаем Docker: systemctl restart docker 🚩Пример с `squash` Без --squash docker history my-image С --squash docker build --squash -t my-squashed-image . docker history my-squashed-image Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Как решить проблему, если Jenkins не видит merge request и ветки из GitLab? - Убедиться, что используется GitLab Plugin. - Включить webhook из GitLab. - Установить refspec: - +refs/merge-requests/*/head:refs/remotes/origin/mr/* - Убедиться, что Jenkins имеет доступ к правильным permissions в GitLab. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что за протокол http, зачем он нужен? HTTP (HyperText Transfer Protocol) — это протокол передачи данных в интернете. Он используется для обмена данными между клиентом (браузером) и сервером. 🚩Пример работы HTTP Браузер отправляет запрос → "GET /index.html HTTP/1.1". Сервер отвечает → HTML-страницей (200 OK). Браузер отображает страницу. 🚩Основные принципы HTTP Клиент-серверная модель → браузер запрашивает, сервер отвечает. Без состояния (stateless) → каждый запрос независим (нет сессий). Текстовый протокол → данные передаются в читаемом формате. 🚩Структура HTTP-запроса Пример запроса от браузера к серверу GET /index.html HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Что такое config map в кубере? ConfigMap в Kubernetes – это механизм хранения конфигурационных данных. Он позволяет разделять код приложения и настройки, храня конфигурацию в виде ключ-значение. ConfigMap удобен для передачи переменных окружения, файлов конфигурации, командных аргументов без изменения образа контейнера. 🚩Основные способы использования ConfigMap 🟠Переменные окружения передача настроек через ENV. 🟠Файлы конфигурации монтирование в контейнер как файл. 🟠Параметры командной строки передача аргументов в command. 🚩Как создать ConfigMap? 1⃣Создание из манифеста apiVersion: v1 kind: ConfigMap metadata: name: my-config data: APP_ENV: "production" LOG_LEVEL: "debug" CONFIG_FILE: | [settings] mode = "production" debug = true 2⃣Создание из командной строки kubectl create configmap my-config --from-literal=APP_ENV=production --from-literal=LOG_LEVEL=debug 3⃣Создание из файла kubectl create configmap my-config --from-file=config.ini 🚩Как использовать ConfigMap в подах? 1⃣Как переменные окружения apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: app image: my-app env: - name: APP_ENV valueFrom: configMapKeyRef: name: my-config key: APP_ENV 2⃣Как монтируемый файл apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: app image: my-app volumeMounts: - name: config-volume mountPath: "/etc/config" volumes: - name: config-volume configMap: name: my-config Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Как сделать донастройку контейнера? Донастройка контейнера может понадобиться, если: Нужно изменить файлы конфигурации. Установить дополнительные пакеты. Задать переменные среды. Подключить тома или сети. Варианты донастройки: через Dockerfile, docker-compose, exec, тома и Entrypoint/CMD. 🟠Донастройка через Dockerfile (Лучший способ) Если контейнер нужно модифицировать перед запуском, создаем свой Dockerfile на основе существующего образа. FROM nginx:latest COPY my-nginx.conf /etc/nginx/nginx.conf CMD ["nginx", "-g", "daemon off;"] Собираем новый образ docker build -t my-nginx . docker run -d -p 80:80 my-nginx 🟠Донастройка через `docker-compose` (Гибкость) Можно задать окружение, тома, команды. version: '3' services: db: image: postgres:15 environment: POSTGRES_USER: admin POSTGRES_PASSWORD: secret POSTGRES_DB: mydb volumes: - ./custom-postgres.conf:/etc/postgresql/postgresql.conf command: postgres -c config_file=/etc/postgresql/postgresql.conf Запуск docker-compose up -d 🟠Донастройка запущенного контейнера (`docker exec`) Если контейнер уже работает, можно внести изменения прямо в него. docker exec -it my-container bash apt update && apt install -y vim 🟠Донастройка через тома (Volumes) Если нужно изменять файлы без пересборки образа, подключаем тома. docker run -d -p 80:80 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf nginx 🟠Использование `ENTRYPOINT` или `CMD` Можно задать скрипт донастройки, который выполнится при старте контейнера. FROM postgres:15 COPY setup.sh /docker-entrypoint-initdb.d/setup.sh RUN chmod +x /docker-entrypoint-initdb.d/setup.sh В setup.sh: #!/bin/bash psql -U postgres -d mydb -c "CREATE TABLE test (id SERIAL PRIMARY KEY);" Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 В чем разница Deployment и DaemonSet? Deployment и DaemonSet являются двумя типами контроллеров, которые управляют развертыванием и обеспечением жизненного цикла подов (групп контейнеров). Они оба играют важные роли, но используются для разных целей и сценариев. 🚩Deployment Это контроллер, который обеспечивает декларативное обновление подов и ReplicaSets (другой тип контроллера, который управляет одновременным запуском нескольких экземпляров одного и того же пода). Deployment поддерживает непрерывное развертывание, откат к предыдущим версиям, а также масштабирование подов. 🟠Масштабирование Вы можете увеличивать или уменьшать количество подов в зависимости от нужд. 🟠Обновления Поддерживает стратегии развертывания, такие как Rolling Update (постепенное обновление), которое помогает минимизировать простои при обновлении приложения. 🟠Самовосстановление Автоматически перезапускает поды, которые перестали работать, находятся в ошибочном состоянии или не отвечают. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 🚩DaemonSet Это контроллер, который гарантирует, что на каждом узле кластера Kubernetes запущен экземпляр заданного пода. Когда добавляется новый узел, на нем автоматически запускается под, управляемый DaemonSet, и если узел удаляется, поды удаляются автоматически. Это идеально подходит для запуска служб мониторинга, сбора логов или других утилит, которые должны быть запущены на каждом узле. 🟠Гарантия запуска Убедитесь, что каждый узел кластера запускает копию определённого пода. 🟠Автоматическое размещение Когда добавляются новые узлы, на них автоматически размещаются необходимые поды. 🟠Службы уровня узла Идеально подходит для запуска системных служб, таких как коллекторы логов, системы мониторинга и другие. apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd-elasticsearch spec: selector: matchLabels: name: fluentd-elasticsearch template: metadata: labels: name: fluentd-elasticsearch spec: containers: - name: fluentd-elasticsearch image: fluent/fluentd:v1.0 volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
DevOps - вопросы собесов
🔒Открыть пост
и посмотреть медиа
🤔 Из чего состоит ELK стек? ELK (Elasticsearch, Logstash, Kibana) – это стек для сбора, обработки, хранения и визуализации логов. Он помогает DevOps-инженерам анализировать логи в реальном времени и выявлять проблемы в системе. 🚩Elasticsearch – хранилище и поиск логов - Хранит структурированные и неструктурированные данные (логи, метрики) - Поддерживает быстрый полнотекстовый поиск - Использует кластеризацию для высокой доступности json GET /logs/_search { "query": { "match": { "message": "error" } } } 🚩Logstash – обработка и отправка логов - Собирает логи из файлов, TCP, Kafka, Beats - Фильтрует и преобразует данные перед отправкой в Elasticsearch - Поддерживает шифрование и маршрутизацию yaml input { file { path => "/var/log/nginx/access.log" start_position => "beginning" } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["Ссылка скрыта } } 🚩Kibana – визуализация и анализ - Позволяет строить дашборды и графики - Делает поиск по логам и метрикам - Визуализирует реальное время работы системы message: "error" AND @timestamp:[now-24h TO now] 🚩Как ELK-стек работает вместе? Logstash собирает и обрабатывает логи Отправляет их в Elasticsearch Kibana визуализирует данные yaml version: "3" services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.5.0 environment: - discovery.type=single-node ports: - "9200:9200" logstash: image: docker.elastic.co/logstash/logstash:8.5.0 depends_on: - elasticsearch volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf ports: - "5044:5044" kibana: image: docker.elastic.co/kibana/kibana:8.5.0 depends_on: - elasticsearch ports: - "5601:5601" Ставь 👍 и забирай 📚 Базу знаний
DevOps - вопросы собесов
Динамика подписчиков
+0.3% за 30 дней
Текущие
5,577
Месяц назад
5,558
Средний рост
+1 / день
Обновлено
2 дня назад

Отзывы о канале DevOps - вопросы собесов

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход