%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
Â
Zero downtime-java-deployments-with-docker-and-kubernetes
1. Zero downtime Java deployments
with Docker & Kubernetes
@pbakker @arjanschaaf
2. Why care about containers
Donât worry about environment setup
Easy to replicate to dev/test/prod
More compact than VMs
3. Why care about Kubernetes
Docker is about containers on a single host
How to deploy on a cluster?
What about failover of nodes?
How to network between nodes?
12. The simplest Automated
deployment
Donât use kubectl, use the API!
Build server creates Replication Controller using REST
Build server destroys old cluster using REST
17. Pods come and go
Pods have dynamic IP addresses
First try - Kubernetes Services
A service is a proxy to your Pods
Fixed IP
P
O
D
S
Eâš
Râš
Vâš
Iâš
C
E
19. What about SSL ofïŹoading?
⊠better load balancing?
⊠redirects, rewrites, etc?
⊠and that âïŹxedâ IP canât be reached!?
Services - Not quite right
20. Services are for communication within the k8 network
(inter Pod communication)
Services - A Hammer and
screwsâŠ
28. Flannel: easy to setup & fast (on CoreOS)
Weave: userspace implementation is slow, loads of features
Project Calico: promising integration with Kubernetes
Docker libnetwork: batteries included but swappable
SDN - loads of options
29. Step
Blue / Green deployment
4
Auto deploy is great, but downtime not so much
30. Step 4 - Blue / Green
Scale up new cluster
Wait until healthy
Switch backend in Load Balancer
Dispose old cluster
31. How do we know a Pod is
healthy?
Its RUNNING status is not sufïŹcientâŠ
Is the app fully started?
32. Introduce App level health
checks
Docker
container
Docker
container
Docker
container
Docker
container
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
Deployer
GET /health
GET /health
Pods
Deploy Server
33. Running a Deployer
Blue/Green deployment requires lots of coordination
Our build server canât access the Pods
⊠how do we health check?
49. Logging
Centralised application logging is key in a dynamic
environment
Assume you canât access a pod
ElasticSearch / LogStash / Kibana or Graylog are very
useful for this