Understand the system components that make up Talos Linux.
Component | Description |
---|---|
apid | When interacting with Talos, the gRPC API endpoint you interact with directly is provided by apid . apid acts as the gateway for all component interactions and forwards the requests to machined . |
containerd | An industry-standard container runtime with an emphasis on simplicity, robustness, and portability. To learn more, see the containerd website. |
machined | Talos replacement for the traditional Linux init-process. Specially designed to run Kubernetes and does not allow starting arbitrary user services. |
kernel | The Linux kernel included with Talos is configured according to the recommendations outlined in the Kernel Self Protection Project. |
trustd | To run and operate a Kubernetes cluster, a certain level of trust is required. Based on the concept of a ‘Root of Trust’, trustd is a simple daemon responsible for establishing trust within the system. |
udevd | Implementation of eudev into machined . eudev is Gentoo’s fork of udev, systemd’s device file manager for the Linux kernel. It manages device nodes in /dev and handles all user space actions when adding or removing devices. To learn more, see the Gentoo Wiki. |
apid
.
Apid acts as the gateway for all component interactions.
Apid provides a mechanism to route requests to the appropriate destination when running on a control plane node.
We’ll use some examples below to illustrate what apid
is doing.
When a user wants to interact with a Talos component via talosctl
, there are two flags that control the interaction with apid
.
The -e | --endpoints
flag specifies which Talos node ( via apid
) should handle the connection.
Typically this is a public-facing server.
The -n | --nodes
flag specifies which Talos node(s) should respond to the request.
If --nodes
is omitted, the first endpoint will be used.
Note: Typically, there will be anFor example, if a user wants to interact withendpoint
already defined in the Talos config file. Optionally,nodes
can be included here as well.
machined
, a command like talosctl -e cluster.talos.dev memory
may be used.
talosctl
is interacting with apid
running on cluster.talos.dev
and forwarding the request to the machined
api.
If we wanted to extend our example to retrieve memory
from another node in our cluster, we could use the command talosctl -e cluster.talos.dev -n node02 memory
.
apid
instance on cluster.talos.dev
receives the request and forwards it to apid
running on node02
, which forwards the request to the machined
api.
We can further extend our example to retrieve memory
for all nodes in our cluster by appending additional -n node
flags or using a comma separated list of nodes ( -n node01,node02,node03
):
apid
instance on cluster.talos.dev
receives the request and forwards it to node01
, node02
, and node03
, which then forwards the request to their local machined
api.
system
namespace in containerd, whereas the Kubernetes services are namespaced under the k8s.io
namespace.
init
included in Talos is one example of this, and we are calling it “machined
”.
We wanted to create a focused init
that had one job - run Kubernetes.
To that extent, machined
is relatively static in that it does not allow for arbitrary user-defined services.
Only the services necessary to run Kubernetes and manage the node are available.
This includes:
machined
process handles all machine configuration, API handling, resource and controller management.
trustd
.
Based on a Root of Trust concept, trustd
is a simple daemon responsible for establishing trust within the system.
Once trust is established, various methods become available to the trustee.
For example, it can accept a write request from another node to place a file on disk.
Additional methods and capabilities will be added to the trustd
component to support new functionality in the rest of the Talos environment.
/dev
.