Добавлена конфигурация для kube-vip и l2 load balancer (#32)

* Добавлена конфигурация для kube-vip и l2 load balancer

* Update gitignore

* Добавлены рабочие узлы

* Добавлены DNS серверы

* Изменены настройки сети

* Update readme

* Update readme

---------

Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
This commit is contained in:
github-actions[bot]
2025-01-14 12:00:19 +03:00
committed by GitHub
parent 0c4f496270
commit 3024073a96
13 changed files with 222 additions and 43 deletions

View File

@@ -1,73 +1,114 @@
# Talos
## Что такое Талос?
## Что такое Talos?
Talos - это дистрибутив Linux, оптимизированный для контейнеров;
переосмысление Linux для распределенных систем, таких как Kubernetes.
Разработанный, чтобы быть максимально минимальным, сохраняя при этом практичность.
По этим причинам Talos имеет ряд уникальных для него особенностей:
[Talos Linux](https://www.talos.dev/) — это **Linux**, разработанный для [Kubernetes](https://kubernetes.io/): безопасный, неизменяемый и минималистичный.
- неизменяесый
- атомарный
- эфимерный
- минималистичный
- по умолчанию он безопасен
- управляется с помощью одного декларативного файла конфигурации и gRPC API
- Talos может быть развернут в контейнерных, облачных, виртуализированных и голых металлических платформах.
- Поддерживает **облачные платформы, «голое железо» и платформы виртуализации**
- Все **управление системой осуществляется через API**. Нет SSH, оболочки или консоли
- Готовность к работе: **поддерживает одни из крупнейших Kubernetes-кластеров в мире**
- Проект с открытым исходным кодом от команды [Sidero Labs](https://www.siderolabs.com/)
## Почему Талос
## Почему Talos
Имея меньше, Талос предлагает больше. Безопасность. Эффективность. Устойчивость. Последовательность.
Имея меньше, Talos предлагает больше: безопасность, эффективность, устойчивость, согласованность.
Все эти области улучшаются просто за счет того, что у них меньше.
Все эти аспекты улучшаются благодаря простоте и минимализму.
## Загрузка Talos на голом металле с ISO
## Загрузка Talos на физический сервер с использованием ISO
Talos не устанавливается на диск при загрузке из ISO до тех пор, пока не будет применена конфигурация машины.
Talos может быть установлен на физическую машину с использованием ISO-образа. ISO-образы для архитектур amd64 и arm64 доступны на [странице релизов Talos](https://github.com/siderolabs/talos/releases/).
## Настройка Talos Linux
Talos не устанавливается на диск при загрузке с ISO до тех пор, пока не будет применена конфигурация машины.
Определяем переменную с IP адресом Control Plane узла:
Пожалуйста, следуйте [руководству по началу работы](https://www.talos.dev/v1.9/introduction/getting-started/) для выполнения общих шагов по установке Talos.
Примечание: Если на диске уже установлена Talos, при загрузке с ISO Talos загрузится с этой установленной версии.
Порядок загрузки должен отдавать предпочтение диску перед ISO, либо ISO должно быть удалено после установки, чтобы Talos загружался с диска.
Ознакомьтесь со справочником по [параметрам ядра](https://www.talos.dev/v1.9/reference/kernel/) для списка поддерживаемых Talos параметров ядра.
Доступны два типа ISO-образов:
- metal-arch.iso: поддерживает загрузку на системах с BIOS и UEFI (для x86), только UEFI для arm64.
- metal-arch-secureboot.iso: поддерживает загрузку только на системах с UEFI в режиме SecureBoot (создано с помощью [Image Factory](https://www.talos.dev/v1.9/learn-more/image-factory/).
## Начало работы
Руководство по настройке кластера Talos Linux.
Этот документ проведет вас через процесс установки простого кластера Talos, а также объяснит некоторые ключевые концепции.
Независимо от того, где вы запускаете Talos, этапы создания Kubernetes-кластера включают:
1. Загрузка машин с образа Talos Linux.
2. Определение конечной точки API Kubernetes и создание конфигурации машин.
3. Настройка Talos Linux путем применения конфигураций машин.
4. Настройка `talosctl`.
5. Запуск Kubernetes.
## Производственный кластер
Для высокодоступного Kubernetes-кластера в продакшене рекомендуется использовать три узла плоскости управления.
Использование пяти узлов может обеспечить большую устойчивость к сбоям,
но также приводит к большему количеству операций репликации и может отрицательно сказаться на производительности.
### Layer 2 VIP (общий IP-адрес)
Talos имеет встроенную поддержку работы Kubernetes через общий/виртуальный IP-адрес.
Для этого требуется соединение уровня 2 (Layer 2) между узлами управляющей плоскости.
Выберите неиспользуемый IP-адрес в той же подсети, что и узлы плоскости управления, для использования в качестве VIP.
(Убедитесь, что выделенный адрес не используется другими устройствами и исключен из диапазона DHCP.)
### Выделение секретов
При создании конфигурационных файлов для кластера Talos Linux рекомендуется начать с генерации файлы с секретами,
который должен быть сохранен в безопасном месте.
Этот файл можно использовать для генерации конфигураций машин или клиентов в любое время:
```sh
export TALOS_CONTROL_PLANE_IP=192.168.1.48
talosctl gen secrets -o secrets.yaml
```
Вот так можно посмотреть список дисков на узле:
### Запускаем Talos
Теперь мы можем создать общую конфигурацию машин:
```sh
talosctl -n $TALOS_CONTROL_PLANE_IP get disks --insecure
talosctl gen config --kubernetes-version 1.31.4 --with-secrets secrets.yaml my-cluster https://172.16.61.10:6443 --config-patch @patch.yaml
```
Генерируем конфиг
Создаем конфигурацию для каждого узла:
```sh
talosctl gen config --kubernetes-version 1.32.0 talos https://$TALOS_CONTROL_PLANE_IP: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
```
Применяем конфигурацию
```sh
talosctl apply-config --insecure -n $TALOS_CONTROL_PLANE_IP --file ./controlplane.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:
```sh
talosctl bootstrap --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --talosconfig=./talosconfig
talosctl bootstrap --nodes 172.16.61.11 --endpoints 172.16.61.11 --talosconfig=./talosconfig
```
Получаем kube config:
```sh
talosctl kubeconfig ~/.kube/config --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --talosconfig ./talosconfig
```
Добавляем рабочий узел:
```sh
export TALOS_WORKER_1_IP=192.168.1.142
talosctl apply-config --insecure -n $TALOS_WORKER_1_IP --file ./worker.yaml
talosctl kubeconfig ~/.kube/config --nodes 172.16.61.10 --endpoints 172.16.61.10 --talosconfig ./talosconfig
```
## Настройка Cilium
@@ -88,7 +129,7 @@ helm upgrade \
cilium/cilium \
--version 1.16.5 \
--namespace kube-system \
--values cilium.yaml
--values cilium/values.yaml
```
## Metrics Server
@@ -102,6 +143,19 @@ helm upgrade \
--set args={--kubelet-insecure-tls}
```
Поднимаем **Traefik Kubernetes Ingress**
```sh
talosctl upgrade-k8s --nodes $TALOS_CONTROL_PLANE_IP --to 1.32.1
helm upgrade \
--install \
--namespace traefik \
--create-namespace \
traefik traefik/traefik \
--values traefik/values.yaml
```
Обновление кластера
```sh
talosctl --nodes 172.16.61.10 upgrade-k8s --to 1.32.0
```