Перейти к основному содержимому

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

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

Запускается в оперативной памяти сервера и использует последнюю актуальную версию Talos из официальных релизов — подробнее на странице Releases в GitHub репозитории Sidero Labs.

Подключиться к серверу в Talos можно по VNC или через KVM-консоль.

  1. Подготовьте параметры для конфигурации нод кластера.
  2. Подготовьте конфигурацию нод кластера.
  3. Примените конфигурацию на ноду Control Plane.
  4. Примените конфигурацию на ноду Worker.
  5. Инициализируйте Kubernetes.

1. Подготовить параметры для конфигурации нод кластера

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

  1. Загрузите сервер в режиме восстановления и диагностики Rescue.

  2. Подключитесь к серверу по SSH или через KVM-консоль.

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

    ip a && ip r

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

    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-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите ПродуктыВыделенные серверыСерверы → карточка сервера → поле IP-адрес;
    • 203.0.113.1 — шлюз по умолчанию;
    • /24 — маска подсети;
    • 1c:1b:0d:65:43:21 — MAC-адрес сетевого интерфейса.
  4. Выберите диск, на который нужно установить ОС Talos. Для этого выведите список дисков:

    lsblk

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

    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. Измените шаблон загрузки сервера. Вы можете:

    • вернуть прежний шаблон загрузки сервера или перезагрузить сервер из ОС. При перезагрузке сервера из ОС шаблон загрузки автоматически изменится на тот, который был установлен до загрузки сервера в режиме Rescue;
    • или сразу загрузить сервер в режиме Talos, чтобы продолжить работу по установке Talos Linux.
  6. Повторите шаги 1-5 для каждого сервера в составе кластера.

2. Подготовить конфигурацию нод кластера

  1. Убедитесь, что на сервере, с которого вы будете устанавливать ОС Talos, установлен клиент talosctl.

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

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

    Укажите <ip_address> — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите ПродуктыВыделенные серверыСерверы → карточка сервера → поле IP-адрес.

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

    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:

    vi <file_name>

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

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

    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>

    Укажите:

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

    :wq
  4. Если в кластере используется несколько серверов, создайте конфигурацию для ноды 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/0
    gateway: <gateway>
    dhcp: false
    nameservers:
    - <dns_server>

    Укажите:

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

    :wq

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

3. Применить конфигурацию на ноду Control Plane

  1. Загрузите сервер Control Plane в режиме восстановления и диагностики с шаблоном Talos.

  2. Подключитесь к серверу по VNC или через KVM-консоль.

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

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

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

    Укажите:

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

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

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

  1. Загрузите сервер Worker в режиме восстановления и диагностики с шаблоном Talos.

  2. Подключитесь к серверу по VNC или через KVM-консоль.

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

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

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

    Укажите:

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

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

5. Инициализировать Kubernetes

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

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

    Укажите <ip_address> — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите ПродуктыВыделенные серверыСерверы → карточка сервера → поле IP-адрес.

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

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

    Укажите <ip_address> — публичный IP-адрес сервера Control Plane, который вы сохранили на шаге 3 при подготовке параметров на этапе 1. IP-адрес выделенного сервера также можно посмотреть в панели управления: в верхнем меню выберите ПродуктыВыделенные серверыСерверы → карточка сервера → поле IP-адрес.

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

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

    kubectl get nodes -o wide

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

    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. Проверьте системные поды:

    kubectl get pods -A

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

    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. Проверьте список участников кластера:

    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 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"]

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