Быстрый старт
Предварительная подготовка
- Установите 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"
BASE_REGISTRY="factory.altlinux.space"$ 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 --talos-version <TALOS_VERSION> --install-image <IMAGE_LINK> --kubernetes-version <KUBE_VERSION>- --talos-version - версия пакета talos, в соответствии с которой будет сгенерирован актуальный конфиг. Если версия talosctl совпадает с версией пакета talos в устанавливаемом образе на узле (можно проверить по матрице поддержки или командой
talosctl get version -n <IP>), то данный параметр можно опустить, иначе укажите соответствующую версию пакета (по умолчанию будет указана версия talosctl) - --install-image - сгенерированная на начальном этапе ссылка на образ инсталятора (по умолчанию "altlinux.space/alt-orchestra/installer:<LAST_VERSION>")
- --kubernetes-version - версия kubernetes из списка удовлетворяющих матрице поддержки
В результате выполнения команды получаем файлы в рабочей директории 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 # Диск для инфталяции на узле.Для conrtol plane конфига: Проверьте ссылку на образ инсталятора, она должна совпадать с раннее сгенерированной вами на первом шаге
install:
image: altlinux.space/alt-orchestra/installer:v11.0 # altlinux.space/alt-orchestra/installer:v11.0Для conrtol plane конфига: Проверьте правильность образа, ветки и версии kubernetes с учетом матрицы поддержки
apiServer:
image: registry.altlinux.org/sisyphus/kube-apiserver:<KUBE_VERSION>
...
controllerManager:
image: registry.altlinux.org/sisyphus/kube-controller-manager:<KUBE_VERSION>
proxy:
image: registry.altlinux.org/sisyphus/kube-proxy:<KUBE_VERSION>
scheduler:
image: registry.altlinux.org/sisyphus/kube-scheduler:<KUBE_VERSION>
kubelet:
image: registry.altlinux.org/sisyphus/kubelet:<KUBE_VERSION>Применяем подготовленные конфиги
Инициализируйте каждую ноду, применив подготовленный конфиг:
$ 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