If you’ve been following the evolution of the Kubernetes templates for Jaeger, you might have noticed an important change recently: the Jaeger Agent is not being deployed as a DaemonSet anymore. Instead, instructions are now being provided on how to deploy it as a “Sidecar”. The Agent component was developed to act as a “buffer” between the tracer and the collector.
This buffer should sit very close to the tracer, usually on localhost. Because of this basic assumption, the tracer can just send the collected spans to the agent via UDP, for an optimal balance between performance and reliability. While this assumption works great for a deployment on bare metal, a question arises when we start to think about cloud environments and containers: what is localhostfor your Kubernetes pod?
Is it the node it’s running on, or is it the pod itself?