Я уверен, что вы слышали о голом металле. Облака изготавливаются из голого металла, например.
Искусство привлечения к жизни единодушенный кусок металла, как сервер для чего-то полезного, это то, что я учусь с тех пор, как присоединился к Equinix Metal в мае.
Позвольте мне сделать сравнение с чем-то, с чем вы, вероятно, знакомы. Знаете ли вы, почему Кубернаны трудно? Потому что нет ни одного кубера. Это клей неизвестного количества частей, работающих вместе, чтобы помочь вам развернуть ваше приложение.
Голый металл почти такой же, сотни разных провайдеров, размер сервера, архитектуры, чипсы, которые в некотором роде вы должны довести в жизнь.
Мы должны работать с некоторыми распространенными понятиями, которые у нас есть. Когда сервер загружается, он запускает BIOS, который выглядит в разных местах для чего-то, чтобы запустить:
- Это ищет жесткий диск
- Он ищет внешнее хранилище, как USB-накопитель или CD-ROM
- Это ищет помощь от вашей сети (NetBooting)
Варианты один и два не являются реалистичными, если конечная цель — добраться до громкой связи, надежное решение. Я уверен, что облачные провайдеры не имеют людей, бегущих с USB-палочкой, содержащей операционные системы и прошивки.
NetBooting.
Я говорил о Мой первый опыт NetBooting Ubuntu в моем блоге. Эта статья эффективна с воспроизводимым кодом. Здесь теория.
Когда дело доходит до NetBooting, вы должны знать, что означает PXE. Среда исполнения претендусов является стандартизированная среда Client/Server, которая загружается, когда операционная система не найден, и она помогает администратору загружать операционную систему удаленно. Не думайте об этой ОС, как тот, который у вас есть на вашем ноутбуке, я имею в виду, технически это, но тот, который там или на сервере сохраняется, поэтому вы можете получить файлы, которые выдерживают перезагрузку.
Тот, с которым вы начинаете с PXE, работает в памяти, и оттуда вы должны выяснить, как получить сохраняющуюся ОС, вы будете работать в своей машине.
Когда система операции в памяти работает и работает, вы можете сделать все, что вы способны с Ubuntu, Alpine, Centos или Debian. На практике, какие люди имеют тенденцию делать, это управлять приложениями и сценариями для форматирования диска с правым разделом и для установки системы конечной работы.
Довольно круто. PXE — это рода старые, и по этой причине он сожжен во многих разных никсах. Вы узнаете намного больше о IPXE, «новом» внедрении PXE. Что круто о том, что это цепь
функция. Из одной среды PXE/IPXE вы можете цепить другую среду PXE/IPXE. Вот как вы получаете от PXE (обычно обычно работает по умолчанию во многих оборудовании (если у вас есть нук, вы запускаете его)) в IPXE.
chain --autofree https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn
IPXE поддерживает гораздо больше протоколов, используемых для загрузки ОС из таких как TFTP, FTP, HTTP/S, NFC …
Это пример скрипта IPXE:
#!ipxe dhcp net0 set base-url http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/current/legacy-images/netboot/ubuntu-installer/amd64/ kernel ${base-url}/linux console=ttyS1,115200n8 initrd ${base-url}/initrd.gz boot
Первая команда DHCP Net0
Получает IP для вашего оборудования от DHCP. Ядро
и initrd
Установите ядро и исходный Ramdisk для запуска в памяти.
загрузка
Начинается Ядро
и initrd
Вы просто установили.
Есть больше; Это то, что я нахожусь, используя чаще.
Инфраструктура
Для успешного NetBoot вам нужно распределить пару вещей:
- Скрипт IPXE
- Операционная система, которую вы хотите запустить (ядро и initrd)
Рабочий процесс
- Сервер запускается
- В HD нечего загружаться
- Запускает нетбут
- Он делает запрос DHCP для получения конфигурации сети, а DHCP возвращает адрес TFTP с местоположением двоичного файла IPXE
- IPXE начинается и делает еще один запрос DHCP; Ответ содержит URL-адрес сценариев IPXE с помощью команд, которые вы видели выше
- На данный момент IPXE запускает скрипт, загружает ядро и initrd с указанным вами протоколом, и он запускает операционную систему в памяти.
Довольно круто!
Операционная система в памяти
Операционная система в памяти может быть такой же умной, как вам нравится; Вы можете построить свой, например, начиная с Ubuntu или Alpine. Размер рассчитан здесь, потому что он должен соответствовать памяти.
Когда начинается операционная система, она работает как PID 1, что называется в этом.
Это исполняемый файл, расположенный в Ramdisk под названием /в этом.
Этот скрипт может быть таким же сложным, как вам нравится. Это может быть проблематичным двоичным двоичным количеством загрузки из централизованных команд местоположения для выполнения, или она может быть сценариями Bash, которые форматируют локальный диск и устанавливает окончательную операционную систему.
То, что я пытаюсь сказать, это то, что вы должны сделать операционную систему в памяти полезной для вашей цели. Если вы используете родной Alpine или Ubuntu, скрипт init начнет раковину Bash, а не так полезно.
DHCP.
Как вы видели, DHCP играет важную роль. Это первая точка контакта между унитунимированным оборудованием и миром. Если вы можете управлять тем, что может сделать DHCP, вы можете, например, регистрироваться и отслеживать здоровую связь сервера.
Представьте, что вы на своем ноутбуке, и вы ожидаете сто новых серверов в одном из ваших центров обработки данных, мониторинг запросов DHCP. Вы будете знать, когда они подключены к сети.
Контейнеры Что?
Контейнеры — это удобный способ распространения и запуска приложений без необходимости знать их. Подумайте об этом сценарии. Ваша операционная система в памяти при загрузке работает докер. init
Сценарий на данной точке может вытащить и запустить контейнер Docker с вашей логикой для разбиения диска и установка операционной системы, или она запускает некоторую рабочую нагрузку и выйти из оставления пространства для следующего загрузки (немного похоже на сервера). Отказ
Или Контейнер Docker может запустить более сложное приложение, которое достигает централизованного сервера, который отправляет список действий для выполнения через API отдыха или GRPC. Эти действия могут быть объявлены и храниться от вас.
Вывод
Цепочка инструментов и взаимодействия, чтобы получить от куска металла до чего-то, что запускает некоторую рабочую нагрузку, не так долго. Управляя всеми шагами и инструментами по пути предоставляет возможность обеспечивать холодные серверы от нуля до того, что разработчики знают, как использовать, как использовать.
Хорошо, я солгал тебе. Это не просто теория. Вот как Tinkerbell работает.
Оригинал: «https://dev.to/gianarb/how-bare-metal-provisioning-works-in-theory-1e4e»