Talos Linux is Linux designed to be secure, immutable, and minimal [Link]. Its only purpose is to be a Kubernetes appliance that can be installed on bare metal or virtual environments [Link].
Talos is production-ready, capable of running large clusters while simplifying deployment and management via an API with no shell or console access. It is completely locked down!
The latest ISO is 100 MB, and upgrades are atomic since it is an immutable image-based distro.
PREREQUISITES
Easy install on Ubuntu:
sudo snap install kubectl --classic curl -sL https://talos.dev/install | sh
Both kubectl and talosctl are binaries that can also be manually downloaded and executed directly.
INSTANCES DEPLOYMENT
Download the ISO, boot instances with it, and allocate a few IPs in the DHCP server to the cluster.




INSTALLATION
For simplicity, this post uses 1 Control node (production environments require at least three) and 3 Worker nodes.
Set the environment variables.
export CLUSTER_NAME=k8s export CONTROL=192.168.1.210 export WORKER1=192.168.1.211 export WORKER2=192.168.1.212 export WORKER3=192.168.1.213
Generate the machine configurations for the cluster (three files will be created locally).
talosctl gen config $CLUSTER_NAME https://$CONTROL:6443
Apply the configuration to the Control and Worker nodes.
talosctl apply-config --insecure -n $CONTROL --file controlplane.yaml talosctl apply-config --insecure -n $WORKER1 --file worker.yaml talosctl apply-config --insecure -n $WORKER2 --file worker.yaml talosctl apply-config --insecure -n $WORKER3 --file worker.yaml

Set the local context for talosctl and bootstrap the cluster.
export TALOSCONFIG="talosconfig" talosctl config endpoint $CONTROL talosctl config node $CONTROL talosctl bootstrap

Wait a minute, then test and download ~/.kube/config.
talosctl -e $CONTROL containers talosctl -e $CONTROL kubeconfig chmod 600 ~/.kube/config
Test using kubectl.
kubectl get pods -A kubectl get nodes -A kubectl get services -A kubectl get ingress -A
Check health and real-time metrics.
talosctl health talosctl dashboard
Use F2 and F1 to switch between Monitor and Summary.


UPGRADING
Upgrade Talos.
talosctl upgrade -n 192.168.1.210 --preserve --wait --debug --image ghcr.io/siderolabs/installer:v1.x.x
Note: the --preserve flag should be used with a single Control node cluster. It prevents wiping ephemeral data since there is no other Control node to retain the cluster state.
Upgrade Kubernetes.
talosctl upgrade-k8s --to 1.y.y
Troubleshooting tools.
talosctl netstat talosctl dmesg talosctl pcap talosctl memory talosctl processes
BONUS
IncusOS is a similar purpose-built Linux appliance for running system containers (LXC) and virtual machines (KVM) on x64 or ARM hardware [Link].
It can be installed on local storage or run from a live USB stick [Link]. See installation options for physical or virtualized deployments [Link].
Getting started requires creating a TLS client certificate for the initial trusted client.
sudo apt install incus-client -y incus remote generate-certificate cd ~/.config/incus/ cat client.crt
Then insert it into the media download wizard to embed it in the image.
OTHER POSTS
MicroK8S on Ubuntu [Link].
Minikube on Ubuntu [Link].
K3s on Ubuntu [Link].
K8s Persistent Volumes [Link].
K8s Cheat Sheet [Link].
K8s Dashboard [Link].