В этом сообщении блога я поделюсь своим практическим опытом создания кластера K3s на Orange Pi 5 Plus (opi5+) с использованием Armbian в качестве операционной системы (ОС) и Ansible. Этот пост задуман как простое руководство для всех, кто хочет повторить этот процесс. Я надеюсь, что это окажется полезным для вашей собственной системы.
Обратите внимание, что в некоторых разделах есть ссылки на внешние руководства, содержащие соответствующие шаги.
Почему Армбиан?
После моей неудачной попытки использовать Fedora CoreOS, Armbian + K3s был одним из вариантов, которые я рассматривал. Среди причин выбора Armbian в качестве ОС можно выделить:
- Широкая поддержка аппаратного обеспечения: Armbian обеспечивает поддержку широкого спектра одноплатных компьютеров (SBC) на базе ARM, что дает вам гибкость в выборе оборудования для кластера K3s.
- Стабильность и надежность: Armbian известен своей стабильностью и надежностью, что делает его подходящим выбором для создания прочных и устойчивых кластеров K3s.
- Оптимизирован для архитектуры ARM: Armbian оптимизирован специально для архитектуры ARM, обеспечивая эффективную производительность на устройствах на базе ARM, обычно используемых для SBC.
- Регулярные обновления: Armbian выпускает регулярные обновления и патчи безопасности, помогая вам поддерживать вашу систему в актуальном состоянии и безопасности.
- Низкое потребление ресурсов: Armbian разработан для эффективного использования ресурсов, что делает его подходящим для сред с ограниченными ресурсами, распространенных в SBC, что идеально подходит для создания экономичных кластеров K3s.
- Поддержка сообщества: Будучи проектом с открытым исходным кодом, Armbian имеет активное сообщество, которое предоставляет поддержку, документацию и помощь в устранении неполадок, что может быть ценным при настройке и обслуживании кластера K3s.
Предупреждение
Есть несколько вещей, о которых вы должны знать:
- Это лабораторная среда.
- Некоторые шаги включают в себя команды, которые стирают данные.
Предположения
Были сделаны следующие предположения:
- Устройство — версия Orange Pi 5+.
- Есть еще один ноутбук/ПК для подготовки.
Препараты
Элементы
Для выполнения этой задачи используются следующие элементы:
- 1x SD-карта объемом не менее 4 ГБ
- 3x Geekworm Orange Pi 5 Plus кластерный акриловый чехол с вентилятором и комплектом радиатора. Обратите внимание:Входящий в комплект радиатор может не идеально подходить и для установки может потребоваться некоторое усилие.
Один из винтов на вентиляторе может коснуться зажима на радиаторе и поднять верхнюю крышку с одной стороны. Чтобы решить эту проблему, вы можете удалить этот конкретный винт вентилятора, оставив только 3 из 4, чтобы предотвратить неровности в верхнем стеке.
Пошагового руководства или видеоруководства нет.
Другие предметы
Были приобретены два дополнительных элемента, специально для сервера хранения данных Linux и не предназначенные для кластера K3s. Ниже приведена подробная информация об этих элементах на случай, если они послужат справкой. Обратите внимание, что они не предназначены и не являются обязательными для кластера K3s:
- 1x ConnectX-4 Lx EN CX4121A-ACAT 2-портовый 10/25GbE SFP28 PCI-E
Установка Armbian
Чтобы установить Armbian, следуйте инструкциям Armbian Quickstart. Эти шаги включают в себя:
- Скачивание образа Armbian для opi5+
- Установка образа Armbian на SD-карту
- Загрузившись с SD-карты, выполните базовую конфигурацию и установите образ в opi5+ eMMC с помощью: armbian-install
- Выключение питания
- Извлечение SD-карты
- Загрузка в eMMC и Armbian
Другие базовые конфигурации
Извлеките SD-карту
Загрузите eMMC и настройте основные параметры, прежде чем продолжить. Для установки K3s с помощью ansible требуется доступ с помощью ключей SSH без запроса пароля. Остальные шаги не являются обязательными:
- Получите root-доступ
- Смена пароля root
- Изменение пароля пользователя
- Обновление ОС и пакетов
- Разрешить sudo без пароля
- Разрешение проверки подлинности с помощью ключей SSH
- Настройка /etc/hosts
- Создание сетевого объединения/связи
Ниже приведены команды для выполнения перечисленных выше действий. Изменяйте значения переменных в соответствии с контекстом. Повторите их в каждом из остальных устройств. Помните, что вам нужен root-доступ:
## as root. # sudo bash
## change passwords # passwd root # passwd ${opi_hostname}
## upgrade pkgs apt update
DEBIAN_FRONTEND=noninteractive apt upgrade -y
## vars /CHANGE_THEM opi_username=changeme
opi_hostname=changeme-01
opi_domain=change.me
opi_fqdn=${opi_hostname}.${opi_domain} opi_cidr=192.168.1.10/24
opi_gw=192.168.1.1
opi_dns='8.8.8.8 8.8.4.4' opi_ssh_authorized_key='ssh-rsa CHANGEME'
## sudo cat << _EOF > /etc/sudoers.d/10-opi5-user
# User rules for ${opi_username} ${opi_username} ALL=(ALL) NOPASSWD:ALL
_EOF
## ssh mkdir -p /home/${opi_username}/.ssh
cat << _EOF > /home/${opi_username}/.ssh/authorized_keys
ssh-rsa ${opi_ssh_authorized_key} _EOF
chmod 0700 -R /home/${opi_username}/.ssh
chown ${opi_username}:${opi_username} -R /home/${opi_username}/.ssh
sed -i "s@#PasswordAuthentication.*@PasswordAuthentication no@" \ /etc/ssh/sshd_config
systemctl restart ssh
## /etc/hosts cat << _EOF > /etc/hosts
127.0.0.1 localhost
127.0.1.1 ${opi_fqdn} ${opi_hostname}
::1 localhost ip6-localhost ip6-loopback ${opi_fqdn} ${opi_hostname}
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
_EOF
## hostname hostnamectl set-hostname ${opi_hostname}
## lock root password passwd -l root
## network bonding # workaround: https://github.com/coreos/fedora-coreos-tracker/issues/919 cat << _EOF > /etc/systemd/network/98-bond-inherit-mac.link
[Match]
Type=bond
[Link]
MACAddressPolicy=none
_EOF
# add bond interface # this could cause disconection nmcli connection add type bond con-name bond0 ifname bond0 \ bond.options "mode=balance-alb,miimon=1000" \ ipv4.addresses "${opi_cidr}" ipv4.gateway "${opi_gw}" \ ipv4.dns "${opi_dns}" ipv4.dns-search "${opi_domain}" \ ipv4.method manual bond.options "mode=balance-alb,miimon=1000" \ mtu 9000
# add current devices nmcli connection add type ethernet slave-type bond \ con-name bond0-port1 ifname enP3p49s0 master bond0 mtu 9000
nmcli connection add type ethernet slave-type bond \ con-name bond0-port2 ifname enP4p65s0 master bond0 mtu 9000
# delete old connections nmcli connection delete "Wired connection 1" nmcli connection delete "Wired connection 2"
Установка K3s
Теперь вы готовы к установке K3s, используя Ansible и роль K3s. Выполните следующие действия в системе, отличной от ваших устройств Opi5+:
- Установка Ansible и роли K3s.Для установки Ansible вы можете запустить pip install ansible
Для установки роли K3s вы можете запустить ansible-galaxy role install xanmanning.k3s - Установите кластер K3s с высокой доступностью (HA) со встроенным etcd, выполнив следующие действия. К ним относятся:Создание инвентаря с помощью устройств opi5+
Создание сборника схем с использованием этого инвентаря и роли K3s Запуск сборника схем
В заключение можно сказать, что сборка кластера K3s на Orange Pi 5 Plus была практическим опытом. Теперь я буду использовать его для разработки и тестирования экземпляров Moodle™, управляемых операторами Krestomatio для Kubernetes. Я надеюсь, что это руководство поможет вам сделать то же самое. Удачи в настройке кластера K3s на Orange Pi 5 Plus, и я надеюсь, что вы тоже получите удовольствие!