A container orchestration tool like Kubernetes helps in automating deployment, scaling, and management of containerized applications. While Kubernetes has the potential to simplify the act of deploying the application in containers, it comes with a challenge how does one monitor such a tool? There are so many points to keep track of.
In this blog, I will discuss:
- What is Monitoring in Kubernetes
- What Kubernetes Metrics Should We Measure?
- Kubernetes Metrics Server
- Other Tools used for this purpose
Are you new to Kubernetes? Check out our blog on Kubernetes for Beginners.
What is Monitoring in Kubernetes?
The move from monolithic to a microservice architecture, adopting Kubernetes means you have got to monitor many smaller components. The monitoring in Kubernetes gives us insight into our cluster’s current health, including metrics of Nodes and Pods running, resource utilization, and a top-level overview of what’s happening inside your Kubernetes cluster.
To scale an application and supply reliable services and resources to it running in a Kubernetes cluster, you would like to know insight into how the application behaves when deployed. It’s critical to examine the performance of containers, pods, and services. Monitoring helps in getting this information and helps to boost the performance of the application.
Also, check our blog post on Kubernetes Architecture.
Monitoring K8s involves monitoring the cluster, all the nodes, as well as monitoring pods, deployments, and services. These can be divided into two main components:
What Kubernetes Metrics Should We Measure?
There are various things to keep an eye on in Kubernetes:
- Cluster monitoring: Monitors the overall health of a Kubernetes cluster. Aids in determining whether nodes are functioning effectively and at the appropriate capacity, how many apps are running on a node, and how the cluster as a whole utilizes resources.
- Pod monitoring: Tracks issues affecting individual pods, such as pod resource utilization, application metrics, and metrics linked to pod replication or autoscaling.
- Deployment metrics: You can monitor Kubernetes deployments with Prometheus. This statistic displays CPU, Kube state, cAdvisor, and memory metrics for the cluster.
- Ingress metrics: Monitoring ingress traffic can assist in identifying and managing a variety of issues. Ingress controllers can be configured to track workload health and network traffic data using controller-specific techniques.
- Persistent storage: Persistent storage enables Kubernetes to implement CSI by enabling volume health monitoring. You may also monitor node failures using the external health monitor controller.
- Control plane metrics: To measure and visualize cluster performance for troubleshooting purposes, you should monitor schedulers, API servers, and controllers.
- Node metrics: Monitoring CPU and memory usage for each Kubernetes node can assist guarantee they never run out. A running node’s status can be described by several circumstances, including Ready, MemoryPressure, DiskPressure, OutOfDisk, and NetworkUnavailable.
Kubernetes Metrics Server
For monitoring in Kubernetes, K8s has a built-in monitoring tool Metrics Server. Metrics Server is a cluster-wide aggregator of resource usage data. It collects metrics like CPU or memory consumption for containers or nodes, from the cAdvisor exposed by Kubelet on each node. Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.
The metrics server stores all the retrieved information from the nodes and pods in memory. It’s an In-memory monitoring solution and does not store metrics on the disk as a result we cannot see historical performance data. Metrics API can be accessed by:
- kubectl top node which provides CPU and memory consumption of each of the nodes.
- kubectl top pod to look at the CPU and memory consumption of pods in K8s.
Kubernetes metrics server is used for Kubernetes advanced orchestration like Horizontal Pod Autoscaler for autoscaling. Metrics Server offers:
- A single deployment that works on most clusters
- Scalable support up to 5,000 node clusters
- Resource efficiency: Metrics Server uses 0.5m core of CPU and 4 MB of memory per node
Also read: Our blog post on High Availability in Kubernetes.
Other Kubernetes Monitoring Tools
With the increasing adoption of containers and microservices within the enterprises, monitoring utilities have to handle more services and server instances than ever before. Although the infrastructure landscape has changed, operations teams still need to monitor the identical metrics on CPU, RAM, File System, Network utilization, etc. For this, there are 3rd-party tools available within the market which helps in monitoring Kubernetes by collecting the logs, metrics in a much better way. Let’s observe a number of the favored open-source tools available.
Read This blog in which we provide you with an overview of Helm and Helm Charts description and why is it beneficial. If you are new to Kubernetes, it will be helpful to read Kubernetes Introduction and Its architecture first to familiarize yourself with the basics concept.
1. The ELK Stack
For Monitoring in Kubernetes, the foremost popular open-source monitoring tool is the ELK Stack. An acronym for Elasticsearch, Logstash, and Kibana, ELK also includes a fourth component — Beats, which are lightweight data shippers. Each component within the stack takes care of a different step in the logging pipeline, and together, all of them provide a comprehensive and powerful logging solution for Kubernetes.
Logstash is a log aggregator that captures and processes logs before shipping them to Elasticsearch. Elasticsearch was designed to be scalable and can perform well even when storing and searching across innumerable documents. Kibana provides reporting and visualization functionalities. And eventually, Beats, are lightweight data shippers used to send logs and metrics to Elasticsearch.
Pros:
- Rich analytics capabilities
- Easy to deploy and run in Kubernetes environment
- Large community
Cons:
- Challenges at scale
- Elasticsearch does not have multi-language support in terms of handling request and response data (only possible in JSON) unlike in Apache Solr, where it is possible in CSV, XML, and JSON formats.
Also read: AKS Cluster is a Kubernetes cluster, which is created on the Azure Kubernetes Service (AKS) by Microsoft is one of the leading managed K8s services.
2. Prometheus
Prometheus is one of the foremost popular open-source tools used for monitoring in Kubernetes. It was developed by SoundCloud and donated to the CNCF (Cloud Native Computing Foundation). Prometheus stands out as compared to other time-series databases – such as Cassandra, Graphite, InfluxDB – is that it has a simple yet powerful multidimensional data model and its flexible query language (PromQL). Furthermore, it follows a pull model rather than push and has built-in real-time alerting mechanisms.
Finally, being open-source, it gathered a large community interest in helping and bringing innovation. These differentiators make Prometheus a great solution for monitoring in Kubernetes.
Pros:
- Built-in monitoring and alerting
- Functional and reliable during outages
- Kubernetes-native, easy to use
- Integrates well with Grafana
- Large community
Cons:
- No long-term storage
- No dashboard
- No authentication/authorization
- Challenges at scale
Read this blog to know about what is Kubernetes Pod which is an important component of Kubernetes.
3. Kubernetes Dashboard
Kubernetes Dashboard is a web-based UI add-on for Monitoring in Kubernetes. It provides a simple way to manage, troubleshoot, and monitor your environment. You can use the Kubernetes Dashboard to see basic metrics related to memory and CPU usage statistics across all of your nodes and to monitor the health of workloads (pods, deployments, replica sets, etc.). You can also manage and take action from this dashboard, which has been a security concern on multi-tenant clusters as proper RBAC privileges need to be set up.
Pros:
- Easy to install
- Part of the Kubernetes ecosystem
Cons:
- Limited features
Note: Check out our blog post on Kubernetes RBAC
4. Datadog
Proprietary APM solutions like Datadog for Monitoring in Kubernetes enable you to extract logs, metrics, events, and service states from K8s in real-time. It enables you to monitor, troubleshoot, and optimize application performance. Datadog features dashboards and high-resolution metrics and events for manipulation and graphing. You can also set up alerts and receive notifications on various channels, including Slack and PagerDuty. Datadog is easy to install. You can run it using their DaemonSet agent that will be deployed to every cluster node.
Pros:
- Easy to install
- Great APM integration
Cons:
- Confusing logs integrations
- The performance or speed of information delivery tends to slow down when more applications are integrated with it.
Also Read: Our blog post on Certified Kubernetes Application Developer ckad, Everything you need to know before giving this exam.
5. Weave Scope
Weave Scope is a great tool for Monitoring in Kubernetes. It is a zero-configuration monitoring tool developed by Weaveworks. It generates a map of processes, containers, and hosts in a Kubernetes cluster to help understand Docker containers in real-time. It can also be used to manage containers and run diagnostic commands on containers without leaving the graphical UI.
If you are looking for a practical graphical tool to obtain a visual overview of your Kubernetes cluster—including the application, the infrastructure, and the connections among your cluster nodes—Weave Scope may help you. This tool is extensible via some plugins.
Also, Read Our blog post on best Kubernetes dashboard. Click here
Pros:
- Zero-configuration
- Provides a much nicer user interface
Cons:
- Lacks analytical depth
Also Read: Our blog post on Top Kubernetes Prometheus Alternatives. Click here
Frequently Asked Questions
What should you monitor in Kubernetes?
Kubernetes Metrics Server collects data from the kubelet on each node and routes it through the Metrics API, which may then be combined with a variety of visualisation tools. The following are some critical KPIs to consider tracking: Cluster state metrics, Pod availability, Disk utilization, CPU utilization
How do I monitor Kubernetes nodes?
Resize CPU and Memory Resources assigned to Containers, Monitoring, Logging, and Debugging, Horizontal Pod Autoscaling, Job with Pod-to-Pod Communication, Deploy and Access the Kubernetes Dashboard, Use a SOCKS Proxy to Access the Kubernetes API, Running Pods on Only Some Nodes
How do you monitor pod resources utilization?
To get these metrics, use the kubectl top command, which displays the CPU, memory, and network utilisation for the containers, pods, or nodes.
Related/References
- Visit our YouTube channel “K21Academy”
- Prometheus Certified Associate (PCA) Certification Exam | What, Why & How?
- Prometheus Monitoring: Features, Components, Architecture, and Metrics
- An Introduction To Prometheus Dashboard & Its Options
- Kubernetes Monitoring: Prometheus Kubernetes & Grafana Overview
- Certified Kubernetes Administrator (CKA) Certification Exam
- (CKA) Certification: Step By Step Activity Guides/Hands-On Lab Exercise & Learning Path
- Certified Kubernetes Application Developer (CKAD) Certification Exam
- (CKAD) Certification: Step By Step Activity Guides/Hands-On Lab Exercise & Learning Path
Join Our FREE class
Discover the Power of Kubernetes, Docker & DevOps – Join Our Free Masterclass. Unlock the secrets of Kubernetes, Docker, and DevOps in our exclusive, no-cost masterclass. Take the first step towards building highly sought-after skills and securing lucrative job opportunities. Click on the below image to Register Our FREE Masterclass Now!
Leave a Reply