Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
This commit is contained in:
github-actions[bot]
2024-11-11 19:49:19 +03:00
committed by GitHub
parent 302ffdd5f5
commit 3071c7b38a
2 changed files with 116 additions and 0 deletions

114
talos/README.md Normal file
View File

@@ -0,0 +1,114 @@
# 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
```