Kubernetes A Winning Container War

Posted By : Ankit Arora | 26-Jun-2017



Open source tool to manage containers with easy management & discovery.

For automating deployment, scaling & management.


  • Greek word “Pilot”.
  • Schedules, runs & manages containers in a cluster of virtual or physical machines.
  • Started by Google in 2014
  • 100% Open Source.
  • Written in GO.



Basic components/features of Kubernetes:-


#1 PODs

  • Smallest deployable unit
  • Group of tightly coupled containers
  • Shared network & data volumes.
  • Routable IP.
  • Mortal.


#2 ReplicaSets

  • Run x copies(replica) of a pod.
  • Can start or kill pods if necessary.
  • Handle pod failures using health checks.


#3 Deployments

  • Contains declarations of our application
    • Which container(image/tag).
    • Environment variables.
    • Data volumes.


  • Defines no. of replicas.
  • Creates replicaSet which in turn create pods.


#4 Services

  • Service provides a permanent virtual IP & DNS to Pods.
  • Proxy traffic to selected pods.
  • Simple load balancing.


#5 NameSpaces

  • Combination/Group of K8s resources(pods, replicasets, deployments,etc.)
  • By default everything is in “default” namespace.
  • Can create namespaces for environments(test,staging,production,etc.)
  • Restrict access to specific namespaces for k8s users.
  • Namespaces can have sepearated network(just like VPC in AWS.)


#6 Clusters

  • Cluster is a set of virtual or physical machines(nodes).
  • Runs as k8s master & one or more k8s workers nodes.
  • Cluster Federation:
    • Runs a federation master, which knows all your clusters
    • Run you apps distributed across clusters eg. AWS/Google regions.


#7 Secrets & ConfigMaps

  • Separate your application code & configuration.
  • Both secrets & ConfigMaps are key-value-pairs.
  • Use secret for binary values(e.g.certificates,keys).
  • Use ConfigMaps for string values.
  • Both can be read by the container via environment variables or mapped into a data volumes e.g. Like poperty file.


#8 Data Volumes

  • Map directories into containers.
  • Multiples containers in one pods shares the same volume.
  • Many volume types:
    • NFS
    • GPD
    • AWS Block Storage.
    • Etc.
  • Can be preconfigured by cluster admins for easier usage by cluster users.


#9 PetSets

  • Petset is a stateful pod.
  • A PetSet has a scalable no. of pets.
  • A pet is bound to a dynamically created data volume.
  • That data volume will never be deleted automatically.
  • Pet is bound to the same volume on a restart.


#10 Jobs

  • Used for short living tasks.
  • Job ensures that a container which executes such a task runs successfully exactly once (or more times).
  • Retry on Failure.
  • Job Scheduling can be done like crons.


#11 Daemon Sets

  • Daemon Sets run pods on all (or a selected set of) nodes in the cluster.
  • Useful for running containers for logging & monitoring.


#12 Autoscaling

  • Horizontal Pod Autoscaling
    • Scales ReplicaSets based on pod’s CPU usage or app-provided metrics.


  • Cluster Autoscaling
    • Depends on cloud provider.
    • Scales the no. Of nodes in your cluster based on CPU & Memory usage.


#13 API

  • Every functionality is provided via a REST API.
  • Easy integration in our existing workflows(CD).
  • Command line tool “KUBECTL”(uses REST API internally).


#14 Communities

  • Constantly growing community.
  • Many contributors from many companies.


About Author

Author Image
Ankit Arora

Ankit is a Redhat Certified Engineer and Cloud Engineer.

Request for Proposal

Name is required

Comment is required

Sending message..