Repository navigation
v1.15.0-alpha.1 #14626
shanduur
announced in
Announcements
v1.15.0-alpha.1
#14626
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Talos 1.15.0-alpha.1 (2026-10-13)
Welcome to the v1.15.0-alpha.1 release of Talos!
This is a pre-release of Talos
Please try out the release binaries and report any issues at
https://github.com/siderolabs/talos/issues.
Boot Partition Wait
Talos now waits for the partition it was booted from to be discovered before declaring the system volumes (
META,STATE) missingand entering maintenance mode, so that disks enumerated late (SD cards, USB, some RAID controllers) are not mistaken for a fresh machine.
On UEFI systems booted via
systemd-bootthe boot partition comes from theLoaderDevicePartUUIDEFI variable, while the GRUB configurationnow passes the
talos.boot.partuuid=<UUID>kernel argument (probed by GRUB at boot). The detected boot partition is published as thebootpartitionresource.containerd Configuration Version 4
Talos now generates
containerdconfiguration withversion = 4(previouslyversion = 3).containerdonly migrates configuration from older versions, so any custom CRI configuration provided viaCRICustomizationConfigdocuments (or shipped by system extensions) is now interpreted as version 4, and settingswhich moved in version 4 are silently ignored (only a
Ignoring unknown key in TOMLwarning is logged bycontainerd).In version 4, the top-level server sections moved into plugin configuration blocks, so the following patches need to be adjusted:
[metrics]address[plugins."io.containerd.server.v1.metrics"]address[metrics]grpc_histogram[plugins."io.containerd.metrics.v1.grpc-prometheus"]grpc_histogram[grpc]address,uid,gid,max_recv_message_size,max_send_message_size[plugins."io.containerd.server.v1.grpc"](same keys)[grpc]tcp_address,tcp_tls_ca,tcp_tls_cert,tcp_tls_key,tcp_tls_common_name[plugins."io.containerd.server.v1.grpc-tcp"]address,tls_ca,tls_cert,tls_key,tls_common_name[ttrpc]address,uid,gid[plugins."io.containerd.server.v1.ttrpc"](same keys)[debug]address,uid,gid[plugins."io.containerd.server.v1.debug"](same keys)For example, the
containerdmetrics customization documented for previous versions of Talos:should now be written as:
Note that
[debug]level,formatandlog_trace_idstay at the top level, and that thettrpcaddress is no longerderived from the
grpcaddress: if thegrpcaddress is customized, thettrpcplugin address has to be set explicitly.Unified --namespace Flag
talosctl containers,logs,statsandrestartnow select the containerd namespace through the same--namespaceflag and vocabulary already used bytalosctl imageandtalosctl debug:system(the default),crifor Kubernetes workloads, andtaloscontainersfor containers declared via aContainerConfigdocument.The
--kubernetes/-kflag is deprecated in favor of--namespace cri.talosctl image listalso supports--namespace taloscontainers, to inspect images pulled forContainerConfigcontainers.talosctl debugdoes not support thetaloscontainersnamespace.CPU Scaling Configuration
CPU frequency scaling can now be configured declaratively with the
CPUScalingConfigdocument, instead of through kernel argumentsor raw
SysfsConfigkeys:Settings apply to the cpufreq policies matched by the selector, which targets cores by property rather than by index, so a machine
whose cores are not uniform can be configured without hardcoding how many it has:
The selector matches against the fields of the
CPUScalingStatusresource, and may also setenergyPerformancePreference,minFrequencyKhzandmaxFrequencyKhz. Where several documents match the same policy, the one whose name sorts first wins, and thedocument which claimed a policy is reported on the resulting
CPUScalingSpecresource. Removing the configuration restores thevalues the machine booted with.
Setting a cpufreq attribute through both
CPUScalingConfigandSysfsConfigis rejected, as the two would otherwise overwrite eachother continuously.
Disk SMART Status
Talos can now collect SMART (Self-Monitoring, Analysis and Reporting Technology) health information from disks,
exposed via the new
SMARTStatusresource (one per disk, keyed by the disk device name).Collection is controlled by the presence of the new
DiskSMARTConfigdocument: while the document is part ofthe machine configuration SMART status is collected, and removing the document disables collection (any
SMARTStatusresources already produced are removed as well). There is noenabledfield.talosctl gen configandtalosctl cluster createemit this document by default, so SMART status collectionis enabled by default for machine configurations generated by Talos 1.15. Clusters upgraded from an earlier
version keep their existing machine configuration, which carries no
DiskSMARTConfigdocument, so SMARTstatus collection stays off there until the document is added.
Rotational disks are never spun up just to be probed: a disk in standby is detected via ATA
CHECK POWER MODEand its SMART data is left untouched until it is active again.To retrieve SMART statuses:
The resource reports an overall health verdict, temperature, power-on hours and power cycles, NVMe wear
indicators (percent used, available spare, critical warning, media errors) and, for ATA/SATA disks, the raw
SMART attribute table with per-attribute thresholds.
Disk Free
A new
talosctl diskfreecommand (aliased todf) reports storage and inode usage for mounted volumes.Extension Service Configuration
ExtensionServiceConfigis supported only for extension services whose service manifest explicitly declares a configuration dependency:Using
ExtensionServiceConfigwith a service that does not declare this dependency is unsupported and has undefined startup behavior.The service might start before its configuration is rendered, leaving config files or environment variables unavailable until a later service restart.
Extension authors must declare the dependency before documenting
ExtensionServiceConfigsupport.talosctl gen removed subcommands
The following
talosctl gensubcommands have been removed:talosctl gen catalosctl gen crttalosctl gen csrtalosctl gen keytalosctl gen keypairThese commands where historically used to generate pieces of Talos PKI, but they are no longer needed
as
talosctl gen configandtalosctl gen secretsnow generate all required PKI material automatically.Blank Virtual Machine Disks
A virtual machine disk can now be provisioned as an empty volume in a storage pool, rather than only
as a CD-ROM attached from a content library:
The pool must be declared by a
StoragePooldocument in the same machine configuration; a disknaming an undeclared pool is now a configuration error rather than a virtual machine that silently
never starts.
Four behaviours are worth knowing before you rely on this:
machine and the disk, so removing the disk from the configuration leaves the data in place, and
re-declaring the same virtual machine and disk names in the same pool reattaches it. Reclaiming
the space is a deliberate, out-of-band act.
talosctl get storagepoolvolumestatuseslistsmanaged volumes, not retained orphan files: their statuses disappear when their requests and
consumers are gone. Inspect the pool's backing directory to discover retained files before
reclaiming space; confirm a file is no longer in use before deleting it.
sizegrows the volume the next time no virtual machine has it open,because growing one underneath a running guest corrupts qcow2 metadata and is invisible to the
guest for raw. The pending growth is reported on the volume's status.
sizeis reported and ignored. Shrinking would truncate a filesystem the guest laidout, so it is refused rather than applied; the disk stays attachable and the virtual machine keeps
running.
StoragePooldocument. Removing areferenced pool alone is rejected by configuration validation. Remove or update every virtual
machine referencing it in the same configuration change. During teardown, consumers release
the pool before it is undefined and its backing directory can be unmounted. The volume files
survive.
Provisioning a disk from a content library image is not implemented yet;
provision.fromImageisstill only supported on a
cdrom.Ignore Ctrl-Alt-Delete
Setting
ignoreCtrlAltDelete: truein theSecurityProfileConfigdocument makes Talos log and ignore Ctrl-Alt-Delete instead of rebooting the machine.Ctrl-Alt-Delete still reboots the machine until a configuration with this option is applied.
IPVS Support
Following Kubernetes deprecation of IPVS support (
kube-proxy), Talos Linux now ships IPVS as kernel modules which are not loaded by default.If you require IPVS support, you can enable it by loading the following kernel modules:
ip_vs(core)ip_vs_rr,ip_vs_wrr,ip_vs_lc,ip_vs_shorip_vs_mh(scheduling algorithms)xt_ipvs(nftables/iptables match)Kernel Log Extra Tags
The
KmsgLogConfigdocument now supports anextraTagsfield which attaches additional key-value pairsto every kernel log message sent to that destination:
Tags are scoped to the destination they are configured on, so different endpoints can receive different tags.
The keys
facility,seq,clock,priority,msg,talos-timeandtalos-levelare reserved and rejected,as they are set by Talos itself.
Kubelet Image GC Thresholds
Talos now defaults kubelet
imageGCHighThresholdPercentto 75 andimageGCLowThresholdPercentto 65 (upstream defaults are 85 and 80).The upstream image GC high threshold matches the default
imagefs.available<15%hard eviction threshold, so the node was putinto
DiskPressure(and tainted forevictionPressureTransitionPeriod) before image GC had a chance to run.The defaults are applied only if neither of the thresholds is set in
machine.kubelet.extraConfig.On upgrade, nodes with disk usage above 75% will garbage collect unused images.
Kubelet Resource Manager State
Talos now validates the kubelet CPU manager and memory manager state files (
/var/lib/kubelet/cpu_manager_state,/var/lib/kubelet/memory_manager_state)the same way kubelet does on startup, and removes a state file kubelet would refuse to load before starting kubelet.
Previously only a change of the manager policy was detected, so changing e.g.
reservedSystemCPUsorreservedMemory, ora change of the CPU/NUMA topology of the machine, left kubelet unable to start until the state file was removed manually.
Only the rendered
KubeletConfiguration(machine.kubelet.extraConfig) is checked: the resource manager settings passed as kubeletcommand line flags via
machine.kubelet.extraArgs(e.g.--cpu-manager-policy,--reserved-cpus) are not taken into account.KubeSpan Peer Endpoint Filters
KubeSpan now supports filtering the endpoints received from other peers via
filters.peerEndpointsin theKubeSpanConfigdocument.While
filters.endpointsfilters the addresses a node advertises to the whole cluster,filters.peerEndpointsfilters the endpointsreceived from other peers before the node connects to them, affecting only that node. This allows excluding peer-advertised endpoints
which are known to be unreachable from a node (e.g., addresses of a private network the node is not connected to), so that KubeSpan
endpoint rotation never attempts them.
LLDP Neighbor Discovery
Talos now listens for LLDP on physical Ethernet interfaces and reports neighbors through the
LLDPNeighborStatusresource.Reported information includes chassis and port IDs, system and port descriptions, system names, management addresses, and VLANs.
The built-in listener does not transmit advertisements; use the
lldpdsystem extension when advertising is required.Secure Boot images no longer have lockdown=confidentiality enabled by default
Secure Boot images no longer have
lockdown=confidentialityenabled by default.This change was made to improve compatibility with eBPF tooling under default schematic.
This means that Secure Boot images will now have
lockdown=integrityenabled by default (implicitly), which is the recommended setting for most users.Users can override it by adding
lockdown=confidentialityto the kernel command line through Image Factory if they require it.MACVLAN Links
Talos Linux now supports creating MACVLAN links with a new
MacVLANConfigdocument:The
sourcemode is not supported yet, as it requires a list of allowed source MAC addresses.Multipath Configuration
The
multipath-toolssystem extension now reads/etc/multipath.conffrom the Talos host instead of usingExtensionServiceConfig.The
multipathdservice waits for this file and bind-mounts it read-only into its service container.Before updating the extension, apply a machine config patch that deletes the existing
ExtensionServiceConfigdocument and adds anEtcFileConfigdocument:The extension does not provide a default configuration, so
multipathdremains waiting until/etc/multipath.confis present.NFS External Volumes
Talos now supports NFS as an
ExternalVolumeConfigfilesystem type alongsidevirtiofs, allowing nodes to mount network exports at/var/mnt/<name>through the existing block volume machinery.Supported
versionvalues are3,4,4.1, and4.2.The
mount.nfsspec configures the kernel NFS client:server(hostname or IP; IPv6 is bracketed automatically) and absolutepathare required; optionalport,transport(tcp/udp), and NFSv3-onlymountPort/mountTransport(otherwiserpcbinddiscovery is used).locking(localdefault /remote) controlsnolock/lock; Talos does not runrpc.statd, solocal(nolock) is the safe default. You needrpc.statdextension for remote locking.recovery(hard/soft/soft-error) maps tohard/soft/softerr.timeout(timeo, deciseconds),retransmissions(retrans),readSize/writeSize(rsize/wsize, 1024–1048576 multiples of 1024),connections(nconnect, 1–16, TCP only),reservedPort(resvport/noresvport), andsecurity(none/sys; Kerberos flavors are unsupported as Talos does not runrpc.gssd).tcptransport.Common
mountflags (readOnly,disableAccessTime,secure) apply as with other volume types.Validation rejects
mountPort/mountTransport/lockingoutside NFSv3 andudpfor NFSv4.NUMA Topology and VM Placement Validation
Talos reports host NUMA nodes, CPU membership and total node memory through the
NUMATopologyresource.Explicit VM CPU pins and memory-node selections are checked against the host before starting or replacing a guest.
Invalid placement leaves an existing guest running; CPUs and guest memory may intentionally use different nodes.
This validates placement, not available memory capacity or reservations. Host inventory is not exposed in container mode.
Route Updates
RouteSpecresource IDs now match the key the Linux kernel uses for routes: routing table, address family, destination and priority (metric),e.g.
inet4/10.0.0.0/8/1024instead ofinet4/10.0.0.1/10.0.0.0/8/1024.The gateway, the output link and the multipath next-hops are no longer part of the ID, so changing them updates the route in place
(
RTM_NEWROUTEwithNLM_F_REPLACE) without the route ever being missing, e.g. when a BGP route switches between a single next-hop and ECMP.Routes which differ only in the next-hops (which can't be installed into the kernel at the same time) are now merged into a single route,
with the higher configuration layer taking precedence.
RouteStatusresource IDs are not changed.Permissions of the Generated Files
talosctlnow writes every file which might contain secrets with0600permissions (owner read/write only),and it restricts the permissions of the files it overwrites as well.
This affects the machine configuration (
talosctl gen config,talosctl machineconfig patch,talosctl cluster create --skip-injecting-config),talosconfigandkubeconfig.Time Check API
The
TimeService/TimeCheckAPI (talosctl time --check) is no longer available to theos:readerrole, as it allows queryingarbitrary time servers from the node. The
TimeService/TimeAPI (querying the configured time server) is still available toos:reader.PTP device paths are now strictly validated both in the machine configuration and in the API: the path should be directly under
/dev,the name should start with
ptp(e.g./dev/ptp0,/dev/ptp_kvm), and the device should be a PTP character device.Filesystem Trim Chunking
The
FilesystemTrimConfigdocument (and the per-volumetrimsettings) now supportchunkSize,chunkDelayandminLengthoptions.By default, the whole filesystem is trimmed at once (same as the
fstrimcommand), which issues discards for all free space back-to-backand might cause latency spikes for other workloads on the same disk (e.g. etcd).
Setting
chunkSizesplits the trim into multiple operations withchunkDelayin between, whileminLengthskips free ranges smaller than the specified size.Component Updates
Linux: 6.18.55
Kubernetes: 1.38.0-alpha.2
containerd: 2.3.6
runc: 1.5.2
CoreDNS: 1.14.7
systemd-udevd: 262
Talos is built with Go 1.27.2.
Virtual Machine Serial Console
Talos-managed virtual machines now expose their serial console over the Talos API, with no host shell access required.
talosctl hypervisor console <vm-name>attaches to the live serial console of a running VM.Press
Ctrl-]to detach without stopping the VM;Ctrl-Cis forwarded to the guest.Only one session can be attached to a VM at a time, and previous output is not replayed.
The command is supported on Unix clients only.
Serial output is also persisted on the host (with bounded retention), and can be read with
talosctl logs --kind=vm <vm-name>,including
--tailand--follow. The new--kindflag (container,vmorservice) selects the log source explicitly;omitting it keeps the previous service/container routing.
Both the console and the VM logs require the
os:adminrole and a single target node.Virtual Machine VNC Console
The new
talosctl hypervisor vnc <vm-name>command forwards a virtual machine's graphical console to a local loopback TCP port.Enable
console.vnc.enabledin itsVirtualMachineConfig; access requires theos:adminrole and exactly one target node.The listener accepts one viewer at a time and supports reconnecting without restarting the command.
Use a viewer that supports unauthenticated RFB.
Talos authenticates the tunnel, and no VNC TCP port is opened on the node.
VXLAN Links
Talos Linux now supports creating VXLAN links with a new
VXLANConfigdocument:Workload Memory Limits
The new
WorkloadResourceConfigdocument sets independent aggregate memory limits for Kubernetes pods, Talos containers and virtual machines:Each root is optional. Limits are ceilings, not reservations, and do not cover swap or HugeTLB memory.
For
kubepods, Talos derivessystemReserved.memoryso kubelet enforces the cap and adjusts Node Allocatable;an explicit
systemReserved.memory, conflicting kubelet flags or the Static memory manager cannot be combined with this limit.Changing the Kubernetes cap restarts kubelet. Without Kubernetes, only the container and virtual machine limits apply.
Lowering a limit can OOM-kill workloads in that group, including QEMU guests or Kubernetes control-plane pods.
Talos exclusively owns
memory.maxon/taloscontainersand/virtualmachines.partition, even without this document.Omitting their limits means unlimited aggregate memory; individual child limits still apply.
Kubelet system-reserved or kube-reserved memory enforcement on these roots is rejected regardless of this document;
CPU-only or compressible enforcement and reservations on unrelated roots remain supported.
Kubelet drop-in directories are rejected while any cap is active; without caps, their contents remain the operator's responsibility.
Removing the Kubernetes cap restores the original kubelet configuration. The document has no effect in container mode.
Contributors
Changes
283 commits
Changes since v1.15.0-alpha.0
163 commits
Changes from siderolabs/gen
2 commits
Changes from siderolabs/go-debug
1 commit
Changes from siderolabs/go-kubernetes
2 commits
Changes from siderolabs/go-lldp
4 commits
Changes from siderolabs/go-pcidb
1 commit
Changes from siderolabs/pkgs
53 commits
Changes from siderolabs/siderolink
6 commits
Changes from siderolabs/tools
13 commits
Dependency Changes
Previous release can be found at v1.14.0
Images
This discussion was created from the release v1.15.0-alpha.1.
All reactions