KubeAcademy by VMware
Demo: OpenTracing with CNCF Jaeger
Next Lesson

In this demonstration, we will use the Jaeger Operator to deploy Jaeger components, as well as a sample application to show a distributed trace in action running on a Kubernetes cluster.

Hart Hoover

Senior Field Engineer at Kong

Hart Hoover is a Senior Field Engineer at Kong. His expertise lies in technical training, consulting, community building, Linux-based operating systems, computing automation, and cloud application architecture.

View Profile

Hello, my name is Hart Hoover, Manager of Kubernetes Education at VMware. And in this video, we're going to go through Jaeger deployed into a Kubernetes cluster and walk through Jaeger itself and show you what it looks like and what a trace looks like.

So, first thing's first. Where do you get Jaeger? So Jaeger provides a Jaeger Operator to deploy in your cluster, which allows you to have Jaeger as a service available in your cluster. Or, you can generate your own manifests and just deploy a Jaeger to your cluster.

You can get started really quickly using the Jaeger Operator for Kubernetes, because they provide you these quick cut-and-paste download and apply these YAML files. You can, of course, review them all there in this repository under Deploy, so let's take a look at that.

So you can see it has CRDs that power the Operator itself, and then some rbac things for security. The Operator itself, and a service account, and they provide you some examples on how you would want to set up Jaeger if you wanted. In my cluster, I'm going to use the simple deployment of Jaeger, just to show it off. For something in a production, you'd probably want to follow one of these examples, probably a StatefulSet. If you were doing this in production, you'd probably want to follow one of these examples depending on your needs for your cluster. So let's take a look at our cluster and see what actually gets deployed.

So I've deployed Jaeger in the Observability namespace. So I've got the Jaeger operator as a deployment. My Jaeger deployment itself is called Demo, so it's called Jaeger Demo in this case. And then it's various services that make it up. And I also have a pod in here. That's my demo application that Jaeger also provides called Hot Rod, which simulates sending drivers on demand, similar to an on-demand taxi service, just so I can generate trace data for you and show it to you and Jaeger.

And then it also deploys various services so I can access those things inside it and eventually outside the cluster. I am port-forwarding from my local machine to my cluster, to these services. So let's take a look at our sample application and Jaeger itself.

So this is what Jaeger looks like at a high level, but it's not much to look at until you actually submit a trace. So let's start submitting some traces that we can look at in Jaeger. So I just clicked these buttons. Again, this is just a demo application to trigger traces and spans inside your application that Jaeger can trace. So let's take a look at what we got. Let's take a look at the driver application.

Okay. So this is a trace in Jaeger. You can see the top has Start to Finish and it's made up of a bunch of spans, which are detailed below under Service and Operation. We have a front end and then the driver service, and each one of these little services that make up this one call talk to many different services in the application. So for example, there's a MySQL database here. There's some Redis happening here and you can see at each point how long each request took in a service. And what's really cool is if there was an error from a service, you could see what actually happened. So here, we had a Redis timeout in our application and that reflected as an error to the service, and Jaeger captured that span.

Jaeger also grabs a system architecture diagram of your application to show how your various services interact with each other and how the flows happen between parts of your application. So you can see the customer service has a MySQL database, the driver service has a Redis database, and then the front end itself has talks to all the various services in the application to build the front end of your app. And here you can also see a dag of the various calls and how many traces went where, and you can build this out and see in a much more complex application of how these things all fit together.

So thank you. That was a quick demo of Jaeger and a sample application to show off trace data in a Kubernetes cluster. Thank you for watching.

Give Feedback

Help us improve by sharing your thoughts.

Links

Share