Контейнеры и Kubernetes
Все объяснения, задачи и лабораторная в одном месте.
Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.
1. Namespaces, cgroups и OCI images
Объяснение
Контейнер использует namespaces и cgroups хоста. Образ не является виртуальной машиной и не содержит отдельное ядро. Необходимые ресурсы и привилегии задаются явно.
Задача для самостоятельного решения
Почему privileged-контейнер требует осторожного рассмотрения?
Показать разбор ответа
Он получает расширенные возможности взаимодействия с хостом. Для обычного приложения достаточно непривилегированного пользователя и минимальных capabilities.
2. Pods, Deployments и scheduling
Объяснение
Pod — единица размещения связанных контейнеров. Deployment поддерживает нужное число реплик и обновления. Эфемерность Pod означает, что локальные файлы нельзя считать долговременным хранилищем.
Задача для самостоятельного решения
Где хранить пользовательские uploads?
Показать разбор ответа
Во внешнем объектном хранилище или подходящем persistent volume, а не только в writable layer Pod.
3. Services, ingress и network policies
Объяснение
Service даёт стабильную точку доступа к динамическим Pods. Readiness управляет включением endpoint в трафик. NetworkPolicy ограничивает связи при поддержке сетевого плагина.
Задача для самостоятельного решения
Pod работает, но Service не отвечает. Что проверить?
Показать разбор ответа
Labels/selectors, readiness, targetPort, endpoints и сетевые политики. Статус Running сам по себе не доказывает готовность приложения.
4. Volumes, stateful workloads и backup
Объяснение
PersistentVolumeClaim запрашивает хранилище, а StorageClass описывает его предоставление. Access mode не является заменой механизма согласования записей приложения. Backup нужен независимо от устойчивости volume.
Задача для самостоятельного решения
Защищает ли PVC от ошибочного удаления данных приложением?
Показать разбор ответа
Нет: запись удаления попадёт на тот же volume. Нужны snapshots/backup с проверенным восстановлением и политикой хранения.
5. Config, secrets, RBAC и admission
Объяснение
Requests участвуют в планировании, limits ограничивают потребление. Liveness и readiness имеют разные цели. Ошибка настройки probes может создать цикл рестартов при высокой нагрузке.
Задача для самостоятельного решения
Почему liveness, зависящий от БД, может ухудшить аварию БД?
Показать разбор ответа
Все Pods перезапускаются одновременно, создавая новый всплеск соединений. Внешнюю зависимость обычно отражают readiness и отдельные alerts.
6. Autoscaling, upgrades и troubleshooting
Объяснение
Rollout должен учитывать capacity, совместимость и состояние. RBAC ограничивает действия в API. Secret в Kubernetes требует контроля доступа и защиты хранения; само имя Secret не гарантирует шифрования всех копий.
Задача для самостоятельного решения
Что проверять перед обновлением StatefulSet?
Показать разбор ответа
Порядок рестартов, quorum, совместимость данных, backup и восстановление. Механизм оркестратора не знает всех инвариантов базы.
Лабораторная работа
Подготовка
Учебный локальный Kubernetes-кластер. YAML — минимальный пример Deployment, не готовый production-манифест.
Учебный пример
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-lab
spec:
replicas: 2
selector:
matchLabels: {app: web-lab}
template:
metadata:
labels: {app: web-lab}
spec:
containers:
- name: web
image: nginx:stable
ports: [{containerPort: 80}]Как работает пример и что ожидать
Selector совпадает с labels Pod, поэтому Deployment управляет двумя репликами. В примере намеренно нет Service, probes и resource limits: добавьте их на следующем шаге. Тег stable изменяем; в воспроизводимом проекте закрепите проверенный digest.
Итоговая работа
Создайте Service, readiness/liveness, requests/limits и непривилегированный совместимый образ. Проверьте удаление одного Pod и rollout. Для состояния используйте подходящее хранилище и отдельно продемонстрируйте восстановление.
Проверка результата
1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.
Как оценить работу
По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.