Pull to refresh
8K+
6
14,1
Rating
6
Subscribers
Send message

Про cloud-guest-utils – хорошая мысль, добавлю в апдейт, чтобы у читателя не было ребуса «а откуда брать growpart» (на свежем debian его действительно нет из коробки).

Про связку qemu-nbd + parted + resize2fs – это абсолютно рабочий путь, и в чем-то даже более гибкий: можно в том же подключении залезть внутрь ФС, посмотреть/поправить конфиги, что-то еще поделать. Я в статье выбрал virt-resize ровно из соображений «все одной командой и без модулей ядра», но ваш подход полезен тем, кто не хочет тащить libguestfs или хочет видеть каждый шаг явно. Имеет смысл упомянуть оба варианта в апдейте.

Ну и про e2fsck справедливо для ручного пути. virt-resize фактически сам прогоняет fsck в процессе ресайза, а вот при варианте growpart + resize2fs явная проверка через e2fsck -f (особенно, если образ уже запускался до) – это правильная страховка. Допишу и это.

Вполне разумно, держите.

По нашему опыту годятся:

  • Play with Docker — labs.play-with-docker.com – 4-часовая сессия, чистый docker, ничего регистрировать не надо кроме DockerHub-аккаунта.

  • Play with Kubernetes — labs.play-with-k8s.com – то же самое, но для K8s.

  • Killercoda — killercoda.com – большая библиотека готовых сценариев, в т.ч. полные тренажёры под CKA/CKAD/CKS. Из всего списка – самое серьёзное.

  • KodeKloud playgrounds – kodekloud.com/playgrounds – ограниченные (но зато бесплатные) сессии для k8s, terraform, ansible. Удобно «потрогать инструмент быстро» без локальной установки.

  • GitHub Codespaces – если у студента есть GitHub-аккаунт, бесплатных часов хватает на учебные сценарии; в качестве IDE-окружения тоже годится.

Моя любимая Katacoda раньше тоже была в этом списке, но она закрылась. RIP.

Для нашего курса всё это использовалось как fallback — методичка под online-песочницы не пишется, прогресс не трекается, единого аккаунт-стэка нет. Но как «дайте быстро попробовать инструмент» — Killercoda первым делом.

Справедливое замечание, в статье шага не показал – а зря.

Если коротко, то qemu-img resize ресайзит диск, но не файловую систему. В моём случае partition + ext4 растягиваются автоматически на первом boot'е – debian cloud image включает cloud-init модули growpart и resize_rootfs, они на первом старте до-растягивают root-партишен до размера диска (это видно в /etc/cloud/cloud.cfg)

Если cloud-init вырезан или не справился (может случиться на нестандартных образах), то руками можно так:

virt-resize --expand /dev/sda1 offline_base.qcow2 offline_base_expanded.qcow2

virt-resize сам и сделает growpart, и resize2fs. Делается до virt-customize, потому что virt-customize ест файловую систему «как есть».

Альтернатива – в скрипте offline_setup.sh добавить шаг перед установкой docker:

growpart /dev/sda 1
resize2fs /dev/sda1

Ну а мне стоит добавить этот шаг в апдейт статьи – спасибо, что внимательно прочитали

Так это и используется:

 docker save nginx:latest -o nginx_offline.tar 

– ровно оно и есть, в разделе «Скачиваем артефакты». Tеr потом инжектится в образ и на первом boot'е грузится через 

docker load -i /opt/offline/nginx_offline.tar

По сути, это центральная команда схемы.

Спасибо за развёрнутый коммент и разбор. Отвечу по пунктам:

1 и 2) podman + rootless – технически согласен, у меня самого на личных машинах так. У курса исторический хвост в последовательности рассматриваемых тем: методичка потока была написана под docker ..., менять рантайм только из-за одного учебного стенда – это переписывание методички, материалов и тестовых сценариев. При обновлении курса будем брать podman, без вопросов

3) systemd-nspawn – интересно, в моём списке кандидатов не было. В статье nginx – это демо-минимум, чтобы туториал влез в формат. В реальном образе курса наверху живёт k3s + Helm-чарты + предзагруженные образы для кластера, поэтому контейнерный рантайм нужен железно, а не как один nginx.

4)--internal – изящнее iptables'щины, согласен для случая «изолируем контейнерную сеть». У меня iptables решает дела чуть шире – заблокировать выход самого хоста наружу (через ens18), не только контейнеров. Если бы трафика хоста не было – пожалуй да, podman networking сам бы всё закрыл.

А по локальным пакетам – там два разных артефакта, легко спутать:

  • /opt/offline/docker_packages/*.deb — это сам docker.io + containerd + runc, чтобы установить рантайм без репозитория (Часть 1, «Скачиваем артефакты»)

  • /opt/offline/nginx_offline.tar – а это уже образ nginx, грузится docker load на первом запуске.

То есть deb нужны для рантайма, а tar – для образа в нём.

Рассматривали. Nexus – нормальное решение для постоянного учебного класса: один раз поднял proxy/registry внутри контура, дальше он сам кеширует всё, что студенты тянут.

У нас сценарий немного другой. Стенд – не наш железный класс, а инсталляция, к которой безопасники отрубили интернет. Поднять отдельную ВМ под Nexus там значило бы:

  • согласовать новую сущность с теми же безопасниками

  • получить доступ к ней с учебных ВМ (а сеть обрублена)

  • поддерживать её актуальность

Образ-консерва дешевле политически и быстрее технически: один qcow2 раздать раз и забыть. А для регулярного класса с обновлениями – да, Nexus правильнее.

Спасибо большое за ваши комментарии и за то, что подробно поделились альтернативным взглядом на пирамиду Дейла и таксономию Блума. 

Вы совершенно справедливо указываете на то, что и Дейл, и Блум не предлагали “жёстких научных теорий", а скорее давали модели и классификации, которые со временем интерпретировались и использовались в практике образования. Именно поэтому нам было важно включить их в статью как рабочие инструменты, которые, несмотря на критику, продолжают влиять на образовательный процесс и по сей день.

Буду признателен, если сможете поделиться ссылками на упомянутые вами исследования и обзоры (например, про происхождение чисел в «пирамиде» или про недавние эмпирические работы по таксономии). Думаю, это будет интересно и нам, и другим читателям.

Насколько мне известно, в УрФУ этот курс предполагался для обучения студентов очных форм. Я правда хотел бы вам здесь чем-то помочь, но боюсь, что вам нужно обратиться к ректорату самого универа

Пока что нет, к сожалению.

Задумывалось, что курс будет доступен для студентов очных форм обучения в нескольких российских ВУЗах, хотя сейчас ведется работа по расширению числа учебных заведений и преобразованию курса, чтобы он стал доступен для большего круга желающих. Очень надеюсь, что в ближайшее время это произойдет

Хочу согласиться с вами, по сравнению с тем, кто имеет за плечами достаточный опыт в администрировании или разработке, вчерашний студент будет испытывать недостаток многих компетенций, которые приобретаются лишь со временем.

И я сейчас даже не столько о такой базе, как linux, bash, сети и прочее (хотя для изучения этого у студента есть несколько лет в вузе - никто не отменял эти дисциплины на профильных специальностях), а банально о таких вещах, как рабочий и просто жизненный опыт, баланс работы, учебы и отдыха, умение уживаться с коллегами, не принимать все близко к сердцу в первые годы работы

Не платят конечно, это все должно входить в их программу обучения

Мне нравится ваша точка зрения. Девопс это сложная комплексная роль, потребуется и знания в ОС, и в сети, и в разработке.

У большинства студентов (и на моей памяти, так всегда и было) при выходе во взрослый мир, навыков, помогающих найти хорошую работу, практически нет. Но ведь надо же с чего-то начинать. Надеюсь, что наш курс сможет стать хотя бы неплохой отправной точкой.

На нашем курсе мы объясняем и показываем, что такое хорошие и плохие практики. В том числе рассматривем устаревшие подходы и методы, рассказываем как и почему они устаревают и выводятся из употребления, какие риски безопасности несут.

В вашем примере вы верно заметили, что метод --link уже давно устарел, но знать, зачем он нужен, все равно надо. Со множеством примеров его использования студент столкнется на практике, мы этот момент проговариваем во время обучения. А на лекциях, посвященных работе контейнеров по сети и их безопасности, переходим от небезопасных подходов к наиболее безопасным и правильным на данный момент.

Специальности такой нет, к сожалению, а было бы здорово. Пока что наш курс проходят преподаватели и затем обучают студентов очных форм в виде дополнительной дисциплины

Information

Rating
518-th
Registered
Activity