Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to Kubernetes


Published on

Presentation from the first meetup of Kubernetes Pune - introduction to Kubernetes (

Published in: Technology
  • Be the first to comment

Introduction to Kubernetes

  2. 2. VISHAL BIYANI CTO & Founder at infraCloud technologies ( ) 2004 Java, PLM, JSP, Servlets 2004-2009 eMatrix PLM, J2EE, Database, architecture, Shell and what not 2010 - 2013: Spring, Maven, Jenkins, ElasticSearch, CloudFoundry, Google App Engine, APIs, CI 2013: Puppet, Chef, Ansible, CD/CI, DevOps Coach, Docker, API Mgmt, Microservices, Infra as code Now: Containers, Kubernetes, Mesos, Salt, Scale, Distributed
  3. 3. ANNOUNCEMENT TIME This is first Kubernetes Pune meetup & we will host a meetup every month. We will cover advanced Kubernetes topics & other projects from CNCF (Cloud Native Computing Foundation) such as Prometheus, Opentracing, FluentD For Feb 26 Meetup we have Ian Lewis - Developer advocate Google cloud APAC conducting a session
  4. 4. infraCloud has published a FREE eBook on “Scaling and deploying Kubernetes”
  5. 5. PLEASE RAISE HANDS • You have worked with either of Puppet/Chef/Ansible/Salt? • You have used Docker • You have experience of Kubernetes/Mesos/Swarm/Openshift? • You are using Go lang
  6. 6. TABLE OF CODE .. .. • What is Kubernetes, exactly? • How to setup a Kubernetes Cluster? • Various ways to get started with a Kubernetes cluster • Kubernetes Architecture • API Server • Kubernetes Concepts • POD, • Kubectl - quick overview • Sample app deployment
  7. 7. KUBERNETES - THE BOOKISH DEFINITION • Kubernetes is an open-source platform for automating deployment, scaling, and operations of application containers across clusters of hosts, providing container- centric infrastructure (From Open source project by Google Primarily targeted at containerized workloads Platform - automates deployment, scaling etc. Abstracts hosts and underlying infrastructure from you Portable - Run on public/private cloud, data center, your laptop - doesn’t matter Self - healing: It restarts, replaces, scales, monitors Containers Extensible - replace certain components if you want to. Extend with pluggable architecture
  8. 8. KUBERNETES PROVIDES COMMON NEEDS/DESIGNS Need to run related processes together in a shared context Integrating with underlying storage (Block or Bucket based) Check health of applications and maintain certain number of instances. Scale instances based on triggers. Load balancing between multiple instances of a container Provide easy and scalable way to locate and reach services (Aka service discovery and naming) Monitoring and log management Tagging and searching instances dynamically to do certain operations (For example list all web servers across all applications) Rolling updates, Canary deployments Everything is API based- so can be integrated with external systems.
  9. 9. SETTING UP KUBERNETES Demo: Setup cluster with GCE & UI On Cloud & managed Google Container Engine StackpointCloud Tectonic from CoreOS Openshift SaaS DIY - any cloud/data center Kubeadm (official utility) DIY On steroids KOPS (Targeted to AWS) Kismatic from Apperanda Rancher - provides enterprise features, multi cluster support Redhat OpenShift - comes with complete lifecycle features Many more: Platform9
  10. 10. KUBERNETES ARCHITECTURE 1/2 Image Source:
  11. 11. KUBERNETES ARCHITECTURE 2/2 • Docker is running on every host • Node Components: • Kublet: manages the containers on that node and their storage, images etc. • Kube-proxy - A simple proxy which is running a load balancer. Does TCp/UDP forwarding in simple RoundRObin fashion. • Master Components (Might be on same node or different based on HA setup etc.) • Etcd: Config data storage and events for changes in dataKube • API Server: API layer with different components/plugins • Scheduler: Works on scheduling & rescheduling a container to a node • Controller manager server: There are various controllers like node controller does node management, endpoint controller takes care of exposing endpoints etc.
  13. 13. PODS - FRIENDS WHO LIVE TOGETHER • Co-located set of containers • One or more containers which need to run together - they share the same storage, and a shared context • They share the IP and port space and are reachable to each other via localhost. • They are always scheduled and handled together. The scaling applies to all containers in a POD • PODs must not be created directly even if you just need one - why? We will know in next one Code & Demo: Pod - create and destroy
  14. 14. REPLICATION CONTROLLER - GODFATHER OF POD • Manages lifecycles of PODs. Ensures “n” instances of POD are always running (If less, increase. If more, kill) • If a POD gets deleted from a replicas=3, another one is created. • Even is a host machine/node gets terminated, RC will ensure that the PODs are scheduled elsewhere • Selects the PODs which should be part of replica based on labels • ReplicaSet is next generation of ReplicationController with additional features • Deployment type is the current preferred method, which also provides: • Rolling Deployment Strategy & Canary releasing • MaxSurge & MaxUnavailable parameters to control the rolling deployment Code & Demo: RC, create & delete pod
  15. 15. SERVICES - POD’S DAY OUT • Provides a fixed endpoint for PODs irrespective of deletion/movement/modification of POD & Replication Controller • Also a way to expose services/endpoints to outside cluster or to world • Can act as a endpoint for a service outside of Kubernetes too. • Services utilize labels to target PODs which needs to be proxied by service Service Discovery Environment variable based DNS (Reccomended approach) Kubernetes adds environment variables to containers in a given format like: REDIS_MASTER_SERVICE_HOST= REDIS_MASTER_SERVICE_PORT=6379 Sequence of startup needs to be maintained A DNS server as a cluster add on. Watches for changes in services and updates records Services can then be accessed in format <<NameSpaceName>>.<<ServiceName>>
  16. 16. SERVICE TYPES ExternalName (Kubenretes 1.5 onwards) • Maps to a external provided CNAME like ClusterIP (Default) • Exposes service only within cluster NodePort • Creates a ClusterIP + exposes the same port on every node/host. This is typically used if you want to use an external loadBalancer LoadBalancer • NodePort+Creates a LB in cloud provider (Such as ELB) and points to respective ports Demo: Create a service and expose Nginx
  17. 17. LABLES AND SELECTORS: POWER TO YOU Lables: “relase”:”1.4” “environment”:”QA” “app”:”billing” Selectors: env = prod release in (1.3, 1.4) app != payment • Classification mechanism • Lables • A way of tagging containers with information which may be useful for whole lifecycle • Think of them as roles - these are all my databases and these are my billing apps • Selectors • Selector leverages lables to classify - which is leveraged by Service, ReplicationController and even for querying • Some objects support set based selectors (ReplicaSet, Job etc.)
  18. 18. NODE, NAMESPACES & SECRETS Get Namespaces and nodes Node • Nodes (Earlier called minions) as such are not created by Kubernetes - they are only managed • Node controller manages lifecycle and monitors health of node and talks to underlying cloud provider to take appropriate action NameSpace • A logical space within same cluster. Default cluster is “default” • Good for organizing multiple teams/projects/units within same cluster.DNS names are appended by namespace names Secrets • Secrets are meant to handle sensitive data - passwords etc. Although at the moment only B64 encoding is supported. • Once a secret is created, it can be used in one of three ways: • As an environment variable inside a container. The referenced secret’s variable are set as environment variable. • As a file mount inside the container - mounts the decoded data inside the container. • As a ‘imagePullSecret’ - which is used to fetch image from a private image registry. Secret creation & usage
  19. 19. MORE TYPES Volume types for handling persistent data. They interact with cloud provider's storage. PetSet (Now renamed to StatefulSet) - for maanging clusters with strong identity requirements (Kafka, Elastic, Zookeeper etc.) DaemonSet - things which need to run on a set or all nodes of cluster. For example logging agents or Job - ensures a certain number of PODs execute the process and upon completion terminates. (For batch jobs)
  20. 20. DEMO • Simple Guestbook code walkthrough and creation • K8Petstore app
  21. 21. ধন্যবাদ! Dank je! Kiitos! આભાર! धन्यवाद! Grazie! Je vous remercie! ありがとうございました! ਤੁਹਾਡਾ ਧੰਨਵਾਦ! நன்றி! ధన్యవాదాలు! നന്ദി! THANK YOU! Special Thanks to Demandshore for hosting us Thanks to Cloud Native Computing Foundation Thanks a lot to you the audience who made this possible