Установить Talos Linux для работы с Kubernetes
Talos Linux — это специализированная операционная система, разработанная Sidero Labs и предназначенная для запуска Kubernetes.
Запускается в оперативной памяти сервера и использует последнюю актуальную версию Talos из официальных релизов — подробнее на странице Releases в GitHub репозитории Sidero Labs.
Подключиться к серверу в Talos можно по VNC или через KVM-консоль.
- Подготовьте параметры для конфигурации нод кластера.
- Подготовьте конфигурацию нод кластера.
- Примените конфигурацию на ноду Control Plane.
- Примените конфигурацию на ноду Worker.
- Инициализируйте Kubernetes.
1. Подготовить параметры для конфигурации нод кластера
Для подготовки конфигурационных файлов для нод Control Plane и Worker нужно собрать параметры каждого сервера, который будет входить в состав кластера.
-
Загрузите сервер в режиме восстановления и диагностики Rescue.
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Выведите информацию о конфигурации сети:
ip a && ip rВ ответе появится информация о сетевых интерфейсах. Скопируйте и сохраните параметры сети. Например:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 1c:1b:0d:65:43:21 brd ff:ff:ff:ff:ff:ffaltname eno1altname enp4s0f0altname enxac1f6b47814ainet 203.0.113.10/24 brd 203.0.113.255 scope global eth0default via 203.0.113.1 dev eth0203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.10Здесь:
203.0.113.10— публичный IP-адрес сервера. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес;203.0.113.1— шлюз по умолчанию;/24— маска подсети;1c:1b:0d:65:43:21— MAC-адрес сетевого интерфейса.
-
Выберите диск, на который нужно установить ОС Talos. Для этого выведите список дисков:
lsblkВ ответе появится информация о дисках. Скопируйте и сохраните имя диска, на который установите ОС. Например:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSloop0 7:0 0 547.9M 1 loop /run/archiso/airootfssda 8:0 0 447.1G 0 disksdb 8:16 0 447.1G 0 disksdc 8:32 0 3.6T 0 disksdd 8:48 0 3.6T 0 disk -
Измените шаблон загрузки сервера. Вы можете:
- вернуть прежний шаблон загрузки сервера или перезагрузить сервер из ОС. При перезагрузке сервера из ОС шаблон загрузки автоматически изменится на тот, который был установлен до загрузки сервера в режиме Rescue;
- или сразу загрузить сервер в режиме Talos, чтобы продолжить работу по установке Talos Linux.
-
Повторите шаги 1-5 для каждого сервера в составе кластера.
2. Подготовить конфигурацию нод кластера
-
Убедитесь, что на сервере, с которого вы будете устанавливать ОС Talos, установлен клиент
talosctl. -
Создайте базовую конфигурацию кластера:
talosctl gen config my-cluster https://<ip_address>:6443Укажите
<ip_address>— публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес.В ответе появится информация об успешной генерации конфигурации. Например:
generating PKI and tokenscreated controlplane.yamlcreated worker.yamlcreated talosconfigЗдесь:
controlplane.yaml— шаблон конфигурации для ноды Control Plane;worker.yaml— шаблон конфигурации для нод Worker;talosconfig— конфигурация клиентаtalosctl.
-
Создайте файл патча для ноды Control Plane:
3.1. Создайте текстовым редактором
viфайл патча для ноды Control Plane:vi <file_name>Укажите
<file_name>— имя файла в форматеyaml, напримерpatch-cp1.yaml.3.2. Добавьте в файл конфигурацию:
cluster:allowSchedulingOnControlPlanes: truemachine:install:disk: /dev/<disk>network:interfaces:- deviceSelector:hardwareAddr: "<mac_address>"addresses:- <ip_address>/<mask>routes:- network: 0.0.0.0/0gateway: <gateway>dhcp: falsenameservers:- <dns_server>Укажите:
<disk>— имя диска для установки ОС Talos, которое вы выбрали на шаге 3 при подготовке параметров на этапе 1;<mac_address>— MAC-адрес сетевого интерфейса, который вы сохранили на шаге 3 при подготовке параметров на этапе 1;<ip_address>— публичный IP-адрес сервера, который который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес;<mask>— маска подсети, которую вы сохранили на шаге 3 при подготовке параметров на этапе 1;<gateway>— шлюз по умолчанию, который вы сохранили на шаге 3 при подготовке параметров на этапе 1;<dns_server>— IP-адрес DNS-сервера. Можно добавить несколько DNS-серверов. Мы рекомендуем использовать рекурсивные DNS-серверы Servercore, но вы можете указать любые доступные DNS-серверы.
3.3. Выйдите из текстового редактора
viс сохранением изменений::wq -
Если в кластере используется несколько серверов, создайте конфигурацию для ноды Worker. Для одиночного сервера (Single Node Cluster), создание конфигураций для нод Worker можно пропустить.
4.1. Создайте текстовым редактором
viфайл патча ноды Worker:vi <file_name>Укажите
<file_name>— имя файла в форматеyaml, напримерpatch-worker1.yaml.4.2. Добавьте в файл конфигурацию:
machine:install:disk: /dev/<disk>network:interfaces:- deviceSelector:hardwareAddr: "<mac_address>"addresses:- <ip_address>/<mask>routes:- network: 0.0.0.0/0gateway: <gateway>dhcp: falsenameservers:- <dns_server>Укажите:
<disk>— имя диска для установки ОС Talos, которое вы выбрали на шаге 3 при подготовке параметров на этапе 1;<mac_address>— MAC-адрес сетевого интерфейса, который вы сохранили на шаге 3 при подготовке параметров на этапе 1;<ip_address>— публичный IP-адрес сервера, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес;<mask>— маска подсети, которую вы сохранили на шаге 3 при подготовке параметров на этапе 1;<gateway>— шлюз по умолчанию, который вы сохранили на шаге 3 при подготовке параметров на этапе 1;<dns_server>— IP-адрес DNS-сервера. Можно добавить несколько DNS-серверов. Мы рекомендуем использовать рекурсивные DNS-серверы Servercore, но вы можете указать любые доступные DNS-серверы.
4.3. Выйдите из текстового редактора
viс сохранением изменений::wq4.4. Если планируется кластер из нескольких серверов, повторите шаги 4.1-4.3 для создания отдельных файлов патчей для каждой ноды Worker.
3. Применить конфигурацию на ноду Control Plane
-
Загрузите сервер Control Plane в режиме восстановления и диагностики с шаблоном Talos.
-
Подключитесь к серверу по VNC или через KVM-консоль.
-
Убедитесь, что сервер в состоянии Maintenance:
STAGE: Maintenance -
Примените конфигурацию ноды Control Plane:
talosctl apply-config \--insecure \-e <ip_address> \-n <ip_address> \--file controlplane.yaml \--config-patch @<file_name>Укажите:
<ip_address>— публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес;<file_name>— файл патча Control Plane, который вы создали на шаге 3 при подготовке конфигурации нод кластера на этапе 2, напримерpatch-cp1.yaml.
После применения конфигурации вернется ответ
Applied configuration without a reboot, а сервер перейдет в режимSTAGE: Installing. -
Дождитесь завершения установки ОС — сервер автоматически перезагрузится и перейдет в режим
KUBELET: Healthy.
4. Применить конфигурацию на ноду Worker
-
Загрузите сервер Worker в режиме восстановления и диагностики с шаблоном Talos.
-
Подключитесь к серверу по VNC или через KVM-консоль.
-
Убедитесь, что сервер в состоянии Maintenance:
STAGE: Maintenance -
Примените конфигурацию ноды Worker:
talosctl apply-config \--insecure \-e <ip_address> \-n <ip_address> \--file worker.yaml \--config-patch @<file_name>Укажите:
<ip_address>— публичный IP-адрес ноды Worker, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес;<file_name>— файл патча ноды Worker, который вы создали на шаге 4 при подготовке конфигурации нод кластера на этапе 2, напримерpatch-worker1.yaml.
После применения конфигурации вернется ответ
Applied configuration without a reboot, а сервер перейдет в режимSTAGE: Installing. -
Дождитесь завершения установки ОС — сервер автоматически перезагрузится и перейдет в режим
KUBELET: Healthy.
5. Инициализировать Kubernetes
-
Создайте кластер Kubernetes:
talosctl bootstrap \--nodes <ip_address> \--endpoints <ip_address> \--talosconfig ./talosconfigУкажите
<ip_address>— публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес. -
Получите файл конфигурации для управления кластером Kubernetes:
talosctl kubeconfig \--nodes <ip_address> \--endpoints <ip_address> \--talosconfig ./talosconfigУкажите
<ip_address>— публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес.Файл конфигурации Kubernetes по умолчанию сохранится по пути
~/.kube/config. -
Проверьте статус нод Kubernetes:
kubectl get nodes -o wideВ ответе появится информация о статусах нод. Например:
NAME STATUS ROLES VERSIONtalos-lv9-t5t Ready control-plane v1.36.0talos-xc9-jfu Ready <none> v1.36.0talos-ee2-e9f Ready <none> v1.36.0Все ноды должны быть в статусе
Ready. -
Проверьте системные поды:
kubectl get pods -AВ ответе появится информация о статусах подов. Например:
NAMESPACE NAME READY STATUS RESTARTS AGEkube-system kube-apiserver-talos-lv9-t5t 1/1 Running 0 5mkube-system kube-controller-manager-talos-lv9-t5t 1/1 Running 0 5mkube-system kube-scheduler-talos-lv9-t5t 1/1 Running 0 5mkube-system coredns-xxxxxxxxxx-xxxxx 1/1 Running 0 5mОсновные системные поды должны быть в статусе
Running. -
Проверьте список участников кластера:
talosctl \--talosconfig ./talosconfig \-e <ip_address> \-n <ip_address> \get membersУкажите
<ip_address>— публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите Продукты → Выделенные серверы → Серверы → карточка сервера → поле IP-адрес.В ответе появится информация о нодах кластера. Например:
NODE NAMESPACE TYPE ID VERSION HOSTNAME MACHINE TYPE OS ADDRESSES203.0.113.10 cluster Member talos-ee2-e9f 1 talos-ee2-e9f worker Talos (v1.13.0) ["203.0.113.12"]203.0.113.10 cluster Member talos-lv9-t5t 1 talos-lv9-t5t controlplane Talos (v1.13.0) ["203.0.113.11"]203.0.113.10 cluster Member talos-xc9-jfu 2 talos-xc9-jfu worker Talos (v1.13.0) ["203.0.113.10"]Убедитесь, что все серверы присутствуют в списке и имеют корректные роли.