---
title: 'Установить Talos Linux для работы с Kubernetes'
sidebar_label: 'Установить Talos Linux для работы с Kubernetes'
sidebar_position: 8
description: 'Как на выделенном сервере установить Talos Linux для работы с Kubernetes'
---

import Formbricks from '@theme/MDXComponents/Formbricks'

# Установить Talos Linux для работы с Kubernetes

Talos Linux — это специализированная операционная система, разработанная Sidero Labs и предназначенная для запуска Kubernetes.

Запускается в оперативной памяти сервера и использует последнюю актуальную версию Talos из официальных релизов — подробнее на странице [Releases](https://github.com/siderolabs/talos/releases) в GitHub репозитории Sidero Labs.

Подключиться к серверу в Talos можно по [VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

1. [Подготовьте параметры для конфигурации нод кластера](#prepare-cluster-node-parameters).
2. [Подготовьте конфигурацию нод кластера](#prepare-cluster-node-configuration).
3. [Примените конфигурацию на ноду Control Plane](#apply-configuration-to-control-plane-node).
4. [Примените конфигурацию на ноду Worker](#apply-configuration-to-worker-nodes).
5. [Инициализируйте Kubernetes](#initialize-kubernetes).

## 1. Подготовить параметры для конфигурации нод кластера \{#prepare-cluster-node-parameters}

Для подготовки конфигурационных файлов для нод Control Plane и Worker нужно собрать параметры каждого сервера, который будет входить в состав кластера.

1. [Загрузите сервер в режиме восстановления и диагностики Rescue](/dedicated/troubleshooting/boot-to-recovery.mdx).

2. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

3. Выведите информацию о конфигурации сети:

   ```bash
   ip a && ip r
   ```

   В ответе появится информация о сетевых интерфейсах. Скопируйте и сохраните параметры сети. Например:

   ```bash
   2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
       link/ether 1c:1b:0d:65:43:21 brd ff:ff:ff:ff:ff:ff
       altname eno1
       altname enp4s0f0
       altname enxac1f6b47814a
       inet 203.0.113.10/24 brd 203.0.113.255 scope global eth0

   default via 203.0.113.1 dev eth0
   203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.10
   ```

   Здесь:

   * `203.0.113.10` — публичный IP-адрес сервера.
     IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**;
   * `203.0.113.1` — шлюз по умолчанию;
   * `/24` — маска подсети;
   * `1c:1b:0d:65:43:21` — MAC-адрес сетевого интерфейса.

4. Выберите диск, на который нужно установить ОС Talos.
   Для этого выведите список дисков:

   ```bash
   lsblk
   ```

   В ответе появится информация о дисках. Скопируйте и сохраните имя диска, на который установите ОС. Например:

   ```bash
   NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
   loop0   7:0    0 547.9M  1 loop /run/archiso/airootfs
   sda     8:0    0 447.1G  0 disk
   sdb     8:16   0 447.1G  0 disk
   sdc     8:32   0   3.6T  0 disk
   sdd     8:48   0   3.6T  0 disk
   ```

5. Измените шаблон загрузки сервера. Вы можете:

   * вернуть [прежний шаблон загрузки сервера](/dedicated/troubleshooting/boot-to-recovery.mdx#restore-server-boot-template) или перезагрузить сервер из ОС.
     При перезагрузке сервера из ОС шаблон загрузки автоматически изменится на тот, который был установлен до загрузки сервера в режиме Rescue;
   * или сразу загрузить сервер в режиме Talos, чтобы продолжить работу по установке Talos Linux.

6. Повторите шаги 1-5 для каждого сервера в составе кластера.

## 2. Подготовить конфигурацию нод кластера \{#prepare-cluster-node-configuration}

1. Убедитесь, что на сервере, с которого вы будете устанавливать ОС Talos, установлен клиент [`talosctl`](https://docs.siderolabs.com/talos/v1.13/getting-started/talosctl).

2. Создайте базовую конфигурацию кластера:

   ```bash
   talosctl gen config my-cluster https://<ip_address>:6443
   ```

   Укажите `<ip_address>` — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
   IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**.

   В ответе появится информация об успешной генерации конфигурации. Например:

   ```bash
   generating PKI and tokens
   created controlplane.yaml
   created worker.yaml
   created talosconfig
   ```

   Здесь:

   * `controlplane.yaml` — шаблон конфигурации для ноды Control Plane;
   * `worker.yaml` — шаблон конфигурации для нод Worker;
   * `talosconfig` — конфигурация клиента `talosctl`.

3. Создайте файл патча для ноды Control Plane:

   3.1. Создайте текстовым редактором `vi` файл патча для ноды Control Plane:

   ```bash
   vi <file_name>
   ```

   Укажите `<file_name>` — имя файла в формате `yaml`, например `patch-cp1.yaml`.

   3.2. Добавьте в файл конфигурацию:

   ```bash
   cluster:
       allowSchedulingOnControlPlanes: true
   machine:
       install:
           disk: /dev/<disk>
       network:
           interfaces:
           - deviceSelector:
                   hardwareAddr: "<mac_address>"
               addresses:
                   - <ip_address>/<mask>
               routes:
                   - network: 0.0.0.0/0
                   gateway: <gateway>
               dhcp: false
           nameservers:
               - <dns_server>
   ```

   Укажите:

   * `<disk>` — имя диска для установки ОС Talos, которое вы выбрали на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<mac_address>` — MAC-адрес сетевого интерфейса, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<ip_address>` — публичный IP-адрес сервера, который который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
     IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**;
   * `<mask>` — маска подсети, которую вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<gateway>` —  шлюз по умолчанию, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<dns_server>` — IP-адрес DNS-сервера.
     Можно добавить несколько DNS-серверов.
     Мы рекомендуем использовать [рекурсивные DNS-серверы Selectel](/infrastructure/dns/dns-recursive-servers-list.mdx), но вы можете указать любые доступные DNS-серверы.

   3.3. Выйдите из текстового редактора `vi` с сохранением изменений:

   ```bash
   :wq
   ```

4. Если в кластере используется несколько серверов, создайте конфигурацию для ноды Worker.
   Для одиночного сервера (Single Node Cluster), создание конфигураций для нод Worker можно пропустить.

   4.1. Создайте текстовым редактором `vi` файл патча ноды Worker:

   ```bash
   vi <file_name>
   ```

   Укажите `<file_name>` — имя файла в формате `yaml`, например `patch-worker1.yaml`.

   4.2. Добавьте в файл конфигурацию:

   ```bash
   machine:
   install:
       disk: /dev/<disk>
   network:
       interfaces:
       - deviceSelector:
               hardwareAddr: "<mac_address>"
           addresses:
               - <ip_address>/<mask>
           routes:
               - network: 0.0.0.0/0
               gateway: <gateway>
           dhcp: false
       nameservers:
           - <dns_server>
   ```

   Укажите:

   * `<disk>` — имя диска для установки ОС Talos, которое вы выбрали на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<mac_address>` — MAC-адрес сетевого интерфейса, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<ip_address>` — публичный IP-адрес сервера, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
     IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**;
   * `<mask>` — маска подсети, которую вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<gateway>` —  шлюз по умолчанию, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters);
   * `<dns_server>` — IP-адрес DNS-сервера.
     Можно добавить несколько DNS-серверов.
     Мы рекомендуем использовать [рекурсивные DNS-серверы Selectel](/infrastructure/dns/dns-recursive-servers-list.mdx), но вы можете указать любые доступные DNS-серверы.

   4.3. Выйдите из текстового редактора `vi` с сохранением изменений:

   ```bash
   :wq
   ```

   4.4. Если планируется кластер из нескольких серверов, повторите шаги 4.1-4.3 для создания отдельных файлов патчей для каждой ноды Worker.

## 3. Применить конфигурацию на ноду Control Plane \{#apply-configuration-to-control-plane-node}

1. [Загрузите сервер Control Plane в режиме восстановления и диагностики с шаблоном Talos](/dedicated/troubleshooting/boot-to-recovery.mdx).

2. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

3. Убедитесь, что сервер в состоянии Maintenance:

   ```bash
   STAGE: Maintenance
   ```

4. Примените конфигурацию ноды Control Plane:

   ```bash
   talosctl apply-config \
       --insecure \
       -e <ip_address> \
       -n <ip_address> \
       --file controlplane.yaml \
       --config-patch @<file_name>
   ```

   Укажите:

   * `<ip_address>` — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
     IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**;
   * `<file_name>` — файл патча Control Plane, который вы создали на шаге 3 при [подготовке конфигурации нод кластера на этапе 2](#prepare-cluster-node-configuration), например `patch-cp1.yaml`.

   После применения конфигурации вернется ответ `Applied configuration without a reboot`, а сервер перейдет в режим `STAGE: Installing`.

5. Дождитесь завершения установки ОС — сервер автоматически перезагрузится и перейдет в режим `KUBELET: Healthy`.

## 4. Применить конфигурацию на ноду Worker \{#apply-configuration-to-worker-nodes}

1. [Загрузите сервер Worker в режиме восстановления и диагностики с шаблоном Talos](/dedicated/troubleshooting/boot-to-recovery.mdx).

2. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

3. Убедитесь, что сервер в состоянии Maintenance:

   ```bash
   STAGE: Maintenance
   ```

4. Примените конфигурацию ноды Worker:

   ```bash
   talosctl apply-config \
       --insecure \
       -e <ip_address> \
       -n <ip_address> \
       --file worker.yaml \
       --config-patch @<file_name>
   ```

   Укажите:

   * `<ip_address>` — публичный IP-адрес ноды Worker, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
     IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**;
   * `<file_name>` — файл патча ноды Worker, который вы создали на шаге 4 при [подготовке конфигурации нод кластера на этапе 2](#prepare-cluster-node-configuration), например `patch-worker1.yaml`.

   После применения конфигурации вернется ответ `Applied configuration without a reboot`, а сервер перейдет в режим `STAGE: Installing`.

5. Дождитесь завершения установки ОС — сервер автоматически перезагрузится и перейдет в режим `KUBELET: Healthy`.

## 5. Инициализировать Kubernetes \{#initialize-kubernetes}

1. Создайте кластер Kubernetes:

   ```bash
   talosctl bootstrap \
       --nodes <ip_address> \
       --endpoints <ip_address> \
       --talosconfig ./talosconfig
   ```

   Укажите `<ip_address>` — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
   IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**.

2. Получите файл конфигурации для управления кластером Kubernetes:

   ```bash
   talosctl kubeconfig \
       --nodes <ip_address> \
       --endpoints <ip_address> \
       --talosconfig ./talosconfig
   ```

   Укажите `<ip_address>` — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
   IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**.

   Файл конфигурации Kubernetes по умолчанию сохранится по пути `~/.kube/config`.

3. Проверьте статус нод Kubernetes:

   ```bash
   kubectl get nodes -o wide
   ```

   В ответе появится информация о статусах нод. Например:

   ```bash
   NAME            STATUS   ROLES           VERSION
   talos-lv9-t5t   Ready    control-plane   v1.36.0
   talos-xc9-jfu   Ready    <none>          v1.36.0
   talos-ee2-e9f   Ready    <none>          v1.36.0
   ```

   Все ноды должны быть в статусе `Ready`.

4. Проверьте системные поды:

   ```bash
   kubectl get pods -A
   ```

   В ответе появится информация о статусах подов. Например:

   ```bash
   NAMESPACE     NAME                                        READY   STATUS    RESTARTS   AGE
   kube-system   kube-apiserver-talos-lv9-t5t                1/1     Running   0          5m
   kube-system   kube-controller-manager-talos-lv9-t5t       1/1     Running   0          5m
   kube-system   kube-scheduler-talos-lv9-t5t                1/1     Running   0          5m
   kube-system   coredns-xxxxxxxxxx-xxxxx                    1/1     Running   0          5m
   ```

   Основные системные поды должны быть в статусе `Running`.

5. Проверьте список участников кластера:

   ```bash
   talosctl \
       --talosconfig ./talosconfig \
       -e <ip_address> \
       -n <ip_address> \
       get members
   ```

   Укажите `<ip_address>` — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при [подготовке параметров на этапе 1](#prepare-cluster-node-parameters).
   IP-адрес выделенного сервера также можно посмотреть в [панели управления](https://my.selectel.ru/servers/default/servers/): в верхнем меню выберите **Продукты** → **Выделенные серверы** → **Серверы** → карточка сервера → поле **IP-адрес**.

   В ответе появится информация о нодах кластера. Например:

   ```bash
   NODE            NAMESPACE   TYPE     ID              VERSION   HOSTNAME        MACHINE TYPE   OS                ADDRESSES
   203.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"]
   ```

   Убедитесь, что все серверы присутствуют в списке и имеют корректные роли.

<Formbricks />
