Kubernetes introduces a new level of abstraction to your containerized environment thanks to pods. A pod is a group of one or more containers, that are located on the same host and share the same resources, such as network, memory and storage of the node. Each pod in Kubernetes gets its own IP address that is shared with all the containers inside.
To ensure a good performance of your business service it is critical to monitor Kubernetes itself as well as the health of your deployed applications, the containers and the dependencies between them. The new abstraction introduced by Kubernetes, requires you to rethink your monitoring strategy, especially if you are used to traditional monitoring tools and traditional hosts such as physical machines or VMs. Microservices have changed the way we think about running services on VMs, but Kubernetes has changed the way we manage and scale containers.
Monitoring Kubernetes is different than traditional monitoring in multiple ways:
- More components (between hosts and applications) to monitor
- You need monitoring capabilities that can track the dynamic behavior of containers and applications inside them
- As the amount of containers scale the number of dependencies will increase
- If a single component within a microservice , there may be no business impact, and so the severity of alerts should match this fact. The traditional monitoring approach of testing whether something is ‘up’ or ‘down’ falls short.