Установка Talos Linux на Raspberry Pi 5
Попытка установить Talos Linux на Raspberry Pi 5 из официальных образов может оказаться непростой задачей — стандартные образы не всегда работают из коробки. К счастью, сообщество подготовило готовые образы с необходимыми настройками и драйверами.
Подготовка образа
Скачивание готового образа
Скачайте готовый образ Talos для Raspberry Pi 5 из репозитория:
github.com/talos-rpi5/talos-builder/releases
Запись образа на носитель
Образ можно записать на любой доступный носитель — NVMe или SD-карту:
sudo dd if=metal-arm64.raw of=/dev/disk4 bs=4M status=progress conv=fsync
Важно: Замените /dev/disk4 на ваш целевой диск. Убедитесь, что выбрали правильный диск, чтобы не перезаписать важные данные.
Первоначальная настройка
Поиск узла в сети
После вставки носителя в Raspberry Pi, найдите узел в сети с помощью nmap:
nmap -Pn -n -p 50000 172.20.3.0/24 -vv | grep 'Discovered'
Talos слушает на порту 50000 для первоначальной настройки. Замените диапазон IP-адресов на ваш сетевой сегмент.
Генерация конфигурации кластера
Создайте конфигурацию кластера:
talosctl gen config \
k8s-talos-0 https://10.15.0.60:6443 \
--with-secrets secrets.yaml
export TALOSCONFIG=$PWD/talosconfig
Команда создаст необходимый набор файлов:
controlplane.yaml— конфигурация для control plane нодworker.yaml— конфигурация для worker нодtalosconfig— конфигурация клиента talosctl
Примечание: Замените https://10.15.0.60:6443 на адрес вашего API-сервера и укажите путь к файлу с секретами, если используете.
Проверка доступных дисков
Перед применением конфигурации проверьте доступные диски (особенно важно для установки Rook):
talosctl -n 172.20.3.103 get disks --insecure
Развертывание кластера
Применение конфигурации к control plane
Примените конфигурацию к узлу control plane:
talosctl apply-config \
--insecure \
--nodes 172.20.3.156 \
--file controlplane.yaml \
--talosconfig talosconfig
Инициализация кластера (bootstrap)
Выполните bootstrap для инициализации кластера:
talosctl bootstrap \
--nodes 10.15.0.60 \
--talosconfig talosconfig \
-e api.k8s.int.local
Важно: FQDN должен быть в DNS. В моем случае A-запись указывает на HAProxy, который балансирует нагрузку между control plane нодами. Если у вас один мастер, можно использовать IP-адрес напрямую.
После успешного bootstrap добавьте worker ноды, применив к ним worker.yaml аналогичным образом.
Настройка кластера
Проверка дисков после настройки
После настройки кластера проверьте доступные диски на worker нодах:
talosctl get disks -n 10.15.0.61 -e api.k8s.int.local --talosconfig talosconfig
Добавление меток к worker нодам
Добавьте метки к worker нодам для организации кластера:
kubectl label nodes talos-5of-c9u node-role.kubernetes.io/worker= role=storage-node
kubectl label nodes talos-ktt-uus node-role.kubernetes.io/worker= role=storage-node
kubectl label nodes talos-v4a-9mb node-role.kubernetes.io/worker= role=storage-node
Примечание: Замените имена нод на ваши.
Настройка Pod Security Policy
Для работы некоторых приложений (например, ingress-nginx и rook-ceph) необходимо разрешить привилегированные поды:
kubectl label namespace ingress-nginx pod-security.kubernetes.io/enforce=privileged --overwrite
kubectl label namespace rook-ceph pod-security.kubernetes.io/enforce=privileged --overwrite
Установка дополнительных пакетов
Talos — иммутабельная система без shell. Для установки дополнительных утилит (например, lvm2 для работы Rook) используйте debug-контейнер:
kubectl -n kube-system debug -it --profile sysadmin --image=alpine node/talos-m8n-ttm
Внутри контейнера установите необходимые утилиты:
apk add util-linux
apk add lvm2
Примечание: Замените talos-m8n-ttm на имя вашей ноды. Эти изменения не сохранятся после перезагрузки, так как Talos — иммутабельная система. Для постоянной установки пакетов рассмотрите использование расширений Talos или кастомных образов.
Заключение
После выполнения этих шагов у вас должен быть рабочий Kubernetes кластер на базе Talos Linux, развернутый на Raspberry Pi 5. Установка и настройка Rook для распределенного хранилища будет описана в отдельной статье.