1184 вопроса для подготовки на позицию DevOps-инженер
1184 вопроса1634 компании353 технологии
Что проверяют на интервью
Как устроена подборка
Подборка помогает системно подготовиться к интервью на позицию DevOps-инженер: проверить теорию, потренировать практические задачи и объяснение решений. В подборке чаще встречаются темы: devops, infrastructure, kubernetes.
Sidecar — отдельный контейнер рядом с приложением в Pod; Envoy может перехватывать сетевой трафик и применять общие политики. В sidecar-режиме Istio управляет конфигурацией и идентичностью прокси.
RUN выполняет команду при сборке Docker-образа, а CMD задаёт команду или аргументы по умолчанию при запуске контейнера. CMD не запускается во время сборки.
Kubernetes поддерживает заданное состояние через контроллеры: число Pod, их конфигурацию и обновления. Scheduler размещает Pod на узлах, а масштабирование меняет число экземпляров или ресурсы.
Docker-контейнеры меняют упаковку и запуск, но не превращают монолит в микросервисы. Нужны осмысленные границы ответственности, контрактов, данных и независимого выпуска.
Именованный Docker volume создаётся командой docker volume create. Чтобы данные действительно сохранялись, volume нужно подключить к каталогу данных контейнера.
CPU-квота cgroup ограничивает время выполнения, а не обязательно видимое число процессоров. Поэтому os.cpu_count() может видеть 64 CPU, хотя контейнеру разрешено лишь 2 CPU-времени.
Namespaces изолируют представление процессов, сети и файловых систем; cgroups учитывают и ограничивают ресурсы. CPU-лимит ограничивает доступное процессорное время, а память нельзя просто отложить.
CrashLoopBackOff означает повторные завершения контейнера с задержкой перед очередным перезапуском. Это видимое состояние ожидания, а не отдельная фаза жизненного цикла Pod.
ENTRYPOINT задаёт основную исполняемую команду, CMD — команду по умолчанию либо её аргументы. В exec-форме аргументы после image заменяют CMD, а ENTRYPOINT меняют через --entrypoint.
Слои образа Docker — неизменяемые наборы изменений файловой системы. Они позволяют повторно использовать общие данные и кешировать сборку; поверх них контейнер получает свой записываемый слой.
Размещают не объект Service, а его Pods: пометьте нужные узлы labels и задайте nodeSelector либо node affinity в Pod template. Service затем маршрутизирует трафик к подходящим Pods.