Files
talos-kurs/talos-k8s

Talos

Что такое Talos?

Talos Linux

  • Поддерживает облачные платформы, «голое железо» и платформы виртуализации
  • Все управление системой осуществляется через API. Нет SSH, оболочки или консоли
  • Готовность к работе: поддерживает одни из крупнейших Kubernetes-кластеров в мире
  • Проект с открытым исходным кодом от команды Sidero Labs

ISO-образы для архитектур amd64 и arm64 доступны на странице релизов Talos.

руководству по началу работы фабрика по сборке iso

Софт

MacOS:

brew install siderolabs/tap/talosctl
brew tap vasyakrg/talostpl && brew install talostpl
brew install fluxcd/tap/flux
brew install helm

Linux:

curl -sL https://talos.dev/install | sh
curl -L -o talostpl "https://github.com/vasyakrg/talostpl/releases/download/$(curl -s https://api.github.com/repos/vasyakrg/talostpl/releases/latest | grep '"tag_name":' | head -1 | cut -d '"' -f4)/talostpl-linux-amd64"
chmod +x talostpl
sudo mv talostpl /usr/local/bin/
curl -s https://fluxcd.io/install.sh | sudo bash
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Manual:

https://github.com/siderolabs/talos/releases/ https://github.com/vasyakrg/talostpl https://fluxcd.io/flux/installation/ https://helm.sh/docs/intro/install/

Hacks

// .zshrc export KUBECONFIG=$(find /Users/vasyansk/Configs/.kube -maxdepth 1 -type f -name '*' -not -name 'kubectx' | tr "\n" ":") + https://github.com/weibeld/kubectl-ctx

Локальный кластер

нужен установленный docker

talosctl cluster create --workers 3
talosctl dashboard --nodes 10.5.0.2

talosctl --context talos-default kubeconfig ~/.kube/talos-default.yaml --nodes 10.5.0.2

Общие команды

talosctl --context talos-default cluster show
talosctl --context talos-default processes -w --nodes 10.5.0.2
talosctl --context talos-default --nodes 10.5.0.2 usage
talosctl --context talos-default --nodes 10.5.0.2 pcap
talosctl --context talos-default --nodes 10.5.0.2 netstat -nlpt

talosctl --context talos-default --nodes 10.5.0.2 edit machineconfig

talosctl --context talos-default --nodes 10.5.0.2 get rd
talosctl --context talos-default --nodes 10.5.0.2 get routes
talosctl --context talos-default --nodes 10.5.0.2 get mounts
talosctl --context talos-default --nodes 10.5.0.2 get cpu
talosctl --context talos-default --nodes 10.5.0.2 get systemdisk
talosctl --context talos-default --nodes 10.5.0.2 get etcdmember

Удаление

talosctl --context talos-default cluster destroy rm ~/.kube/talos-default.yaml rm ~/.talos/config

Генерация и установка

эту часть делает ренератор generator.sh

talosctl gen secrets -o config/secrets.yaml

talosctl gen config --kubernetes-version 1.33.2 --with-secrets config/secrets.yaml talos-demo https://192.168.23.57:6443 --config-patch @patch.yaml

talosctl machineconfig patch config/controlplane.yaml --patch @cp1.patch --output config/cp1.yaml
talosctl machineconfig patch config/controlplane.yaml --patch @cp2.patch --output config/cp2.yaml
talosctl machineconfig patch config/controlplane.yaml --patch @cp3.patch --output config/cp3.yaml

talosctl machineconfig patch config/worker.yaml --patch @worker1.patch --output config/worker1.yaml
talosctl machineconfig patch config/worker.yaml --patch @worker2.patch --output config/worker2.yaml

talosctl apply-config --insecure -n 192.168.23.57 --file config/cp1.yaml
talosctl bootstrap --nodes 192.168.23.57 --endpoints 192.168.23.57 --talosconfig=config/talosconfig

# talosctl apply-config --insecure -n 192.168.23.52 --file config/cp2.yaml
# talosctl apply-config --insecure -n 192.168.23.53 --file config/cp3.yaml

talosctl apply-config --insecure -n 192.168.23.63 --file config/worker1.yaml
talosctl apply-config --insecure -n 192.168.23.64 --file config/worker2.yaml

talosctl kubeconfig ~/.kube/talos-demo.yaml --nodes 192.168.23.57 --endpoints 192.168.23.57 --talosconfig config/talosconfig

Cilium

правим api-адрес t8s в cilium/values.yaml

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

helm upgrade \
    --install \
    cilium \
    cilium/cilium \
    --version 1.17.5 \
    --namespace kube-system \
    --values cilium/values.yaml \
    --set cluster.name=talos-demo \
    --set cluster.id=1

kubectl apply -f cilium/ippool.yaml
kubectl apply -f cilium/l2-announcement-policy.yaml

Re-Apply configs

talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.57 --file config/cp1.yaml
# talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.52 --file config/cp2.yaml
# talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.53 --file config/cp3.yaml

talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.59 --file config/worker1.yaml
talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.58 --file config/worker2.yaml

Re-Apply configs and reboot

talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.57 --file config/cp1.yaml --mode=reboot
# talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.52 --file config/cp2.yaml --mode=reboot
# talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.53 --file config/cp3.yaml --mode=reboot

talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.59 --file config/worker1.yaml --mode=reboot
talosctl --talosconfig config/talosconfig apply-config -n 192.168.23.58 --file config/worker2.yaml --mode=reboot

Upgrade

IMAGE=factory.talos.dev/metal-installer/956b9107edd250304169d2e7a765cdd4e0c31f9097036e2e113b042e6c01bb98:v1.10.4

talosctl --talosconfig config/talosconfig upgrade --nodes 192.168.23.54 --image ${IMAGE}
# talosctl --talosconfig config/talosconfig upgrade --nodes 192.168.23.52 --image ${IMAGE}
# talosctl --talosconfig config/talosconfig upgrade --nodes 192.168.23.53 --image ${IMAGE}

talosctl --talosconfig config/talosconfig upgrade --nodes 192.168.23.55 --image ${IMAGE}
talosctl --talosconfig config/talosconfig upgrade --nodes 192.168.23.56 --image ${IMAGE}

Upgrade k8s

talosctl --nodes 192.168.23.100 --talosconfig config/talosconfig upgrade-k8s --to 1.33.2