Skip to main content

Kubernetes: 16. Monitor Cluster Component

 Cluster Components

  • Kubernetes does not have a OOB monitoring for its own cluster component
  • Node health, node resources - CPU, Memory and Disk space are some of the resources you want to monitor
  • Pod health, pod resources - CPU, Memory and Disk space are some of the resources you want to monitor
  • This may change or might have already changed in the latest versions
  • There are some good open source solutions for monitoring these components and doing analytics on them
Metrics Server
  • Heapster was one of the original project to monitor resource consumption, it was then replaced with Metrics Server
  • Metrics Server is an IN MEMORY solution. 
  • It aggregates and stores all the nodes and pod resources information
  • So there is no historical data with metrics server
  • Kubelet service is responsible to listen to the kube-api service instructions to build the pods
  • Kubelet also has other responsibilities, one of it is cAdvisor (container advisor)
  • cAdvisor collects the resource information from nodes and pods and passes these details to the Metrics Server
Enable Metrics Server
  • For a Minikube environment enable the metrics-server using mini kube addons feature
  • For rest of the environments clone the git and create the resources
  • Note that there will be multiple resources created when metrics server is enabled (pods/roles/service accounts/deployments etc)
  • These services are used to collect the resource information on the node
  • Once metric-server is deployed give it some time to collect the resources
  • Then run the top command to see the cluster performance

minikube addons enable metrics-server 
-> Enable metrics server when using minikube tool

git clone https://github.com/kubernetes-incubator/metrics-server.git 
-> For all other environments clone the definition file from git

kubectl create -f deploy/1.8+/ 
-> Create the resources (there will be multiple)

kubectl top nodes
-> Get the node level cluster performance

kubectl top pods -n <namespace>
-> Get the pod level cluster performance in the namespace

Comments

Popular posts from this blog

Azure Active Directory

Azure Active directory (AAD) is a Identity as a Service. This is a smaller subset of Active directory. This is not a replacement to active directory at all. Azure active directory provides the identity services to the mobile apps and web apps in Private cloud. These apps may be connected to on-premise applications. So an SSO is enabled for these apps. So Azure active directory has very simple functionality. Create Users, Groups. Map groups to network security groups and provide the authentication to the resources. When you login to Azure portal, right upper corner of the screen has username along with the domain. Domain or tenant or organization are used interchangeably. Management of Users and Groups: Cloud identity (create users manually)  Directory synchronized identifiers (users are synchronized)  Add users Adding a cloud identity users makes the user as Guest When you do directory synchronization on Premise AD Groups are synched up wi...

Kubernetes: 5. Services

A  service  is a stable endpoint to connect to "something" An abstract way to expose an application running on a set of pods as a network service. Services enable communication between various components within and outside of the application With Kubernetes Services there is no need to configure the application for service discovery Kubernetes Service is an object just like Pod, ReplicaSet etc There is always a service running when Kubernetes is installed, Kubernetes API itself When a service is created, kubernetes creates the endpoints (kubectl get endpoints) The endpoints has all the pods associated with that service Headless Service A headless service is obtained by setting clusterIP  field to None Since there is no virtual IP address, there is no load balancer either The DNS service will return the pods' IP addresses as multiple A records This gives us an easy way to discover all the replicas for a deployment This is useful for creating stateful service...

Kubernetes: 18. Rollout and Rollback

Deployment When a deployment is created, it triggers a rollout Rollout creates a new revision (version) In the future when new deployment is created,  a new rollout is created The new rollout creates one more "new" version These versions help to keep track of the changes and rollback if necessary Deployment Strategy First strategy is delete and recreate strategy.  Delete all the existing pods and deploy the new updated pods But this comes with application downtime Second strategy and default strategy is Rolling update strategy Kubernetes deletes one pod at a time in the older version and in its place creates a one pod at a time in the newer version Update Strategy Updates can be many things like updating the labels, docker image, replicas etc These are directly updated into the deployment file and the changes are applied When the changes are applied using kubectl apply command, a new rollout and a new revision is created Another way to update the image name is to use the kube...