Перейти до вмісту

Module 14.4: Talos Linux - The OS That IS Kubernetes

Цей контент ще не доступний вашою мовою.


Before starting this module, you should have completed:

  • Module 14.1: k3s so you can compare Talos with a lightweight Kubernetes distribution that optimizes for small footprint and easy installation.
  • Module 14.2: k0s so you understand how Kubernetes distributions can separate upstream Kubernetes from packaging choices.
  • Linux fundamentals, especially the boot process, init systems, filesystems, kernel modules, networking, and the operational role of SSH.
  • Kubernetes operations fundamentals, including kubelet logs, control plane bootstrap, etcd quorum, node draining, and CNI installation.
  • Security Principles Foundation so concepts such as attack surface, defense in depth, least privilege, and immutable infrastructure are already familiar.

After completing this module, you will be able to:

  • Evaluate when Talos Linux is a better Kubernetes node operating system than a conventional Linux distribution, using security, operability, and flexibility trade-offs.
  • Design a Talos machine configuration strategy that separates shared cluster intent, control plane differences, worker differences, and environment-specific patches.
  • Debug common Talos cluster failures without SSH by mapping familiar Linux troubleshooting questions to talosctl, Kubernetes, and API-driven evidence.
  • Implement a safe day-2 workflow for Talos configuration changes, Kubernetes upgrades, Talos OS upgrades, and node maintenance.
  • Analyze an attempted host compromise and explain which parts Talos blocks, which parts Kubernetes policy must still block, and where runtime detection still matters.

A platform team inherited a Kubernetes estate that looked normal on paper. The nodes ran a supported enterprise Linux image, the clusters had regular vulnerability scans, and the operations team could SSH into every host when something went wrong. That access felt like a safety net until an attacker stole a developer kubeconfig, deployed a privileged pod, mounted the host filesystem, and found the same tools the operations team used every day: a shell, package manager, cron, SSH keys, and writable system directories.

The breach report did not describe an exotic zero-day. It described a chain of ordinary conveniences becoming attacker primitives. SSH made lateral movement easier. A mutable filesystem made persistence easier. A package manager made tooling installation easier. Human users and local credentials gave the attacker more places to search. The team had hardened Linux, but they were still operating a general-purpose operating system under Kubernetes.

Talos Linux starts from a more radical question: what if a Kubernetes node did not need to be a general-purpose server at all? If the machine exists only to run Kubernetes, then shell access, SSH, local users, a package manager, and ad hoc host mutation become liabilities rather than features. Talos removes them and replaces traditional host administration with a small API surface managed by talosctl over mutual TLS.

That design changes the platform engineer’s job. You do not log into a node and fix things by hand. You inspect state through APIs, update declarative machine configuration, roll nodes, and keep the cluster reproducible from version-controlled intent. Talos is not only a smaller Linux image. It is an operational model where the operating system behaves more like Kubernetes: declared, reconciled, audited, and replaceable.

The goal of this module is not to convince you that every cluster should run Talos. The goal is to help you reason like a senior platform engineer when choosing and operating it. Talos is powerful when the organization can accept API-only operations, declarative host configuration, and Kubernetes-only nodes. It becomes frustrating when teams still depend on SSH debugging, node-local customization, or packages installed after boot.


1. Talos Starts With A Different Threat Model

Section titled “1. Talos Starts With A Different Threat Model”

Traditional Kubernetes node hardening usually begins with a standard Linux distribution and removes risk from there. Teams disable password login, restrict SSH keys, configure auditd, patch packages, harden systemd units, tune kernel parameters, and add endpoint security. Those controls help, but they still assume the node is a general-purpose Linux host that administrators and attackers can interact with directly.

Talos begins from the opposite direction. It asks which host capabilities Kubernetes actually needs, then removes almost everything else. Kubernetes needs a kernel, networking, storage, containerd, kubelet, control plane components on control plane nodes, and a way to configure and observe the machine. It does not need a login shell, local human users, SSH, a mutable package database, cron, or hand-edited files in /etc.

That difference matters because attackers reuse the same administration paths that operators rely on. If an operator can SSH to a node, an attacker with stolen keys may try the same path. If an operator can use a package manager during an incident, malware can try to install tooling through that same mechanism. If an operator can patch files manually, a compromised workload with host write access can attempt persistence.

TRADITIONAL NODE MODEL
+--------------------------------------------------------------+
| Kubernetes workloads |
+--------------------------------------------------------------+
| kubelet | containerd | CNI | kube-proxy | node agents |
+--------------------------------------------------------------+
| systemd | journald | cron | sshd | users | sudo | PAM |
+--------------------------------------------------------------+
| bash | coreutils | curl | package manager | local config |
+--------------------------------------------------------------+
| Linux kernel and host filesystem |
+--------------------------------------------------------------+
Attackers who reach the host can search for shells, writable files,
credentials, package tools, scheduled tasks, and lateral movement paths.
TALOS NODE MODEL
+--------------------------------------------------------------+
| Kubernetes workloads |
+--------------------------------------------------------------+
| kubelet | containerd | CNI | kube-proxy | control plane pods |
+--------------------------------------------------------------+
| machined: Talos API, service manager, config applier |
+--------------------------------------------------------------+
| Minimal Linux kernel and immutable operating system image |
+--------------------------------------------------------------+
Operators and automation use talosctl over mTLS. There is no SSH
daemon, no interactive host shell, no package manager, and no local
user administration path.

The senior-level lesson is that Talos narrows the host compromise story, but it does not eliminate the Kubernetes compromise story. If an attacker has cluster-admin, they can still damage Kubernetes resources, steal Kubernetes secrets, deploy workloads, and abuse cloud permissions attached to workloads. Talos reduces what happens after a workload reaches toward the host, but it is not a substitute for RBAC, Pod Security Admission, network policy, secret hygiene, or runtime detection.

Pause and predict: Your team allows privileged pods in a namespace because a storage driver once needed that access. An attacker steals a kubeconfig that can create pods in that namespace. Before reading the next table, decide which parts of the attack Talos blocks and which parts Kubernetes policy still needs to block.

Attack StepTraditional Linux NodeTalos NodeControl That Still Matters
Create a privileged podWorks if RBAC and admission allow itWorks if RBAC and admission allow itRBAC, Pod Security Admission, policy engines
Mount host filesystemOften exposes writable directories and toolsExposes a much smaller and mostly immutable hostAdmission policy and least-privilege workloads
Chroot into hostOften useful because shells existUsually not useful because host shells are absentRuntime detection still helps
Install attacker toolsPackage manager or downloaded binaries may helpNo package manager and limited writable surfaceEgress controls and image policy
Persist with cron or systemdCommon persistence targetNot available as a traditional host mechanismKubernetes object auditing
Move through SSH keysPossible when keys or users existSSH daemon and local users are absentCredential rotation and identity boundaries

The table shows the central trade-off honestly. Talos breaks many host-level follow-on moves, but the first line still says “works” if Kubernetes policy allows a dangerous pod. That is why experienced Talos operators pair it with strong admission controls. Talos makes the node less useful to an attacker; Kubernetes policy should prevent the attacker from getting dangerous placement in the first place.

A useful analogy is an appliance instead of a workshop. A traditional Linux node is a workshop full of tools, and a skilled operator can fix almost anything inside it. Talos is closer to a sealed network appliance: you configure it through a defined interface, replace it when necessary, and avoid improvising inside the box. The appliance model is less flexible, but it is also much harder to abuse when an attacker gets near it.

The design also changes incident response. On a traditional node, responders may collect host artifacts, inspect process trees through SSH, and preserve disk images. On Talos, the first response is API-driven evidence collection, Kubernetes audit review, workload containment, and machine replacement or reboot into known-good state. That is a different muscle, so teams should practice it before an emergency.


2. What Is Actually Running On A Talos Node?

Section titled “2. What Is Actually Running On A Talos Node?”

Talos is still Linux, but it is not a general-purpose Linux distribution in the way Ubuntu, Debian, Rocky Linux, or Flatcar are. The kernel is Linux, containers are still containers, and Kubernetes components behave like Kubernetes components. The difference is in the host userland, management plane, and mutation model.

The most important Talos process is machined. It is the init process, the Talos API server, the service manager, and the component responsible for applying machine configuration. When you run talosctl logs kubelet, you are not SSHing and reading /var/log manually. You are asking the Talos API for service logs. When you patch machine configuration, you are not editing a file in /etc by hand. You are sending desired configuration to the API, and Talos applies it according to its rules.

TALOS MANAGEMENT PATH
+------------------+ mTLS gRPC +------------------+
| operator laptop | ----------------------> | machined API |
| talosctl | | port 50000 |
+------------------+ +------------------+
|
v
+------------------+
| services |
| kubelet |
| containerd |
| etcd on control |
+------------------+
|
v
+------------------+
| Kubernetes node |
| state and logs |
+------------------+

The absence of SSH is not a missing feature to work around. It is a design constraint that keeps human and automated operations on the same auditable path. If a production runbook says “SSH to the node and edit a file,” that runbook does not fit Talos. The Talos version of the runbook should say which API command gathers evidence, which configuration patch changes desired state, and how the team verifies the result.

Component Or CapabilityPresent In TalosWhy It Exists Or Why It Is RemovedOperational Consequence
Linux kernelYesKubernetes still needs kernel primitives such as namespaces, cgroups, networking, and filesystemsKernel behavior still matters for workloads and drivers
machinedYesIt is the Talos API, init system, service manager, and configuration applierOperators use talosctl instead of host login
kubelet and containerdYesThey are required for Kubernetes node behaviorFamiliar Kubernetes debugging still applies
etcdControl plane nodes onlyUpstream Kubernetes control planes need a consistent datastoreControl plane quorum planning remains critical
SSH daemonNoRemote shell access increases attack surface and creates drift pathsDebugging must be API-driven
Package managerNoNode software is delivered through images and extensions, not ad hoc packagesCustom host tools require planned extensions or workload-level tooling
Local users and sudoNoHuman login is not a management modelIdentity moves to Talos client certs and Kubernetes auth
Mutable host configurationSeverely constrainedReproducibility depends on declared machine configGitOps workflows become practical for the OS layer

Because Talos removes familiar tools, the first operational risk is not usually technical failure. It is operator habit. A team under pressure may ask for SSH because they do not yet know the Talos equivalent for logs, process state, disks, network addresses, routes, or service health. The right migration plan includes a troubleshooting translation guide, not only a cluster build script.

Terminal window
# Install talosctl on a workstation that will manage the cluster.
# The install script is convenient for labs; production teams often pin
# versions through their normal workstation management process.
curl -sL https://talos.dev/install | sh
# Verify that the client is available.
talosctl version --client

A production platform should pin tool versions deliberately. The exact Talos version should be selected from the team’s support matrix, tested with the target Kubernetes version, and rolled through environments. In examples in this module, replace image tags and version values with the versions approved by your organization.

The API-first model also affects access control. The talosconfig file is sensitive because it contains client identity material for the Talos API. Treat it like a privileged kubeconfig. Store it in a secure secret manager, avoid putting it in broad developer repositories, rotate it when an operator leaves, and use separate credentials where your access model requires separation.

Stop and think: If a team stores talosconfig next to application manifests in a repository that many developers can read, what new risk did they create? The OS no longer has SSH keys to steal, but the management API still needs client credentials, and those credentials must be governed with the same seriousness as cluster-admin kubeconfigs.


3. Machine Configuration Is The Operating System Contract

Section titled “3. Machine Configuration Is The Operating System Contract”

Talos machine configuration is the declarative contract between your platform intent and the node. It describes how the machine installs, how it joins the cluster, what certificates it trusts, which Kubernetes version and settings it uses, which network configuration it applies, and which extensions it should include. That configuration is not a convenience wrapper around manual setup. It is the primary source of truth for the host.

A good Talos configuration strategy separates what is shared from what is specific. Cluster-wide network ranges, CNI choice, API endpoint, and common kubelet settings belong in shared patches. Control plane settings, etcd behavior, and API server options belong in control plane patches. Worker-specific labels, taints, storage extensions, and node classes belong in worker patches. Environment differences such as disk names, load balancer endpoints, and IP assignments should be handled explicitly rather than hidden in one large file.

CONFIGURATION LAYERING MODEL
+--------------------------------------------------------------+
| Environment patch: production endpoint, disks, node IPs |
+--------------------------------------------------------------+
| Role patch: control plane settings or worker settings |
+--------------------------------------------------------------+
| Shared patch: CNI, kubelet defaults, registry mirrors |
+--------------------------------------------------------------+
| Generated base: cluster secrets, certificates, core defaults |
+--------------------------------------------------------------+
Each layer should be small enough to review and specific enough that
a change explains its blast radius.

The generated base configuration contains sensitive cluster material. Do not treat it like a public example file. If your team uses GitOps for Talos, separate secret material from reviewable policy where possible, encrypt sensitive files with your approved mechanism, and make access decisions explicit. The platform goal is reproducibility, not accidental credential sharing.

Terminal window
# Generate a baseline configuration for a cluster endpoint.
# Replace the endpoint with the stable Kubernetes API endpoint for your design.
talosctl gen config dojo-talos https://10.10.10.10:6443
# The command produces [three important files](https://github.com/siderolabs/docs/blob/main/public/talos/v1.13/getting-started/getting-started.mdx) in the current directory:
# controlplane.yaml
# worker.yaml
# talosconfig
ls -1 controlplane.yaml worker.yaml talosconfig

A patch-oriented workflow is easier to review than repeatedly editing generated files. The base files contain many fields that are not relevant to a particular design decision, so reviewers can miss important changes. Small patches let you ask narrow questions: did we change the CNI, add a registry mirror, enable a kubelet argument, configure a storage extension, or change the install disk?

patches/shared.yaml
machine:
kubelet:
extraArgs:
rotate-server-certificates: "true"
registries:
mirrors:
docker.io:
endpoints:
- https://registry-cache.platform.example.com
cluster:
network:
cni:
name: cilium
patches/controlplane.yaml
machine:
nodeLabels:
node.kubernetes.io/control-plane: ""
nodeTaints:
node-role.kubernetes.io/control-plane:
effect: NoSchedule
cluster:
apiServer:
extraArgs:
audit-log-maxage: "30"
audit-log-maxbackup: "10"
patches/worker-storage.yaml
machine:
install:
extensions:
- image: ghcr.io/siderolabs/iscsi-tools:v0.1.4
- image: ghcr.io/siderolabs/util-linux-tools:2.39.1
Terminal window
# Generate config with explicit patch layering.
talosctl gen config dojo-talos https://10.10.10.10:6443 \
--config-patch @patches/shared.yaml \
--config-patch-control-plane @patches/controlplane.yaml \
--config-patch-worker @patches/worker-storage.yaml

The examples are intentionally small. A common mistake is to create a giant patch named production.yaml that mixes CNI choice, audit policy, disk paths, kubelet flags, registry settings, and node labels. That file becomes hard to review because every line has a different owner and risk profile. A senior platform engineer optimizes configuration for code review, rollback, and incident reasoning.

Configuration DecisionPut It WhereWhy This Placement HelpsReview Question
CNI selectionShared cluster patchAll nodes must agree on cluster networking behaviorDoes the chosen CNI match security and operations needs?
Control plane audit settingsControl plane patchWorkers do not run the API serverDoes audit retention meet compliance and storage limits?
Storage extensionsWorker class patchOnly some workers may need iSCSI, NVMe, or vendor toolsWhich workloads require this node capability?
Install diskEnvironment or node-specific patchDisk names differ across hardware and cloud providersCould this wipe the wrong disk?
Registry mirrorShared or environment patchPull behavior affects every nodeIs the mirror highly available and trusted?
Node labels and taintsRole or node pool patchScheduling intent belongs with node pool designAre workloads and tolerations aligned?

Pause and predict: A team changes the install disk from /dev/sda to /dev/nvme0n1 in a shared patch used by both bare-metal and virtual clusters. What could happen during the next reprovisioning event, and where should that decision live instead? The correct reasoning is not only “the path may be wrong.” The deeper problem is that hardware-specific destructive intent was placed in a broad layer with a larger blast radius than necessary.

Talos also changes how you think about drift. On a mutable Linux node, drift often appears as a package installed during a past incident, a modified config file, or a service changed manually. On Talos, there are fewer places for that drift to hide, but configuration drift can still happen if operators patch live machines without updating the source repository. The API does not magically enforce Git discipline; your workflow must.

A practical control is to require every machine configuration patch to start as a reviewed change, even when the patch is applied manually during an emergency. If the incident requires immediate action, capture the exact command, commit the patch afterward, and compare live state with repository state. The goal is to keep “what the node is” and “what the platform says the node should be” from separating over time.


4. Deployment Flow: From Booted Machine To Cluster

Section titled “4. Deployment Flow: From Booted Machine To Cluster”

A Talos deployment has three phases that are easy to blur together: booting the Talos image, applying machine configuration, and bootstrapping Kubernetes. The machine can boot Talos before it is a member of your cluster. Applying configuration tells the node its role, certificates, endpoint, install disk, and cluster intent. Bootstrapping is a one-time control plane action that initializes etcd and brings the Kubernetes control plane into service.

This distinction helps with troubleshooting. If a node does not answer the Talos API, you are probably dealing with boot, network, or endpoint reachability. If Talos answers but Kubernetes is not healthy, you inspect services, config, CNI, certificates, and control plane state. If Kubernetes is healthy but nodes are not schedulable, you move into normal Kubernetes debugging around taints, CNI readiness, kubelet conditions, and workload scheduling.

TALOS CLUSTER CREATION SEQUENCE
+--------------------+
| Boot Talos image |
| ISO, PXE, AMI, VM |
+--------------------+
|
v
+--------------------+
| Apply machine |
| configuration |
+--------------------+
|
v
+--------------------+
| First control |
| plane bootstrap |
+--------------------+
|
v
+--------------------+
| Join more control |
| planes and workers |
+--------------------+
|
v
+--------------------+
| Install workloads, |
| policies, and ops |
+--------------------+

For a first local learning cluster, Docker is the fastest path because it lets you practice the Talos management model without provisioning hardware. The Docker provider is not a substitute for production testing, but it is excellent for learning commands, observing the absence of shell access, and validating that Kubernetes workloads behave normally on top of Talos.

Terminal window
# Create a local Talos cluster using Docker.
talosctl cluster create \
--name dojo-talos \
--controlplanes 1 \
--workers 2 \
--wait
# Confirm that talosctl knows how to reach the cluster.
talosctl config info
# Fetch kubeconfig for kubectl.
talosctl kubeconfig --force
# Use kubectl normally. We introduce the alias k once here and use it later.
alias k=kubectl
k get nodes -o wide

Production deployments usually replace Docker with bare metal, virtual machines, or cloud instances. Bare metal often uses PXE, an ISO, or an image provisioning system. Cloud deployments often pass Talos machine configuration as instance user data or platform metadata. The important constant is that the node receives declarative configuration before it becomes a trusted cluster member.

Terminal window
# Apply configuration to a newly booted control plane node.
# The --insecure flag is only for the [initial configuration path](https://github.com/siderolabs/docs/blob/main/public/talos/v1.13/configure-your-talos-cluster/system-configuration/insecure.mdx) before
# the node has the final trust material. Do not use it as a normal habit.
talosctl apply-config --insecure \
--nodes 10.10.10.11 \
--file controlplane.yaml
# Point talosctl at the endpoint and node once trust is established.
talosctl --talosconfig ./talosconfig config endpoint 10.10.10.11
talosctl --talosconfig ./talosconfig config node 10.10.10.11
# Bootstrap exactly one initial control plane node.
talosctl --talosconfig ./talosconfig bootstrap \
--nodes 10.10.10.11 \
--endpoints 10.10.10.11
# Retrieve kubeconfig after the control plane is healthy enough to serve it.
talosctl --talosconfig ./talosconfig kubeconfig \
--nodes 10.10.10.11 \
--endpoints 10.10.10.11

The phrase “bootstrap exactly one” deserves attention. In an HA control plane, etcd forms a quorum cluster, but the first member must initialize the cluster. Accidentally running bootstrap in the wrong place or at the wrong time can create confusing failure modes. Treat bootstrap as a controlled operation with a runbook, peer review, and clear evidence that you are targeting the intended first control plane node.

PhasePrimary ToolEvidence To CheckTypical Failure
Boot imageConsole, cloud logs, Talos API reachabilityNode reaches network and exposes Talos APIWrong image, missing NIC driver, bad DHCP or static network
Apply configtalosctl apply-configMachine config accepted and services startWrong disk, wrong endpoint, invalid patch
Bootstraptalosctl bootstrapetcd initializes and API server startsBootstrapping wrong node or repeated bootstrap attempts
Join nodestalosctl apply-config plus health checksNew nodes register with KubernetesCertificate, endpoint, CNI, or network routing issue
Operate clustertalosctl, kubectl, GitOps toolsNodes Ready, workloads scheduled, policies enforcedTreating Talos like SSH-managed Linux

A senior production design also considers the management network. Talos exposes its API on a dedicated port, and that API should not be broadly reachable from every workload, developer laptop, or untrusted network. Restrict it to approved automation, bastion paths, or management networks. The absence of SSH is valuable, but exposing the replacement management API carelessly gives back too much risk.

For cloud deployments, infrastructure as code should create instances, load balancers, security groups, DNS records, and user data in one coherent plan. The Talos provider for Terraform can help generate machine secrets and configuration, but the same design principles apply even if you use another tool. Separate secrets from policy, review destructive disk choices carefully, and make cluster endpoint stability a first-class requirement.

terraform {
required_providers {
talos = {
source = "siderolabs/talos"
version = "~> 0.8"
}
}
}
resource "talos_machine_secrets" "cluster" {}
resource "talos_machine_configuration" "controlplane" {
cluster_name = "dojo-talos"
machine_type = "controlplane"
cluster_endpoint = "https://api.dojo-talos.example.com:6443"
machine_secrets = talos_machine_secrets.cluster.machine_secrets
}
resource "talos_machine_configuration" "worker" {
cluster_name = "dojo-talos"
machine_type = "worker"
cluster_endpoint = "https://api.dojo-talos.example.com:6443"
machine_secrets = talos_machine_secrets.cluster.machine_secrets
}

The Terraform example is intentionally partial because cloud provider resources vary. The teaching point is the dependency structure: machine secrets feed machine configuration, machine configuration reaches instances at boot, and the cluster endpoint must be stable enough for nodes and clients. If any of those dependencies is improvised manually, later rebuilds become harder to trust.


5. Debugging Without SSH: A Worked Example

Section titled “5. Debugging Without SSH: A Worked Example”

The most uncomfortable Talos moment for many operators is the first incident where muscle memory says “SSH to the node.” Talos forces a different question: what evidence did you actually need from SSH? Most host troubleshooting tasks are not really about the shell itself. They are about logs, service status, process state, disk state, network state, container runtime state, or Kubernetes node conditions. Talos exposes those through APIs.

Here is a worked example. A worker node is NotReady after a configuration change that added a new CNI. On a traditional node, an operator might SSH in, check systemctl status kubelet, read logs, inspect routes, and run container runtime commands. On Talos, the sequence is similar in reasoning but different in interface.

Terminal window
# Start with the Kubernetes symptom.
k get nodes -o wide
# Inspect the node condition details from Kubernetes.
k describe node talos-worker-1
# Ask Talos for kubelet logs on the affected node.
talosctl logs kubelet --nodes 10.10.10.21
# Check whether containerd is healthy enough to run pods.
talosctl logs containerd --nodes 10.10.10.21
# Inspect node network state from the Talos API.
talosctl get addresses --nodes 10.10.10.21
talosctl get routes --nodes 10.10.10.21
# Inspect service health and resource pressure.
talosctl health --nodes 10.10.10.21
talosctl stats --nodes 10.10.10.21

Suppose the kubelet log reports that the CNI configuration is not ready, and the node description shows NetworkPluginNotReady. That evidence tells you the problem is not a missing shell, and it is not solved by editing a host file manually. The likely root cause is a CNI installation or configuration mismatch. You then inspect the CNI pods, their logs, and the cluster network configuration rather than reaching for host mutation.

Terminal window
# Inspect CNI pods and their rollout state.
k get pods -A -o wide | grep -E 'cilium|flannel|calico'
# Example for Cilium. Adjust namespace and labels for your CNI.
k -n kube-system get pods -l k8s-app=cilium -o wide
k -n kube-system logs -l k8s-app=cilium --tail=100
# Check whether the node is tainted due to network unavailability.
k describe node talos-worker-1 | grep -A5 -E 'Taints|Conditions'

The worked example demonstrates a general pattern: start with the user-visible Kubernetes symptom, gather host evidence through Talos, then return to the correct control plane or workload layer. Talos does not remove troubleshooting; it removes undocumented host changes as a troubleshooting technique. That is usually a good trade once the team knows the evidence paths.

SymptomFirst Talos EvidenceFirst Kubernetes EvidenceLikely Next Move
Node is NotReadytalosctl logs kubelet, talosctl healthk describe nodeIdentify kubelet, CNI, certificate, or pressure condition
Pods cannot pull imagestalosctl logs containerdk describe pod, image pull eventsCheck registry mirror, credentials, egress, and image names
Control plane unstabletalosctl logs etcd, talosctl logs kubeletk get --raw='/readyz?verbose'Check etcd quorum, API server health, and node resources
Disk pressuretalosctl disks, talosctl statsNode conditions and eviction eventsReview image garbage collection and workload ephemeral storage
Network route missingtalosctl get routes, talosctl get addressesCNI pod logs and node conditionsFix machine network config or CNI configuration
Unexpected process loadtalosctl processes, talosctl statsWorkload metrics and pod placementTrace workload source before changing host settings

The table is also a decision guard. If the evidence says the CNI is broken, adding random host tools would not be a durable fix. If the evidence says registry pulls fail, logging into the node to run curl would only prove one moment in time. A better Talos-native runbook checks containerd logs, registry mirror configuration, network policy, DNS, and image pull secrets.

Stop and think: A teammate asks to add a debugging extension with many network tools to every production node because a single incident was hard to diagnose. How would you evaluate that request? A senior answer balances evidence and blast radius: add narrow tooling only when it solves repeated, well-defined diagnostic gaps, prefer ephemeral debug workloads where possible, and avoid turning Talos back into a general-purpose host by accumulation.

Talos does support system extensions for cases where the host genuinely needs more capability, such as storage tools, GPU support, or specific hardware integration. The key is that extensions are planned into the image or install configuration. They are not installed during a frantic SSH session. That makes them reviewable, reproducible, and testable across environments.

patches/worker-iscsi.yaml
machine:
install:
extensions:
- image: ghcr.io/siderolabs/iscsi-tools:v0.1.4
Terminal window
# Apply a reviewed configuration patch to a worker node.
talosctl patch machineconfig \
--nodes 10.10.10.21 \
--patch @patches/worker-iscsi.yaml
# Reboot may be required depending on the extension and install path.
talosctl reboot --nodes 10.10.10.21

When you patch machine configuration, read the command output and plan the rollout. Some changes are immediate, some require reboot, and some are disruptive if applied broadly. Treat OS configuration like cluster configuration: stage it, apply it to a small set first, observe, then widen the rollout.


6. Day-2 Operations: Upgrades, Backups, And Safe Change

Section titled “6. Day-2 Operations: Upgrades, Backups, And Safe Change”

Day-2 Talos work is where the design either pays off or frustrates the team. Because the OS is immutable and API-managed, upgrades are image-based rather than package-by-package. That removes many dependency problems, but it does not remove the need for sequencing, health checks, maintenance windows, rollback thinking, and workload disruption planning.

Talos OS upgrades and Kubernetes upgrades are related but separate operations. Upgrading Talos changes the node operating system image and Talos components. Upgrading Kubernetes changes the control plane and node Kubernetes components. Treat them as separate changes unless the release notes and your test plan justify combining them. Smaller changes produce clearer failure signals.

Terminal window
# Inspect Talos and Kubernetes versions before planning.
talosctl version
k version
k get nodes -o wide

A conservative production upgrade starts with release notes, compatibility checks, a staging cluster, and a written order of operations. Control plane nodes usually roll one at a time while maintaining etcd quorum. Workers can often roll in batches, but PodDisruptionBudgets, workload topology spread, storage attachment, and node pool capacity should determine the batch size. “Can reboot” is not the same as “can reboot without user impact.”

Terminal window
# Upgrade one Talos node at a time with an approved installer image.
talosctl upgrade \
--nodes 10.10.10.21 \
--image ghcr.io/siderolabs/installer:v1.11.0
# Watch logs while the node transitions.
talosctl dmesg --follow --nodes 10.10.10.21
# Verify the node returns and workloads recover.
k get nodes -o wide
k get pods -A -o wide
Terminal window
# Upgrade Kubernetes through Talos after compatibility validation.
# Replace the version with the one approved in your test matrix.
talosctl upgrade-k8s \
--nodes 10.10.10.11 \
--to 1.35.0
# Confirm control plane and node versions.
k get nodes
k version

The command examples are short, but the operational plan around them should not be. A mature platform team defines pre-checks, health gates, abort criteria, and post-checks. For example, do not roll the next control plane node until etcd is healthy and the API server readiness endpoint is clean. Do not roll worker batches if disruption budgets are exhausted or critical workloads have too few replicas.

Change TypeSuggested ScopePre-CheckAbort SignalPost-Check
Machine config patchOne node or one node pool firstDiff patch and confirm reboot requirementNode fails health or workload disruption exceeds planLive config matches repository intent
Talos OS upgradeOne control plane, then remaining control planes, then workersCompatibility, backups, capacity, release notesNode does not return healthy or etcd loses safety marginVersions updated and workloads stable
Kubernetes upgradeControl plane through Talos workflow, then nodesSkew policy, add-on compatibility, API deprecationsReadiness failures or add-on incompatibilityAPI healthy and nodes Ready
CNI changeUsually a dedicated migration projectMigration guide, test cluster, rollback planNode networking becomes inconsistentPods communicate according to policy
Extension additionSmall worker class firstNeed proven and image source trustedReboot loop or driver conflictRequired device or capability visible
Certificate rotationControlled maintenance workflowAccess path validated and backups availableOperators lose management accessNew credentials work and old ones retired

Backups require the same seriousness as upgrades. Talos makes it convenient to manage etcd snapshots, but convenience is not a backup strategy by itself. A backup strategy includes where snapshots are stored, how they are protected, how often restore is tested, who can access them, and how the team decides between restoring etcd and rebuilding from GitOps state.

Terminal window
# Create an etcd snapshot from a control plane node.
talosctl etcd snapshot db.snapshot \
--nodes 10.10.10.11 \
--endpoints 10.10.10.11
# Verify that the snapshot file exists locally.
ls -lh db.snapshot

If your GitOps system can recreate most Kubernetes objects, etcd restore may still be necessary for state that is not easily reconstructed, such as certain secrets, leases, or resources whose external systems depend on continuity. The decision is contextual. What matters is that you test the restore path before you need it, because an untested backup is only an optimistic artifact.

Day-2 operations should also include credential rotation. Talos client credentials, Kubernetes administrator credentials, cloud instance identities, registry credentials, and GitOps deploy keys all participate in the platform trust chain. Talos removes SSH keys from the node, but it does not remove the need for identity lifecycle management around the systems that manage the node.

A final operational concern is observability. Talos can expose logs and state through its API, but your production monitoring should not depend on an engineer manually running talosctl dashboard during every incident. Integrate node conditions, Kubernetes metrics, CNI metrics, control plane health, etcd metrics, and runtime security events into your normal observability stack. Talos changes host access; it should not create a blind spot.


7. Security Evaluation: What Talos Solves And What It Does Not

Section titled “7. Security Evaluation: What Talos Solves And What It Does Not”

Talos is often described as secure by default, but senior engineers should translate that phrase into specific claims. Talos reduces host attack surface by removing services and tools. It improves reproducibility by making configuration declarative. It reduces drift by limiting mutable host state. It strengthens operational auditability by pushing management through an API. Those are meaningful controls.

Talos does not automatically make a permissive Kubernetes cluster safe. If every developer has cluster-admin, if privileged pods are allowed broadly, if secrets are mounted everywhere, if workloads can egress freely, and if admission policy is absent, the cluster still has serious risk. Talos changes the blast radius after certain host-oriented attacks, but it should sit inside a broader defense-in-depth program.

DEFENSE-IN-DEPTH WITH TALOS
+--------------------------------------------------------------+
| Identity: least privilege, MFA, short-lived credentials |
+--------------------------------------------------------------+
| Admission: Pod Security, policy, image provenance |
+--------------------------------------------------------------+
| Runtime: detection, workload isolation, network policy |
+--------------------------------------------------------------+
| Kubernetes operations: audit logs, backups, upgrades |
+--------------------------------------------------------------+
| Talos OS: no SSH, no shell, immutable image, API management |
+--------------------------------------------------------------+
| Infrastructure: network segmentation, cloud IAM, hardware |
+--------------------------------------------------------------+

A useful exercise is to evaluate an attack path, not only a product feature. Imagine an attacker obtains credentials that allow pod creation in one namespace. If Pod Security Admission prevents privileged pods and hostPath mounts, the attack may stop at admission. If admission is weak but Talos is used, the attacker may still schedule a dangerous pod but find fewer host-level tools. If network egress is controlled, the attacker may have difficulty downloading payloads or exfiltrating data. If runtime detection is active, the attack may be detected before it spreads.

Security QuestionTalos ContributionStill Needed Outside Talos
Can attackers SSH into nodes?Removes SSH daemon and local login modelProtect Talos API credentials and management network
Can attackers install host packages?Removes package manager and mutable package workflowControl container images and workload egress
Can attackers persist with host cron or systemd?Removes traditional host persistence mechanismsAudit Kubernetes objects and GitOps changes
Can attackers create privileged pods?Does not decide Kubernetes admission by itselfPod Security Admission, policy engines, RBAC
Can attackers steal Kubernetes secrets?Does not remove Kubernetes secret riskSecret management, RBAC, encryption, workload identity
Can attackers abuse cloud permissions?Does not govern cloud IAM by itselfLeast-privilege instance roles and workload identity
Can responders investigate quickly?Provides API logs, stats, service state, and process viewsRunbooks, centralized logs, metrics, and practice

This is the balanced conclusion reviewers should expect: Talos is a strong node operating system choice for Kubernetes-only environments, but it is not a magic security boundary around the entire platform. It is most effective when paired with policy, identity, network segmentation, runtime detection, and disciplined operations.

The main trade-off is flexibility. Traditional Linux nodes let operators install a vendor agent, run an emergency binary, patch a file, or test a command directly on the host. Talos makes those actions harder by design. That is beneficial when the actions would create drift or attack surface, but painful when your organization has not adapted vendor requirements, monitoring practices, or debugging runbooks.

ApproachStrengthWeaknessBest Fit
Talos LinuxMinimal Kubernetes-only OS with API management and no SSHSteeper operational shift and less host customizationSecurity-focused Kubernetes platforms with strong automation
Flatcar Container LinuxContainer-oriented immutable OS with more familiar host access optionsLarger host surface and more traditional operationsTeams needing container hosts with some Linux flexibility
BottlerocketPurpose-built container OS with strong cloud integration, especially in AWS contextsCloud and ecosystem fit may shape choicesAWS-heavy teams wanting managed minimal hosts
Ubuntu Pro or similar enterprise LinuxFamiliar tooling, broad vendor support, general-purpose flexibilityLarger patch surface and more drift pathsMixed workloads, strict vendor requirements, or legacy operations
Managed Kubernetes node imagesProvider handles much of node lifecycleLess control and provider-specific constraintsTeams prioritizing operational simplicity over OS ownership

A senior platform recommendation should name the trade-off explicitly. “Use Talos because it is more secure” is too vague. A better recommendation says: “Use Talos for Kubernetes-only node pools where the team can manage nodes through declarative configuration, restrict Talos API access, replace SSH-based runbooks, and validate required drivers through extensions. Do not use it for node pools that depend on arbitrary host agents installed after boot.”


  • Talos manages the host through an API rather than SSH. That design means operators, automation, and incident responders use the same management path, which makes access control and runbook behavior easier to standardize.

  • Talos machine configuration is part of the platform contract. A small patch can change node identity, Kubernetes behavior, registry mirrors, network settings, install disks, extensions, and security posture, so configuration review is an operational control.

  • Removing host tools reduces attacker options but not Kubernetes responsibility. A privileged pod is still a serious event, even if Talos removes many host persistence and lateral movement techniques that work on conventional Linux.

  • Immutable infrastructure still needs tested recovery. Image-based upgrades and declarative configuration help, but etcd snapshots, credential rotation, management API access, and rebuild procedures must be practiced before an incident.


MistakeWhy It Causes ProblemsBetter Approach
Treating missing SSH as a temporary inconvenienceThe team keeps writing runbooks that cannot work on Talos and panics during incidentsTranslate each SSH habit into talosctl, Kubernetes, metrics, or GitOps evidence before production
Putting all configuration into one large patchReviewers cannot see blast radius, and hardware-specific settings may leak across environmentsLayer shared, role-specific, node-pool, and environment patches deliberately
Assuming Talos blocks privileged pod risk completelyTalos reduces host usefulness but does not stop Kubernetes from admitting dangerous podsEnforce Pod Security Admission, RBAC, policy, and runtime detection
Exposing the Talos API broadlyThe replacement management path becomes reachable from places that should not administer nodesRestrict port 50000 to trusted management networks and automation identities
Applying live patches without updating GitThe cluster drifts from the declared source of truth even though the OS is immutableCommit reviewed patches and reconcile live state with repository state after emergencies
Combining OS, Kubernetes, CNI, and policy changesFailures become hard to diagnose because many layers changed simultaneouslyChange one layer at a time unless a tested migration plan requires coordination
Skipping etcd restore practiceSnapshots exist but the team cannot recover confidently during a control plane failureSchedule restore drills and document decision criteria for restore versus rebuild
Adding broad debug extensions everywhereThe platform slowly recreates the general-purpose host surface Talos removedAdd narrow extensions only for proven needs and prefer workload-level diagnostics when possible

Your organization is considering Talos for a regulated payment platform. The security team likes the absence of SSH, but the operations team says their current incident runbooks all begin with “SSH to the node.” What should you recommend before approving a production migration?

Show Answer

Recommend a runbook translation and rehearsal phase before production. The team should map each SSH-based action to talosctl, Kubernetes, centralized logs, metrics, or a GitOps change. For example, systemctl status kubelet becomes talosctl logs kubelet plus Talos service health, network inspection becomes talosctl get addresses and talosctl get routes, and workload checks remain normal kubectl workflows.

The migration is not only an OS replacement. It changes the operating model. A senior recommendation would require training, access-control design for talosconfig, management network restrictions, staging incident drills, and proof that required vendor agents or drivers can be handled through supported extensions or alternative architecture.

A developer with namespace-admin access deploys a privileged pod with a hostPath mount on a Talos worker. The pod starts successfully. They cannot find /bin/bash, apt, SSH keys, cron, or writable host configuration. What should the platform team conclude from this event?

Show Answer

The team should conclude that Talos reduced host-level follow-on options, but Kubernetes policy still failed to prevent a dangerous pod. The absence of host tools is useful defense in depth, but a privileged pod with hostPath is still a serious security event because it can inspect host state, interfere with workloads, and attempt kernel or runtime abuse.

The corrective action should include tightening RBAC, enabling or enforcing Pod Security Admission, adding policy controls for hostPath and privileged containers, reviewing audit logs, rotating potentially exposed credentials, and checking runtime detection. Talos helped contain the host pivot, but admission should have stopped the pod earlier.

A worker node becomes NotReady after a CNI migration. A teammate asks for temporary SSH access because “we need to see what is wrong on the box.” Which evidence path should you use first, and why?

Show Answer

Start with Kubernetes node conditions and Talos API evidence. Use kubectl describe node to inspect conditions and events, talosctl logs kubelet to see kubelet reports, talosctl logs containerd to check runtime behavior, and talosctl get addresses plus talosctl get routes to inspect network state. Then inspect CNI pods and logs in kube-system.

This path matches the likely failure layer. A CNI migration failure usually appears through node conditions, CNI daemon logs, kubelet network readiness, routes, and pod scheduling behavior. SSH would be a habit, not a requirement, and enabling it would undermine the Talos management model.

Your team wants one production.yaml Talos patch containing install disks, registry mirrors, API server audit settings, storage extensions, node labels, and CNI selection. During review, what design problem should you point out?

Show Answer

The patch mixes decisions with different owners, lifetimes, and blast radii. Install disks may be hardware-specific and destructive. Registry mirrors are shared environment behavior. Audit settings affect only control plane nodes. Storage extensions may apply only to certain worker pools. CNI selection affects the whole cluster and usually deserves careful migration planning.

A better design layers patches by intent: shared cluster settings, control plane settings, worker class settings, and environment or node-specific settings. That makes review easier, reduces accidental reuse, and helps responders understand which change could have caused a failure.

A Talos control plane upgrade succeeds on the first node, but before upgrading the second node, kubectl get nodes shows the first node Ready while the API readiness endpoint intermittently fails and etcd logs show leader instability. What should you do next?

Show Answer

Stop the rollout and investigate before touching another control plane node. Control plane upgrades must preserve etcd quorum and API stability. Rolling the next node while the cluster is already unstable could convert a recoverable issue into a control plane outage.

The next checks should include talosctl logs etcd, talosctl logs kubelet, API readiness details, etcd member health, node resource pressure, and network connectivity between control plane nodes. Continue only after health is stable and the abort condition is cleared.

A storage team asks to install iSCSI tools manually on every Talos worker after boot because one workload class needs them. How should you reshape that request into a Talos-compatible design?

Show Answer

Do not install tools manually after boot. Talos has no package manager by design, and manual installation would conflict with the immutable, reproducible model. Instead, identify the smallest worker pool that needs the capability, add the supported system extension through a reviewed machine configuration patch, test it in staging, and roll it only to the affected node class.

The design should also include scheduling labels or taints so workloads needing iSCSI land on nodes that have the extension. That keeps the host capability intentional, reviewable, and limited to the workloads that actually require it.

An auditor asks how your team proves Talos nodes have not been manually changed during incidents. What evidence and process would you present?

Show Answer

Present the declarative machine configuration repository, review history for patches, restricted Talos API access, and a process for comparing live machine configuration against the approved source of truth. Also show incident procedures requiring emergency patches to be recorded and committed after the immediate response.

The strongest answer combines technology and workflow. Talos limits manual host mutation, but drift can still happen if operators patch live state without updating Git. The audit story should show that changes flow through review, credentials are controlled, and live state is reconciled with declared intent.

A platform lead says Talos will let the team stop investing in runtime security because attackers cannot SSH into nodes. How would you respond?

Show Answer

That conclusion is too broad. Talos removes SSH and many host-level attacker tools, but runtime security still detects suspicious workload behavior, credential abuse, cryptomining, unexpected network connections, and attempts to exploit the kernel or container runtime. Kubernetes compromise can still happen above the OS layer.

A senior response would position Talos as one layer in defense in depth. Keep runtime detection, admission policy, RBAC, network policy, audit logging, and secret controls. Talos reduces host attack surface; it does not replace monitoring and policy for Kubernetes workloads.


Task: Build A Local Talos Cluster And Practice API-Only Operations

Section titled “Task: Build A Local Talos Cluster And Practice API-Only Operations”

In this exercise, you will create a local Talos cluster with Docker, verify that Kubernetes works normally, attempt host-oriented inspection from a privileged pod, and practice the API-driven commands that replace SSH-based node administration. The goal is not to perform a real attack. The goal is to connect the security model from the lesson to observable behavior in a disposable lab.

Run this lab on a workstation where Docker, talosctl, and kubectl are available. The lab creates local containers and modifies your current kubeconfig when you request kubeconfig from Talos. Use a temporary directory so generated files are easy to remove. If you already use important local clusters, check your current context before and after the exercise.

Terminal window
mkdir -p talos-dojo-lab
cd talos-dojo-lab
talosctl version --client
kubectl version --client
talosctl cluster create \
--name dojo-security \
--controlplanes 1 \
--workers 1 \
--wait
Terminal window
talosctl config info
talosctl kubeconfig --force
alias k=kubectl
k config current-context
k get nodes -o wide

Start by collecting the same categories of evidence you would normally gather through SSH. You are checking whether the node is healthy, which services are producing logs, how the machine sees addresses and routes, and what processes are running. Notice that none of these commands require a remote shell.

Terminal window
talosctl health
talosctl logs kubelet --tail=30
talosctl logs containerd --tail=30
talosctl get addresses
talosctl get routes
talosctl processes
talosctl stats

After running the commands, write a short note for yourself that maps each command to the traditional Linux habit it replaces. For example, talosctl logs kubelet replaces a common journalctl -u kubelet check, while talosctl processes replaces part of what operators often use ps or top to inspect.

Now verify that Talos does not change the everyday Kubernetes workflow for normal workloads. You still deploy pods, inspect events, wait for readiness, and read application logs through Kubernetes. The node OS is different, but the Kubernetes API remains the developer-facing interface.

Terminal window
k create deployment hello-talos \
--image=nginx:1.27 \
--replicas=2
k rollout status deployment/hello-talos
k get pods -o wide
k logs deployment/hello-talos --tail=10

Step 3: Attempt Host-Oriented Inspection From A Privileged Pod

Section titled “Step 3: Attempt Host-Oriented Inspection From A Privileged Pod”

This step demonstrates why admission policy still matters. You will create a privileged pod that mounts the host filesystem. On a real production cluster, strong admission controls should prevent this unless there is a tightly justified exception. In this lab, the pod helps you observe how much less useful the host is compared with a conventional Linux node.

Terminal window
cat <<'EOF' | k apply -f -
apiVersion: v1
kind: Pod
metadata:
name: host-inspection
spec:
restartPolicy: Never
hostPID: true
hostNetwork: true
containers:
- name: inspector
image: alpine:3.20
command:
- sleep
- "3600"
securityContext:
privileged: true
volumeMounts:
- name: host
mountPath: /host
readOnly: true
volumes:
- name: host
hostPath:
path: /
EOF
k wait --for=condition=Ready pod/host-inspection --timeout=120s
Terminal window
k exec host-inspection -- sh -c '
echo "Checking for common host shells"
ls -l /host/bin/sh /host/bin/bash /host/usr/bin/bash 2>/dev/null || true
echo "Checking for package managers"
ls -l /host/usr/bin/apt /host/usr/bin/yum /host/usr/bin/dnf 2>/dev/null || true
echo "Checking for SSH material"
ls -la /host/root/.ssh 2>/dev/null || true
echo "Checking selected host directories"
ls -la /host 2>/dev/null | head -30
'

The expected learning is not that privileged pods are safe. The expected learning is that a host-oriented attack path has fewer useful next steps on Talos. In a production review, this pod should trigger a policy discussion: why was it admitted, which namespace allowed it, which RBAC permission enabled it, and which monitoring system would alert on it?

Step 4: Practice A Talos-Native Debugging Loop

Section titled “Step 4: Practice A Talos-Native Debugging Loop”

Create a small failure by requesting an image that does not exist. Then debug it from the Kubernetes layer and the Talos layer. This simulates the normal movement between workload symptoms and node/runtime evidence.

Terminal window
cat <<'EOF' | k apply -f -
apiVersion: v1
kind: Pod
metadata:
name: broken-image
spec:
containers:
- name: app
image: registry.example.invalid/dojo/missing:1.0
command:
- sleep
- "60"
EOF
k get pod broken-image
k describe pod broken-image | sed -n '/Events:/,$p'
talosctl logs containerd --tail=80

The Kubernetes event should show image pull failure. The container runtime logs may show related pull attempts or resolver errors. The important reasoning step is that you did not need host login to identify the failure class. You used Kubernetes events for the workload symptom and Talos logs for runtime evidence.

Clean up the Kubernetes objects first, then destroy the local Talos cluster. This order mirrors production discipline: remove test workloads before removing the underlying environment, and verify that commands target the intended context.

Terminal window
k delete pod broken-image --ignore-not-found=true
k delete pod host-inspection --ignore-not-found=true
k delete deployment hello-talos --ignore-not-found=true
talosctl cluster destroy --name dojo-security
  • You created a local Talos cluster and confirmed that Kubernetes nodes became Ready.
  • You used talosctl to inspect logs, health, routes, addresses, processes, and resource stats without SSH.
  • You deployed a normal Kubernetes workload and verified that standard kubectl workflows still work.
  • You created a privileged hostPath lab pod and explained why Talos reduces host-level usefulness but does not make privileged pods acceptable.
  • You debugged an image pull failure using Kubernetes events and Talos container runtime logs.
  • You destroyed the local cluster and removed lab workloads cleanly.

Write three sentences after completing the lab. First, name one SSH habit you can replace with a Talos API command. Second, name one risk Talos reduced during the privileged pod test. Third, name one Kubernetes policy that would still be required before you trusted this pattern in production.


Module 14.5: OpenShift — evaluate an enterprise Kubernetes platform that takes a different approach: integrated distribution, opinionated platform services, and a larger managed surface rather than a minimal node operating system.

  • github.com: talos — The Talos README directly states API-only management, no shell or interactive console, and mTLS-secured API access.
  • github.com: philosophy.mdx — The Talos philosophy documentation states that Talos has no shell, SSH, GNU utilities, or packages and is API-driven.
  • github.com: talos security checklist.mdx — The Talos security checklist explicitly says Talos secures the OS while Kubernetes still needs pod security controls, network policies, and monitoring.
  • kubernetes.io: pod security standards — The Kubernetes Pod Security Standards document defines privileged policy as unrestricted and lists hostPath, host namespaces, and privilege escalation controls.
  • github.com: components.mdx — The Talos components documentation describes machined as the init replacement and states that it handles machine configuration, API handling, resources, and controllers.
  • github.com: talos network connectivity.mdx — The Talos network connectivity documentation lists TCP inbound port 50000 for apid.
  • github.com: faqs.mdx — The Talos FAQ states that talosconfig contains client credentials to access the Talos Linux API.
  • github.com: overview.mdx — The configuration reference directly defines Talos machine configuration and how Talos parses and merges documents.
  • github.com: getting started.mdx — The getting started guide lists the three generated files and their purposes.
  • github.com: patching.mdx — The patching guide documents configuration patching and strategic merge patch behavior.
  • github.com: quickstart.mdx — The Talos quickstart is explicitly a local Docker cluster guide and shows talosctl cluster create.
  • github.com: acquire.mdx — The acquiring machine configuration guide lists platform metadata and nocloud user-data as configuration sources.
  • github.com: insecure.mdx — The Talos insecure-flag guide explains maintenance mode, mTLS behavior, and that —insecure should stop after machine config is applied.
  • github.com: prodnotes.mdx — The production notes explicitly instruct users to run bootstrap once on one control plane node.
  • github.com: machine configuration.md — The provider documentation shows talos_machine_configuration using talos_machine_secrets to generate machine configuration.
  • github.com: talos for linux admins.mdx — The Talos for Linux admins guide maps familiar Linux inspection tasks to talosctl/API commands.
  • github.com: system extensions.mdx — The system extensions guide states that extensions are activated during installation or upgrade and remain part of an immutable root filesystem.
  • github.com: upgrading talos.mdx — The Talos upgrade guide states that OS upgrades are API calls using installer images and that Kubernetes upgrades are separate.
  • github.com: upgrading kubernetes.mdx — The Talos Kubernetes upgrade guide documents the upgrade-k8s command and its phases.
  • kubernetes.io: configure upgrade etcd — The Kubernetes etcd operations documentation states that periodic etcd backups are important for disaster recovery.
  • github.com: etcd maintenance.mdx — The Talos etcd maintenance documentation covers snapshot and restore workflows.
  • kubernetes.io: disruptions — Kubernetes disruption documentation explains voluntary disruptions, eviction, and PodDisruptionBudgets as controls around node maintenance.
  • kubernetes.io: rbac — The RBAC documentation identifies cluster-admin as a super-user role and defines RBAC as Kubernetes authorization control.
  • kubernetes.io: secrets good practices — The Kubernetes Secrets good practices page recommends least-privilege access controls for Secret objects.
  • github.com: Flatcar — The Flatcar GitHub project description directly describes Flatcar as an open-source, minimal-footprint, secure-by-default distribution for containers at scale.
  • aws.amazon.com: bottlerocket — The AWS Bottlerocket page directly describes Bottlerocket as Linux-based, open-source, and purpose-built for containers.