2. VISHAL BIYANI
CTO & Founder at
infraCloud technologies (www.infracloud.io )
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
https://twitter.com/vishal_biyani
https://www.vishalbiyani.com
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. infraCloud has published a FREE eBook on
“Scaling and deploying Kubernetes”
http://info.rancher.com/deploying-scaling-kubernetes-ebook
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. 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. 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
http://kubernetes.io/docs/whatisk8s/)
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. 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. 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: http://kubernetes.io/docs/getting-started-guides
Platform9
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. 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. 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. 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=10.0.0.11
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. SERVICE TYPES
ExternalName (Kubenretes 1.5 onwards)
• Maps to a external provided CNAME like service.orgname.com
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. 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. 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. 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)
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