Talos Linux — это Linux, разработанный для Kubernetes: безопасный, неизменяемый и минималистичный.
- Поддерживает облачные платформы, «голое железо» и платформы виртуализации
- Все управление системой осуществляется через API. Нет SSH, оболочки или консоли
- Готовность к работе: поддерживает одни из крупнейших Kubernetes-кластеров в мире
- Проект с открытым исходным кодом от команды Sidero Labs
Имея меньше, Talos предлагает больше: безопасность, эффективность, устойчивость, согласованность.
Все эти аспекты улучшаются благодаря простоте и минимализму.
Talos может быть установлен на физическую машину с использованием ISO-образа. ISO-образы для архитектур amd64 и arm64 доступны на странице релизов Talos.
Talos не устанавливается на диск при загрузке с ISO до тех пор, пока не будет применена конфигурация машины.
Пожалуйста, следуйте руководству по началу работы для выполнения общих шагов по установке Talos.
Примечание: Если на диске уже установлена Talos, при загрузке с ISO Talos загрузится с этой установленной версии. Порядок загрузки должен отдавать предпочтение диску перед ISO, либо ISO должно быть удалено после установки, чтобы Talos загружался с диска.
Ознакомьтесь со справочником по параметрам ядра для списка поддерживаемых Talos параметров ядра.
Доступны два типа ISO-образов:
- metal-arch.iso: поддерживает загрузку на системах с BIOS и UEFI (для x86), только UEFI для arm64.
- metal-arch-secureboot.iso: поддерживает загрузку только на системах с UEFI в режиме SecureBoot (создано с помощью Image Factory.
Руководство по настройке кластера Talos Linux.
Этот документ проведет вас через процесс установки простого кластера Talos, а также объяснит некоторые ключевые концепции.
Независимо от того, где вы запускаете Talos, этапы создания Kubernetes-кластера включают:
- Загрузка машин с образа Talos Linux.
- Определение конечной точки API Kubernetes и создание конфигурации машин.
- Настройка Talos Linux путем применения конфигураций машин.
- Настройка
talosctl
. - Запуск Kubernetes.
Для высокодоступного Kubernetes-кластера в продакшене рекомендуется использовать три узла плоскости управления. Использование пяти узлов может обеспечить большую устойчивость к сбоям, но также приводит к большему количеству операций репликации и может отрицательно сказаться на производительности.
Talos имеет встроенную поддержку работы Kubernetes через общий/виртуальный IP-адрес. Для этого требуется соединение уровня 2 (Layer 2) между узлами управляющей плоскости.
Выберите неиспользуемый IP-адрес в той же подсети, что и узлы плоскости управления, для использования в качестве VIP. (Убедитесь, что выделенный адрес не используется другими устройствами и исключен из диапазона DHCP.)
При создании конфигурационных файлов для кластера Talos Linux рекомендуется начать с генерации файлы с секретами, который должен быть сохранен в безопасном месте. Этот файл можно использовать для генерации конфигураций машин или клиентов в любое время:
talosctl gen secrets -o secrets.yaml
Теперь мы можем создать общую конфигурацию машин:
talosctl gen config --kubernetes-version 1.31.4 --with-secrets secrets.yaml my-cluster https://172.16.61.10:6443 --config-patch @patch.yaml
Создаем конфигурацию для каждого узла:
talosctl machineconfig patch controlplane.yaml --patch @cp0.patch --output cp0.yaml
talosctl machineconfig patch controlplane.yaml --patch @cp1.patch --output cp1.yaml
talosctl machineconfig patch controlplane.yaml --patch @cp2.patch --output cp2.yaml
talosctl machineconfig patch worker.yaml --patch @worker0.patch --output worker0.yaml
talosctl machineconfig patch worker.yaml --patch @worker1.patch --output worker1.yaml
talosctl machineconfig patch worker.yaml --patch @worker2.patch --output worker2.yaml
talosctl apply-config --insecure -n 172.16.61.144 --file ./cp0.yaml
talosctl apply-config --insecure -n 172.16.61.145 --file ./cp1.yaml
talosctl apply-config --insecure -n 172.16.61.146 --file ./cp2.yaml
talosctl apply-config --insecure -n 172.16.61.147 --file ./worker0.yaml
talosctl apply-config --insecure -n 172.16.61.149 --file ./worker1.yaml
talosctl apply-config --insecure -n 172.16.61.148 --file ./worker2.yaml
После перезапуска Controls Plane узла необходимо инициализировать etcd:
talosctl bootstrap --nodes 172.16.61.11 --endpoints 172.16.61.11 --talosconfig=./talosconfig
Получаем kube config:
talosctl kubeconfig ~/.kube/config --nodes 172.16.61.10 --endpoints 172.16.61.10 --talosconfig ./talosconfig
Добавляем репозиторий:
helm repo add cilium https://helm.cilium.io/
helm repo update
Устанавливаем Cilium:
helm upgrade \
--install \
cilium \
cilium/cilium \
--version 1.16.5 \
--namespace kube-system \
--values cilium/values.yaml
Устанавливаем Metrics Server
helm upgrade \
--namespace kube-system \
--install metrics-server metrics-server/metrics-server \
--set args={--kubelet-insecure-tls}
Поднимаем Traefik Kubernetes Ingress
helm upgrade \
--install \
--namespace traefik \
--create-namespace \
traefik traefik/traefik \
--values traefik/values.yaml
Обновление кластера
talosctl --nodes 172.16.61.10 upgrade-k8s --to 1.32.0