Files
learn-devops/talos
Федор Батоногов 67de6e6c10 Feture/talos readme (#23)
* Add talos readme

* Add talos readme
2024-11-12 09:22:19 +03:00
..
2024-11-12 09:22:19 +03:00

Talos

Что такое Талос?

Talos - это дистрибутив Linux, оптимизированный для контейнеров; переосмысление Linux для распределенных систем, таких как Kubernetes. Разработанный, чтобы быть максимально минимальным, сохраняя при этом практичность. По этим причинам Talos имеет ряд уникальных для него особенностей:

  • неизменяесый
  • атомарный
  • эфимерный
  • минималистичный
  • по умолчанию он безопасен
  • управляется с помощью одного декларативного файла конфигурации и gRPC API
  • Talos может быть развернут в контейнерных, облачных, виртуализированных и голых металлических платформах.

Почему Талос

Имея меньше, Талос предлагает больше. Безопасность. Эффективность. Устойчивость. Последовательность.

Все эти области улучшаются просто за счет того, что у них меньше.

Загрузка Talos на голом металле с ISO

Talos не устанавливается на диск при загрузке из ISO до тех пор, пока не будет применена конфигурация машины.

Настройка Talos Linux

Определяем переменную с IP адресом Control Plane узла:

export TALOS_CONTROL_PLANE_IP=192.168.1.48

Вот так можно посмотреть список дисков на узле:

talosctl -n $TALOS_CONTROL_PLANE_IP disks --insecure

Генерируем конфиг

talosctl gen config --kubernetes-version 1.31.1 talos https://$TALOS_CONTROL_PLANE_IP:6443 --config-patch @patch.yaml

Применяем конфигурацию

talosctl apply-config --insecure -n $TALOS_CONTROL_PLANE_IP --file ./controlplane.yaml

После перезапуска Controls Plane узла необходимо инициализировать etcd:

talosctl bootstrap --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --talosconfig=./talosconfig

Получаем kube config:

talosctl kubeconfig ~/.kube/config --nodes $TALOS_CONTROL_PLANE_IP --endpoints $TALOS_CONTROL_PLANE_IP --talosconfig ./talosconfig

Добавляем рабочий узел:

export TALOS_WORKER_1_IP=192.168.1.142
talosctl apply-config --insecure -n $TALOS_WORKER_1_IP --file ./worker.yaml

Настройка Cilium

Добавляем репозиторий:

helm repo add cilium https://helm.cilium.io/
helm repo update

Устанавливаем Cilium:

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

helm upgrade \
  --namespace kube-system \
  --install metrics-server metrics-server/metrics-server \
  --set args={--kubelet-insecure-tls}
talosctl upgrade-k8s --nodes $TALOS_CONTROL_PLANE_IP --to 1.31.2