Библиотека собеса по DevOps | вопросы с собеседований
3.11K subscribers
153 photos
7 videos
2 files
364 links
Вопросы с собеседований по DevOps и ответы на них.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d7e18893

Для обратной связи: @proglibrary_feeedback_bot
Download Telegram
Объясните, что такое распределенные вычисления (или распределенные системы).

По словам Мартина Клеппманна:
«Множество процессов, работающих на многих машинах... только передача сообщений через ненадежную сеть с переменными задержками, и система может страдать от частичных сбоев, ненадежных часов и остановок процессов».

Другое определение: «Системы, которые физически разделены, но логически связаны».


Библиотека собеса по DevOps
Как выполняются обновления и откаты в Kubernetes?

Развёртывания Kubernetes поддерживают непрерывные обновления, что позволяет избежать простоев. Вы можете выполнить непрерывные обновления, отредактировав развёртывание или явно указав новую версию его образа, используя:
kubectl set image deployment/my-deployment nginx=nginx:1.21

Затем вы можете проверить статус развертывания:
kubectl rollout status deployment my-deployment

Если вы хотите вернуться к предыдущей версии, вы можете выполнить:
kubectl rollout undo deployment my-deployment


Библиотека собеса по DevOps
Как спроектировать Docker-образ для продакшна так, чтобы он был маленький, быстро собирался, воспроизводился и был безопасным?

Multi-stage build: отдельно builder и runtime; в финал копируйте только артефакты.

База: минимальные образы (distroless/scratch) уменьшают поверхность атаки; Alpine лёгкий, но musl ≠ glibc — учитывайте совместимость.

Кэш и слои: сначала копируйте lock-файлы зависимостей, устанавливайте deps, затем код — так сохраните кэш; используйте .dockerignore.

BuildKit: включайте BUILDKIT; --mount=type=cache для кэша зависимостей, --mount=type=secret для секретов (не оставляйте их в слоях).

COPY vs ADD: по умолчанию COPY; ADD только для авто-распаковки tar/редких кейсов.

ENTRYPOINT/CMD: используйте exec-форму; ENTRYPOINT — бинарь, CMD — дефолтные аргументы.

Безопасность: USER — непривилегированный; read-only FS, drop capabilities, никакого --privileged; пакеты и компиляторы не тащите в финальный слой.

Воспроизводимость: пингуйте версии и базовые образы по digest, избегайте latest; фиксируйте часовой пояс/локаль если важно.

Runtime-гигиена: HEALTHCHECK, лимиты ресурсов, логи в stdout/stderr, состояние — только во внешних томах.

Снабжение артефактами: публикуйте SBOM/подписи (provenance, cosign) и прогоняйте image-сканы на уязвимости.

Мультиархитектура: buildx/manifest list для --platform (amd64/arm64) без двойной поддержки образов.


Библиотека собеса по DevOps
Что такое CRI?

CRI означает интерфейс выполнения контейнера. Это спецификация, описывающая определенный уровень абстракции, позволяющая унифицированно использовать различные версии программного обеспечения для работы с контейнерами, такими как Containerd или CRI-O.

Библиотека собеса по DevOps