Kubernetes
@erialc_w
● ops at Treeptik: - CloudUnit: Java PaaS based on
Docker
● orchestration:- on a single host with docker-
compose- on a containers cluster:
Kubernetes, mesos, swarm...
I. Docker and Kubernetes
II. Kubernetes concepts
III. Demo
Before Docker
● Dedicated machines for each service● Management (Chef, Puppet, Salt,
Ansible…)● Machines (physical, cloud)
● app dependencies, scaling, upgrade, rollbacks...
Docker Containers
Container
● process isolation● namespace isolation● own network interface● own filesystem
Microservice
● one container = one process
Docker Compose
● orchestrate containers● links● volumes-from
● on a single host !!!
Docker Swarm
● Pool of Docker hosts
● Native clustering: extends the Docker API
Kubernetes Clusters
● Open source● (Very!) Active
development● Scheduler: cluster
orchestration system
II. Kubernetes concepts
Key concepts
Pod
● smallest deployable unit● shared context
Label
● key/value pair● organize, select objects
Replication Controller
● N pods running● pod template
Service
● targets pods● long-lived
Pods
PodWebserver
Content Management
Server
● Set of containers● Settings in a template
● Flat shared networking namespace
● Shared storage volumes
Labels
● Metadata with semantic meaning
● Label selectorset of objects
Replication controllers
Replication Controller
#Pods: 2label selector: v1
Replication Controller
#Pods: 1label selector: v2
Pod Pod
Pod
v1 v1
v2
● Keeps pods running● Direct control of pods
Services
Servicelabel selector: FE
Pod
FE
● Automatically configured load balancer● Stable address● Decoupled from controller
Replication Controller
#Pods: 2label selector: FE, v1
v1
Pod
FE
v1
Scaling
Servicelabel selector: FE
Pod
FE
Replication Controller
#Pods: 2label selector: FE, v1
v1
Pod
FE
v1
Pod
FE
v1
Replication Controller
#Pods: 3label selector: FE, v1
Rolling update
Servicelabel selector: FE
Pod
FE
Replication Controller
#Pods: 3label selector: FE, v1
v1
Pod
FE
v1
Pod
FE
v1
Replication Controller
#Pods: 2label selector: FE, v2
v2 v2
III. Demo
Problems solved
● dependencies● upgrade
● scale● rollbacks
Kubernetes architecture
Node
kubelet proxy
docker
Pod
Master
API
scheduler replication controller
distributed storage
kubectl
Pod