In a Kubernetes environment, container-tracer runs two types of pods:
tracer-node
, one instance on each worker node in the cluster. It is responsible for the discovery of containers, running on this node and manage the tracing sessions to these containers. This pod runs in a privileged mode and has access to all pods running on the node. For a detailed description, see tracer-node.tracer-svc
- one instance in the entire cluster. It exposes the container-tracer REST API and is responsible for broadcasting all API requests to alltrace-node
pods, receiving and aggregating the responses. For a detailed description, see tracer-svc.
Alltracer-node
pods are bound to a headless ClusterIP service, used for communication with thetracer-svc
pod. Thetracer-svc
pod uses a NodePort service to expose the REST API. Look at REST API for description of the API. Depending on the configuration, eachtrace-node
pod sends the collected traces using Open Telemetry framework to an external database. Look at traces flow for description on how the trace collection flow works.
In a standalone or docker installation, only the tracer-node
is used. It has the same functionality
as in the Kubernetes environment, but with those two differences:
- Information from the
/proc
filesystem is used to discover the containers running on the system. - The REST API is accessible directly, without the
tracer-svc
proxy.