Быстрый старт
Предварительная подготовка
- Установите talosctl и kubectl на рабочее место администратора.
- Обеспечьте доступ к сети: вашим компьютерам потребуется доступ в интернет для загрузки установщика ALT Orchestra и образов контейнеров, синхронизация времени и прочее. Или настройте контур в локальной сети без доступа к интернету, но доступностью между узлами.
Подготовка образа
Сгенерируйте образ с помощью генератора образов с необходимыми архитектурными параметрами для вашей среды развертывания. В случае настройки контура без доступа в интернет, расположите образы в локальном хранилище с учетом выбранного вами варианта установки (ISO/IPXE).
Запустите узлы
С помощью подготовленного образа первоначальной загрузки запустите все узлы control plane и worker. После загрузки системы с образа ISO вы увидите панель управления ALT Orchestra.
Примечание: образ ISO полностью работает в оперативной памяти и не будет изменять ваши диски, пока вы не примените конфигурацию.
Сохраните IP-адреса узлов
Скопируйте IP-адрес, отображаемый на консоли каждого созданного control plane и worker узла, и сохраните в переменных окружения рабочего места администратора. В данной статье рассматривается упрощенный вариант кластера с одним control plane узлом.
Примечание: в общем случае, control plane узлов может быть больше, но с учетом выполнения условия кворума.
CONTROL_PLANE_IP="<control-plane-ip-1>"
WORKER_IP=("<worker-ip-1>" "<worker-ip-2>" "<worker-ip-3>"...)Или создайте рабочую директорию myTalosCluster1, в ней создайте файл с переменными окружения и выполните его.
Примечание: в качестве CLUSTER_ENDPOINT может быть выбран один из control plane узлов. В рассматриваемом в рамках данной статьи примере один control plane узел, который будет также в роли CLUSTER_ENDPOINT. Отказоустойчивые варианты настройки можно узнать в статье о конечной точке доступа Kubernetes API.
# ./myTalosCluster1/.env
# IP-адреса ВМ
CONTROL_PLANE_IP="<control-plane-ip-1>"
WORKER_IP=("<worker-ip-1>" "<worker-ip-2>" "<worker-ip-3>" ...)
CLUSTER_ENDPOINT=<endpoint-ip> # IP, по которому будет доступно Kubernetes API кластера
# Название кластера
CLUSTER_NAME="myClusterName"source .envПолучение информации об узлах
Для дальнейшего применения конфигурации кластера на узлах необходимо для каждого узла узнать список дисков и интерфейсов:
talosctl get discoveredvolume --insecure --nodes <node-ip-address>
talosctl get links --insecure --nodes <node-ip-address>Генерация конфигурации
Сгенерируйте секрет в рабочей директории ./myTalosCluster1:
talosctl gen secrets -o secrets.yamlСгенерируйте конфигурацию узлов кластера:
talosctl gen config --with-secrets secrets.yaml $CLUSTER_NAME https://$CLUSTER_ENDPOINT:6443Реестр и образы компонентов Kubernetes, версия Kubernetes и образ установщика уже зашиты в сборку ALT Orchestra как значения по умолчанию (реестр компонентов —
registry.altlinux.org/p11, версия Kubernetes — актуальная на момент сборки, установщик —altlinux.space/alt-orchestra/installer:v11.0), поэтому команда не требует дополнительных параметров. Переопределять их (другая версия Kubernetes или Talos, кастомный установщик, свой реестр для закрытого контура) нужно лишь в особых случаях — см. расширенную установку из ISO и установку в закрытом контуре.
В результате выполнения команды получаем файлы в рабочей директории controlplane.yaml, worker.yaml, talosconfig. Если планируемые настройки не будут отличаться для каждого controlplane и worker узла (диски, интефейсы, кастомные hostname и т.д.), то внесите нужные изменения в controlplane.yaml и worker.yaml и перейдите к шагу применения конфига к узлам.
Иначе, если планируемые настройки будут отличаться для каждого controlplane и worker узла:
- Создайте в рабочем каталоге директории ./talos/controlplanes/ и ./talos/workers/. Скопируйте в данные директории конфиг для каждого узла:
├── talos
│ ├── controlplanes
│ │ └── controlplane-1.yaml
│ └── workers
│ ├── worker-1.yaml
│ ├── worker-2.yaml
│ └── worker-3.yaml- Или создайте патчи для каждого узла с настройкой ранее полученных дисков и интерфейсов.
# ./myTalosCluster1/controlplane-patch-1.yaml
machine:
network:
interfaces:
- interface: <control-plane-network-interface>
dhcp: true
install:
disk: /dev/<control-plane-disk-name># ./myTalosCluster1/worker-patch-1.yaml
machine:
network:
interfaces:
- interface: <worker-network-interface>
dhcp: true
install:
disk: /dev/<worker-disk-name>- Примените патчи:
talosctl machineconfig patch controlplane.yaml --patch @controlplane-patch-1.yaml --output talos/controlplanes/controlplane-1.yaml
talosctl machineconfig patch worker.yaml --patch @worker-patch-1.yaml --output talos/workers/worker-1.yamlВ результирующих файлах в каталоге ./talos проверьте и отредактируйте при необходимости нужные поля:
- Задайте hostname с учетом уникальности для каждого узла в конце файла. Вы можете оставить автоматическое присвоение имени, либо убрать настройку
autoи указатьhostname
---
...
kind: HostnameConfig
auto: stable # A method to automatically generate a hostname for the machine.
# # A static hostname to set for the machine.
# hostname: controlplane1- Проверьте правильность имени указанного интерфейса для узла
machine:
network:
interfaces:
- interface: <eth0>- Проверьте правильность указанного диска для узла
install:
disk: /dev/sda # Диск для инфталяции на узле.Образ установщика, реестр и образы компонентов Kubernetes в сгенерированном конфиге не задаются явно — используются значения по умолчанию из сборки ALT Orchestra. Переопределять их нужно только в особых случаях, см. расширенную установку из ISO.
Применяем подготовленные конфиги
Инициализируйте каждую ноду, применив подготовленный конфиг:
talosctl apply-config --insecure -n <NODE_IP> -f talos/controlplanes/controlplane-1.yamlОбъедините только что созданный talosconfig-файл с файлом ~/.talos/config, где хранятся конфигурации всех кластеров talos, к управлению которыми у вас есть доступ:
talosctl config merge ./talosconfigСообщите вашему конфигурационному файлу об endpoints вашего нового кластера:
talosctl config endpoint <control_plane_IP_1>Результат после выполнения можно увидеть в файле ~/.talos/config:
contexts:
myClusterName:
endpoints:
- <control_plane_IP_1>Далее следует дождаться завершения работы инсталятора на нодах, успешных результат будет виден на панели управления каждого узла (установятся параметры тип, имя, версия kubernetes, статусы изменятся на ready/healthy). Данные процесс может занять некоторое время. Логи процесса можно отслеживать непосредственно на панели управления узла или получить логи на рабочем месте администратора командой:
talosctl dmesg -n <NODE_IP>Когда узлы сконфигурированы
Выполните инициализацию кластера etcd, запустив следующую команду:
talosctl bootstrap --nodes $CLUSTER_ENDPOINT --talosconfig=./talosconfig --endpoints $CLUSTER_ENDPOINTИнтегрируйте свой новый кластер в локальную конфигурацию Kubernetes:
talosctl kubeconfig --nodes $CLUSTER_ENDPOINT --talosconfig=./talosconfigПри управлении несколькими кластерами проверьте текущий контекст. Весь список доступных кластеров можно посмотреть в ~/.kube/config:
kubectl config current-contextУбедитесь, что ваши узлы зарегистрированы в Kubernetes в текущем контексте:
kubectl get nodesИли с указанием контекста:
kubectl get nodes --context <CONTEXT_NAME> -o wide