Переносимость контейнеров
Область применения: Windows Server версии 23H2
Переносимость — это функция Ежегодного канала Windows Server для контейнеров. Переносимость упрощает процесс обновления, помогая использовать все преимущества расширенной гибкости и совместимости, которые предлагают контейнеры. В этой статье содержится подробное объяснение того, как оптимизируется переносимость образа контейнера для контейнерных хостов годового канала.
Windows Server Annual Channel for Containers — это версия Windows Server, разработанная для Azure Kubernetes Service и развертываний Windows Server, ориентированных на контейнеры, для повышения эффективности и обеспечения оптимизированной переносимости как для контейнеров Windows, так и Linux. Дополнительные сведения о ежегодном канале для контейнеров в Windows Server см. в объявлении TechCommunity.
Как работает портативность
Windows использует модульное ядро, где компоненты часто тесно связаны между режимом пользователя и режимом ядра. Плотно связанные компоненты представляют собой полезные графические интерфейсы на основе драйверов режима ядра или помогают оптимизировать производительность, сокращая переключения контекста между режимом ядра и пользовательским режимом. Однако это вызов для контейнеров. Переносимость позволяет контейнерам, работающим в пользовательском режиме, запускать рабочие нагрузки с другой версией образа контейнера, отличной от версии операционной системы узла.
Без поддержки переносимости пользователи могли бы запускать рабочие нагрузки только с соответствующими версиями образа и узла. Например, пользователь, работающий на узле Windows Server 2022, не мог запускать изолированные контейнеры Windows Server 2019. Управление версиями между хостом и образом контейнера представляет собой значительную трудность в контейнеризации Windows, что осложняет переход на более новые версии хоста контейнера. Например, Windows Server 2022 LTSC требовала обновления всех образов инфраструктуры и приложений до последней версии одновременно с обновлением узла.
Двоичный интерфейс приложения
Двоичный интерфейс приложения (ABI) позволяет взаимодействовать различным языкам программирования с интерфейсами режима пользователя и ядра. Взаимодействие клиентского кода с объектом среды выполнения происходит на самом низком уровне, с конструкциями клиентского языка, преобразованными в вызовы ABI объекта. Переносимость контейнеров Windows обеспечивает стабильный ABI для взаимодействия с пользователями и ядром. Этот стабильный ABI отделяет компоненты пользователя и ядра системы и дает возможность отдельно обновлять элементы ядра и пользователя вашей системы.
Контейнеры могут запускать все двоичные файлы в режиме пользователя из базового уровня, кроме уровня ABI.
На следующей схеме показано взаимодействие между компонентами пользовательского режима и режима ядра.
Какие версии можно использовать?
Образы контейнеров Nano Server, Server Core и Windows Server доступны только через канал обслуживания Long-Term для контейнеров под управлением Windows Server 2019 или более поздней версии. Для получения дополнительной информации о поддерживаемых образах контейнеров Windows Server см. жизненные циклы обслуживания базовых образов .
Узел контейнера Windows Server версии 23H2 поддерживает только образ контейнера Windows Server 2022 Long Servicing Channel (LTSC).
Служба Azure Kubernetes в настоящее время поддерживает узлы Windows Server 2019 и более поздних версий. Windows Server Annual Channel for Containers — это еще один вариант ОС контейнера, который Microsoft предлагает наряду с Kubernetes 1.28. Вы можете настраивать новые пулы узлов на основе ежегодного канала обновлений и продолжать развертывать образы контейнеров Windows Server 2022 на этих узлах. Корпорация Майкрософт обновляет годовую версию канала и все новые выпуски Kubernetes автоматически. Однако также рекомендуется следовать последним выпускам LTSC, чтобы убедиться, что контейнеры актуальны.
Заметка
Хотя предыдущие выпуски образов контейнера могут выполняться в более новой ОС узла, более новые операционные системы образов контейнеров не могут выполняться в предыдущей операционной системе узла.