cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
ryan_korteway
Dynatrace Guide
Dynatrace Guide

 

Summary

This article is to help identify potential blockers to deep monitoring pod-contained apps within Kubernetes clusters.

 

Troubleshooting Pod Injections

Step 1 - Validate Namespace

The first step of Pod injection is adding labels to application namespaces. Namespace labels can be listed using:

kubectl describe namespace <application namespace>


Look for the label: dynakube.internal.dynatrace.com/instance

C:\Users\ryan.korteway>kubectl describe ns default
Name:         default
Labels:       dynakube.internal.dynatrace.com/instance=sup-enablement-k8s-cnfs
Annotations:  <none>
Status:       Active

 

If you DO see this label but no deep monitoring data, move on to step 2. 

If you do NOT see this label, then,

  • validate that communication between the Dynatrace namespace / pods and the kube-system namespace is functional
  • Collect a Dynatrace Operator support archive before reaching out to Dynatrace Support.
    • How to collect a Dynatrace Operator Support Archive. 
    • It is essential to send the whole archive, and not to just send the logs. Configuration and diagnostic runtime information is also collected, and extremely valuable to speed up the investigation of your reported issue. 

Additionally, you can validate Namespace Labels within containerized process properties and tags dropdowns / pop-out menus within the Dynatrace UI: 

alternative sensoring.png

Version history
Last update:
‎15 Oct 2025 03:12 PM
Updated by:
Comments
sivart_89
Mentor

@ryan_korteway thank you for this right up. The 2nd link is invalid (DT Documentation about pod and namespace annotations). I'm currently looking through this because I've noticed that 1 cluster of ours has label dynakube.internal.dynatrace.com/instance in our namespaces while others do not. If the label does not exist in a namespace does that mean no dynatrace agent is being installed (as an init container) into their pod? I'm trying to understand what we are missing by not having this label in our namespaces.

ryan_korteway
Dynatrace Guide
Dynatrace Guide

Hello Sivart,

Not a problem at all on the write up and thank you for the heads up on the broken doc link which I will be fixing right after this comment. 

So my understanding is if your namespace is missing that annotation, then the namespace and thus all of the pods within it are not being watched for pod starts and therefore will not have any pod injections.

Sounds to me like you may have some namespaceSelectors set up within the dynakube yaml files for some of your clusters / DT operator deployments.

It may also warrant checking the dynakube yaml file for any dynatrace operator config annotations that disable automatic monitoring for all namespaces within the cluster etc.

Please let me know if you have any further questions or concerns.

steven_v
Helper

@ryan_korteway Thank you for this informative and detailed write up! I was struggling to understand why my pods were not getting the injection and instrumentation. It turns out we had a namespaceSelector value set in our Dynakube yaml to disable injection on our default/system labeled namespaces 🙂 

 

StrangerThing
DynaMight Mentor
DynaMight Mentor

Have you tried to automate this process with something in the pipeline or on the DT side with a Workflow? Seems like a great opportunity to automate this validation so we don't always have to check every time there's a deployment to k8s. 

steven_v
Helper

I have not personally but that's a fantastic idea to explore. The k8s connector sounds like something cool we can look at:

https://docs.dynatrace.com/docs/analyze-explore-automate/workflows/actions/kubernetes-automation/get...