Appdynamics instrumentation of a Kubernetes cluster


What is Kubernetes (K8s)?

Kubernetes is simply an open source platform for managing containerized workloads and services. It facilitates both automation in deployment and management of cloud native application or public cloud platforms. The abbreviation K8s is derived by replacing the eight letters of “ubernete” with the digit 8.

Why Kubernetes is important in IT?

Containers are a good and easy way to bundle and run your applications. In a production environment, you need to manage the containers that run the applications and ensure that there is no downtime.

  • Service discovery and load balancing
    • Able to load balance and distribute the network traffic
  • Storage orchestration
    • Allows automatically mount of storage system, such as local storage and public cloud providers.
  • Automated rollouts and rollbacks
    • Describe the desired state for your deployed containers using Kubernetes, and it can change the actual state to the desired state at a controlled rate.
  • Automatic bin packing
    • Fit containers onto your nodes to make the best use of your resources
  • Self-healing
    • Restarts containers that fail, replaces containers, kills containers that don’t respond to your user-defined health check
  • Secret and configuration management
    • Store and manage sensitive information, such as passwords, OAuth tokens, and SSH keys.

Advantage of using Kubernetes (K8s)?

  • Reducing Development And Release Timeframes
    • Enables container integration or facilitates the administration of access to storage resources from different providers.
  • Optimizing IT Costs
    • Resource allocation is automatically modulated to the actual application needs
  • Increased Software Scalability And Availability
    • Able to scale the applications and underlying infrastructure resources up or down
  • Flexibility In Multi-Cloud Environments
    • Operation of applications in any public and private environment, without functional or performance losses

What are nodes and pods in Kubernetes?

Pods are simply the smallest unit of execution in Kubernetes, consisting of one or more containers, each with one or more applications and its binaries.

Nodes are the physical servers or VMs that comprise a Kubernetes Cluster. Nodes are interchangeable and typically not addressed individually by users or IT, other than when maintenance is required.

What is Cluster Agent?

AppDynamics Cluster Agent monitor and understand how Kubernetes infrastructure affects your applications and business performance. The Cluster Agent monitors events and metrics of Kubernetes or OpenShift clusters. It also tracks the state of most Kubernetes resources: pods, replica sets, deployments, services, persistent volumes, nodes, and so on. The data is received through the Kubernetes API server and is sent to the AppDynamics Controller.

What is auto instrumentation?

In AppDynamics, instrumentation refers to how app agents interact with your application software to gather performance data and report it back to the AppDynamics Controller.

AppDynamics Cluster Dashboard

The application demonstrated is a Java app deployed with Kubernetes . The first step to instrumenting your application is installing the cluster app agent on the servers where the code runs. Once the yaml file has been configured to its designated AppDynamics account, the lab can be deployed in order for the services and ingress to be created. It may take a while in order for the metrics to reflect on the appdynamics dashboard as shown below.

The cluster dashboard shows a summary of the cluster health status. AppyDynamics also supports a drill down if you need more details about the component.

The server dashboard provides an overview of the cluster, including the Errors, Pods health, Cluster Capacity, Issues, Storage, CPU & Memory and Persistent Volume Claim(PVCs).

The cluster server pods page list out all the existing pods with all the details, including the name, container id, namespace, host server, CPU, Memory and count of restarts. 

AppDynamics Application Dashboard

The application dashboard shows the flow map of the pods. It also shows metrics its health including business transaction, node and server.

The business transaction page shows the response time and details about the calls from the application. The filter function is useful to filter out any transaction that an admin is looking for.

The events section from the application dashboard is a list of events that meets a criteria. A health rule can be set to meet certain criteria and be filter on the event list

There is a Tiers and nodes page to check the health status of the tiers/nodes of the application.

Why is Auto instrumentation great?

Appdynamics cluster is pushing automatically the Java or .NET APM agent. So the Appdynamic admin can delegate the deployment of apm agent into the cluster automatically using the cluster agent.