ADG Оставить заявку
Блог Инфраструктура 4 мин чтения

Windows Server 2019 Insider Preview: WSL на сервере и контейнеры без boilerplate

Развернули Windows Server 2019 Preview в изоляции. WSL на серверной ОС и улучшенные контейнеры выглядят интересно для гибридных сред, но это всё ещё бета.

Контекст момента

Microsoft открыла бета-тестирование Windows Server 2019 через Insider Preview в начале 2018 года

Microsoft несколько месяцев назад открыла программу Insider Preview для Windows Server 2019. Сборки обновляются, документации мало, некоторые вещи работают через раз - в общем, типичная бета. Но поскольку у нас есть клиенты с гибридными средами, где рядом с Linux-кластерами живут Windows-ноды, смотреть пришлось. Подняли изолированный стенд - две виртуалки без доступа к продакшн-сети, никаких лицензий клиентов, только свежая Insider Preview и желание понять что там за WSL на сервере.

Зачем вообще смотреть на предпросмотр

В managed-инфраструктуре гибридная среда - не редкость. Бывает что рядом с Kubernetes-кластером живёт несколько Windows Server 2016-нод для специфических .NET-приложений или 1С. Каждый раз когда там что-то настраивается, хочется инструментов, хоть немного похожих на то что есть в Linux - нормальный ssh, нормальные контейнеры, нормальный способ что-то автоматизировать без PowerShell-диалектов на каждый чих.

Именно поэтому анонс WSL в серверном варианте вызвал живой интерес. Не потому что «интересная технология», а потому что конкретная проблема - управление Windows-нодами через единый пайплайн - стала немного менее болезненной в теории.

WSL в Server Core: работает, но не сразу

Windows Subsystem for Linux в Server 2019 Preview устанавливается как опциональный компонент через Install-WindowsFeature. На Server Core это выглядит немного сюрреалистично - консоль без GUI, и в ней ты устанавливаешь Linux-дистрибутив.

Дистрибутив берётся не из Microsoft Store (его на Server Core нет), а скачивается вручную через Invoke-WebRequest и распаковывается. После установки Ubuntu 18.04 внутри WSL получаешь bash, apt, стандартные утилиты. Можно запустить curl, grep, ssh - работает. Можно поднять Python и прогнать скрипт.

Что важно для нашего кейса: это не замена Linux-нодам и не виртуалка. WSL не запускает отдельное ядро - это трансляция syscall'ов на Windows NT. Изоляция неполная, пространства имён не те что в Linux, и запустить docker внутри WSL не получится - ядро не поддерживает нужные вещи на этом уровне. Но для задачи «запустить Ansible-скрипт или проверить конфигурацию с привычными инструментами» - вполне работает.

Один нюанс: файловая система. Доступ к Windows-дискам из WSL через /mnt/c/ есть, но производительность операций с файлами заметно хуже чем с файловой системой внутри WSL. Для скриптов, которые что-то делают с Windows-конфигами, это ощущается.

Контейнеры: меньше boilerplate, лучше совместимость

Windows Server 2019 Preview заявляет улучшения в контейнерной части - прежде всего меньший размер базовых образов и улучшенная совместимость Windows-контейнеров с Kubernetes.

Мы подняли Docker на Preview-сборке и попробовали нескольких сценариев. Базовый Windows Server Core образ в 2019 Preview стал ощутимо компактнее по сравнению с 2016. Это важно не абстрактно, а практически: образы в 2016 были откровенно громоздкими и деплой занимал неприличное время даже при нормальном канале.

Про совместимость с Kubernetes: Windows-контейнеры в WS2016 с Kubernetes работали, но требовали специфических манифестов и с трудом вписывались в общий пайплайн. В 2019 Preview заявлена поддержка CNI-плагинов стандартным образом - пробовали с Flannel в l2bridge-режиме. Поднялось без танцев с бубном, что само по себе прогресс.

Hyper-V Isolation - режим, при котором каждый контейнер получает легковесную виртуальную машину вместо разделяемого ядра - в Preview тоже есть и работает. Это важно для сценариев где нужна более строгая изоляция, чем даёт process isolation.

Что не работает или работает странно

Бета есть бета. Несколько вещей вызвали удивление:

  • Установщик ломался при определённых конфигурациях сети - пришлось пересоздавать виртуалку с другими настройками сетевого адаптера.
  • WSL и Windows Update не дружат в Preview-сборках: после некоторых обновлений Linux-дистрибутив внутри WSL переставал запускаться и приходилось переустанавливать.
  • Документация на момент тестирования расходится с реальным поведением. Часть команд из официальных примеров возвращает ошибки - очевидно, API ещё двигается.
  • Storage Spaces Direct заявлен в новой версии, но трогать его в Preview на тестовом стенде из двух нод смысла не было - не та конфигурация для честной проверки.

Первое впечатление

WSL в серверном варианте - это конкретный инструмент для конкретной задачи: запускать Linux-скрипты и утилиты на Windows Server без отдельной VM. Не замена Linux, не серьёзная изоляция - просто способ не переключаться между инструментами при работе с гибридной нодой. Для автоматизации через Ansible или Salt это полезно уже сейчас, даже в Preview.

Контейнеры двигаются в сторону «как в Linux» - медленнее, но заметно. Если в 2016 Windows-контейнеры в Kubernetes-кластере ощущались как инородный орган с костылями, то в 2019 Preview этот зазор чуть меньше.

Тащить Preview в продакшн никто и не собирался - это был именно первый взгляд на то, в каком направлении движется серверная Windows. Направление в целом понятное и разумное. GA когда выйдет - посмотрим на реальных конфигурациях.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.