- let the Talos machine pull the image from the registry;
- push the image to the machine using the API.
Pulling the image from the registry
Pass the image reference as an argument totalosctl debug:
Pushing the debug image to the machine
First, build the image required (e.g. install required packages):Note: if you have the image already built and stored in your local Docker image store, you can skip the build step and directly save it to a tarball.
Note: the architecture of the image should match the architecture of the machine to debug, otherwise the image will fail to start.Finally, pass the tarball path to
talosctl debug:
Anatomy of the debug container
The debug container runs privileged with host PID and network namespaces, giving it access to the host’s processes and network interfaces. The host filesystem is mounted at/host, so you can browse host files from within the container.
Host devices are available under the regular /dev path.
Example: using pwru (packet-where-are-you) tool
Thepwru tool traces network packets through the Linux network stack, making it useful for diagnosing network issues.
First, build the pwru image from source, since it is not available in public container registries:
pwru needs to decode function names from kernel pointers, which Talos restricts by default.
Temporarily relax this restriction by applying the following machine configuration patch:
pwru image to start the debug shell:
pwru.
pwru debug shell, launch the pwru tool to trace the packets to port 5005:
sk_skb_reason_drop(SKB_DROP_REASON_NETFILTER_DROP) entry shows the packet being dropped by netfilter — the Linux kernel’s firewall framework.
This confirms the issue lies in the firewall rules on the machine, and further investigation should focus there.