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: 19. Configure Application

Configuring application consists of Configuring commands and arguments on applications Configuring environment variables Configuring secrets Docker Commands docker run ubuntu  -> Runs ubuntu container and exit, container CMD is set to [bash], so the container quitely exits docker run ubuntu echo "Hello World" -> Runs ubuntu container, prints "Hello World" exits quitely. To update the default settings, create your own image from the base image lets call this ubuntu-sleeper image FROM ubuntu CMD sleep 5 CMD can also be mentioned in the JSON format like CMD ["sleep", "5"] Note that with JSON format the first element should always be the command to execute,  for eg, it CANNOT be ["sleep 5"] Run build the new ubuntu-sleeper image and run the new image docker build -t ubuntu-sleeper .  -> Build the image docker run ubuntu-sleeper -> Run the new image So the new image will launch ubuntu container, sleep for 5 seconds and quitely ex...

underscore.js extend

underscore.js is a javascript utility library. Let us understand the extend method of this very useful library. _.extend is for extending a given object with all the properties of the passed-in object(s) Here is an example, we have three objects aObj, bObj, cObj and we want to combine them into single object. Using _.extend is a simple way of combining these objects. And before trying out the example don't forget to import the underscore.js library Now access the source code of underscore.js and look for the extend method. This is how it looks like This uses functional programming style.  createAssigner takes two inputs and returns a function. The two inputs are (1) keysFunc  (2) defaults Since it is returning a function, so a closure is formed, and the returned function remembers the two inputs Looking at the source code from the line (keys = keysFunc(source)) it is evident that keysFunc is a function itself. ...