hostPath
mounts in Kubernetes, but they can be used for other purposes as well.
When a user volume configuration is applied, Talos Linux will either locate an existing volume or provision a new one.
The volume will be created on the disk which satisfies the diskSelector
expression and has enough free space to satisfy the minSize
requirement.
The user volume is identified by a unique name, which is used both as a mount location and as a label for the volume.
The volume name must be unique across all user volumes, and it should be between 1 and 34 characters long, and can only contain ASCII letters, digits, and -
(dash) characters.
The volume label is derived from the volume name as u-<volume-name>
, and it is used to identify the volume on the disk after initial provisioning.
The volume mount location is /var/mnt/<volume-name>
, and it gets automatically propagated into the kubelet
container to provide additional features like subPath
mounts.
Disk encryption can be optionally enabled for user volumes.
Creating User Volumes
To create a user volume, append the following document to the machine configuration:local-volume
is created on the first NVMe disk which has 100GB
of disk space available, and it will be created as maximum
of 200GB
if that space is available.
The status of the volume can be checked using the following command:
-o yaml
flag to get additional details.
The volume is immediately mounted to /var/mnt/local-volume
:
hostPath
mount:
Removing User Volumes
Before removing a user volume, ensure that it is not mounted in any Kubernetes pod. In order to remove a user volume, first remove the configuration document from the machine configuration. TheVolumeStatus
and MountStatus
resources will be removed automatically by Talos Linux.
Note: The actual disk data hasn’t been removed yet, so you can re-apply the user volume configuration back and it will be re-provisioned on the same disk.To wipe the disk data, and make it allocatable again, use the following command:
nvme0n1p2
is the partition name, and it can be obtained from the VolumeStatus
resource before the user volume is removed,
or from the DiscoveredVolume
resource any time later.
Note: If thewipe disk
command fails withblockdevice is in use by volume
, it means the user volume has not been removed from the machine configuration.