IT Academy
Справочник курса

Контейнеры и 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 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.