Files
learn-devops/talos/README.md
github-actions[bot] 3071c7b38a Talos (#22)
Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
2024-11-11 19:49:19 +03:00

115 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Talos
## Что такое Талос?
Talos - это дистрибутив Linux, оптимизированный для контейнеров;
переосмысление Linux для распределенных систем, таких как Kubernetes.
Разработанный, чтобы быть максимально минимальным, сохраняя при этом практичность.
По этим причинам Talos имеет ряд уникальных для него особенностей:
- неизменяесый
- атомарный
- эфимерный
- минималистичный
- по умолчанию он безопасен
- управляется с помощью одного декларативного файла конфигурации и gRPC API
- Talos может быть развернут в контейнерных, облачных, виртуализированных и голых металлических платформах.
## Почему Талос
Имея меньше, Талос предлагает больше. Безопасность. Эффективность. Устойчивость. Последовательность.
Все эти области улучшаются просто за счет того, что у них меньше.
## Загрузка Talos на голом металле с ISO
Talos не устанавливается на диск при загрузке из ISO до тех пор, пока не будет применена конфигурация машины.
## Настройка Talos Linux
Определяем переменную с IP адресом Control Plane узла:
```sh
export TALOS_CONTROL_PLANE_IP=192.168.1.48
```
Вот так можно посмотреть список дисков на узле:
```sh
talosctl -n $TALOS_CONTROL_PLANE_IP disks --insecure
```
Генерируем конфиг
```sh
talosctl gen config --kubernetes-version 1.31.1 talos https://$TALOS_CONTROL_PLANE_IP:6443 --config-patch @patch.yaml
```
Применяем конфигурацию
```sh
talosctl apply-config --insecure -n $TALOS_CONTROL_PLANE_IP --file ./controlplane.yaml
```
После перезапуска Controls Plane узла необходимо инициализировать etcd:
```sh
talosctl bootstrap --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --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
```
## Настройка Cilium
Добавляем репозиторий:
```sh
helm repo add cilium https://helm.cilium.io/
helm repo update
```
Устанавливаем Cilium:
```sh
helm upgrade \
--install \
cilium \
cilium/cilium \
--version 1.16.3 \
--namespace kube-system \
--set ipam.mode=kubernetes \
--set kubeProxyReplacement=true \
--set securityContext.capabilities.ciliumAgent="{CHOWN,KILL,NET_ADMIN,NET_RAW,IPC_LOCK,SYS_ADMIN,SYS_RESOURCE,DAC_OVERRIDE,FOWNER,SETGID,SETUID}" \
--set securityContext.capabilities.cleanCiliumState="{NET_ADMIN,SYS_ADMIN,SYS_RESOURCE}" \
--set cgroup.autoMount.enabled=false \
--set cgroup.hostRoot=/sys/fs/cgroup \
--set k8sServiceHost=localhost \
--set k8sServicePort=7445
```
## Metrics Server
Устанавливаем Metrics Server
```sh
helm upgrade \
--namespace kube-system \
--install metrics-server metrics-server/metrics-server \
--set args={--kubelet-insecure-tls}
```
```sh
talosctl upgrade-k8s --nodes $TALOS_CONTROL_PLANE_IP --to 1.31.2
```