Контейнеры и оркестрация без магии
Кластер, собранный кем-то до вас, ведёт себя как чёрный ящик ровно до того момента, пока вы не знаете пяти вещей: что такое образ, зачем нужен реестр, как устроен лимит, где живёт состояние и по какому числу планировщик выбирает узел. После этого поведение становится предсказуемым, а разбор отказа — работой на десять минут вместо перебора наугад.
Это лекция про модель, а не про команды. Имена параметров и вид команд у платформ разные; механика одна, и именно она объясняет, почему контейнер убит с кодом 137, почему узел отвечает «недостаточно памяти» при гигабайтах свободной и почему перезапуск иногда делает хуже.
Образ → реестр → лимиты ресурсов → состояние → планировщик. Каждый следующий опирается на предыдущий, и на каждом есть типовой отказ, который вы увидите на дежурстве.
Что внутри
- Определение контейнера, записанное приказом ФСТЭК России № 118, и почему пять слов из него объясняют и скорость запуска, и слабость изоляции
- Образ как граф: почему двадцать образов по 400 МБ занимают в реестре меньше восьми гигабайт и почему тег может смениться под тем же именем
- Реестр как единственная точка отказа: пороги частоты, эпизод мая 2024 года и зачем нужно кэширующее зеркало
- Лимиты: окно в 100 миллисекунд, троттлинг, арифметика кода 137 и разница между запросом и лимитом
- Планировщик: почему узел «полон» при свободной памяти, кто первым уходит на вытеснение и откуда взялось число 110
- Состояние, обновления и разбор отказа Reddit на 314 минут
- Российский контур: классы защиты, уровни доверия и то, что проверяется в реестре ФСТЭК, а не в письме поставщика
Стадии конвейера поставки, стратегии выката и критерий отката, описание инфраструктуры кодом, четыре сигнала наблюдаемости, расчёт ёмкости кластера и регламент бэкапа разбираются в соседних лекциях. Здесь они названы там, где без них не обойтись, но не разворачиваются.
Практический навык ставится руками на стенде. Текст с тестами так не умеет и не притворяется: он даёт модель, которая объясняет поведение и переживает смену конкретной платформы.
Контейнер — процесс на чужом ядре
Начнём с определения, у которого есть номер и дата. Самая точная формулировка контейнера в российском праве записана в пункте 1 Требований по безопасности информации к средствам контейнеризации, утверждённых приказом ФСТЭК России от 4 июля 2022 г. № 118. Приказ зарегистрирован Минюстом России 29 сентября 2022 г.
«…программным средствам, обеспечивающим создание и функционирование изолированных программных сред на основе ядра хостовой операционной системы (далее — контейнеры) в информационной (автоматизированной) системе (далее — средства контейнеризации)».
Ключевые пять слов — на основе ядра хостовой операционной системы. Регулятор зафиксировал главное отличие от виртуальной машины прямо в определении: у виртуальной машины ядро своё, у контейнера — чужое, общее с хостом и со всеми соседними контейнерами на той же машине.
Гипервизор даёт машине собственное ядро операционной системы. Граница между машинами проходит по гипервизору.
Ядро одно на весь хост. Контейнер — это процесс хоста, которому ядро показывает урезанную картину мира.
Что из этого следует
- Скорость запуска. Поднимать ядро не надо — стартует процесс.
- Малый вес образа. Ядро в образ не кладут, оно уже есть на узле.
- Изоляция принципиально слабее, чем у виртуальной машины. Общий компонент есть, и ошибка в нём общая для всех.
Три следствия выше объясняют почти всё дальнейшее поведение: и то, почему контейнер запускается за секунды, и то, почему его нельзя ставить вместо виртуальной машины там, где нужна граница доверия. Одно определение — три свойства, которые вы будете встречать всю оставшуюся лекцию.
Дальше нужен аккаунт
Прогресс и монеты сохранятся.