kubernetes day 2017 - build, ship and run your app, production !!

41
Build, Ship and Run Your App, Production !!

Upload: tom-tsai

Post on 22-Jan-2018

513 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Build, Ship and Run Your App, Production !!

Page 2: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

HELLO!I am smalltown (Tom Tsai)

I am here because I want to share something with you

You can find me at [email protected]

Page 3: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

How Far...From Dev To Prod?

App Can Run As Container

App Can Run As Container In Prod

What The FXXK Gap?

Page 4: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 5: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 6: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

What Happened?

Page 7: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

BackgroundExist Service Wants to Migrate From AT&T Data Center to AWS

Page 8: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Technical Debt- Service Feature Out of Date

- Trap in The Infrastructure

- Without Scalability

Page 9: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Not Just Migration

- Application Refactory

- Micro Service Adoption

- Container Introducing

Page 10: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Just Only MigrationV.S.

Leverage AWS Resource

Page 11: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Comparison

AWS RESOURCE OTHERS

Database RDS Self Host

Share Storage EFS Self Host

Docker Registry ECR Self Host

... ... ...

Container Orchestration ECS Host K8S

Page 12: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Container Ecosystem

Page 13: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 14: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Container Die Anytime !- Is The Application Suit For

Living as Container?

Page 15: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Examine The Application

Stateful

Stateful Stateless

Session Centralization

Stateful

Adopt Shared Storage

Stateless

Keep Origin

App Cluster Mode + StatefulSets

Work

Page 16: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Container Liveness and Readiness- Liveness: When The App

Transition to Broken States

- Readiness: When The App Ready to Receive Traffic

Page 17: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 18: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Why Kubernetes?

◉ Both ECS & K8S Can Solve All My Problems

◉ Interoperability V.S. Vendor Lock-in

◉ Familiarity & Tight Schedule

◉ Popularity & Community

Page 19: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Kubernetes Infra.

Page 20: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Kubernetes ModuleKubernetes Master Kubernetes Worker

Etcd ClusterFlannelDockerKubelet

K8S ProxyK8S API Server

K8S Control Manager

k8S Scheduler

Etcd ProxyFlannelDockerKubelet

K8S Proxy

CoreOS: See You Later !!

Page 21: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Kubernetes Scalability

Workers Pods

Horizontal # of Workers(https://goo.gl/qrJuHE)

# of Pods(https://goo.gl/mdoZFY)

Vertical Resources for a Workers(Different EC2 Type?)

Resources for a Pod(Under Development)

Page 22: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 23: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

CoreOS Host Kubernetes

Page 24: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

How K8S Run in CoreOSK8S Master K8S Worker

Docker Container(Hyperkube)

- K8S Proxy- K8S API Server- K8S Control Manager- k8S Scheduler

Docker Container(Hyperkube)

- K8S Proxy

RKT Container- Etcd (etcd-wrapper)- Flannel (flannel-wrapper)- Kubelet (kubelet-wrapper)

Page 25: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

How To Update Core OS?!- Update Linux OS is Hard, But

Not CoreOS

Page 26: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

CoreOS Release Channel

Page 27: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

CoreOS Update Strategies

Strategy Description

reboot(Dev)

Reboot Immediately After an Update is Applied

etcd-lock(Stage or Prod)

Reboot After First Taking a Distributed Lock in Etcd

off(Prod)

Do Not Reboot After Updates are Applied

Page 28: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 29: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Avoid Add AWS Resource Manually- Using Hashicorp Terraform to Add

Public Cloud Resource

- Infrastructure As Code

Page 30: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

What is Terraform?- Building, Changing, and

Versioning Infrastructure Safely And Efficiently

- Manage Existing and Popular Service Providers

Page 31: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Not This Session- It’s a Long Story to Say...

- Refer to Here For Slide

- Refer to Here For Sample

Page 32: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

My Some Practices- Load Balancer Define in

Terraform

- EBS Persistent Volume Define in Terraform

Page 33: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 34: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Centralised V.S. Decentralised- Official Suggestion

- Ship Log By Each Node

- Ship Log By Each Pod

Page 35: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

How to Collect App Log

Collector Problem

Docker Log Driver Not Support in Kubernetes

Logstash Resource Monster

Beats Lack of Output

Fluentd Similar Logstash

Fluent Bit Lack of Output

Page 36: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Log Management

Page 37: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Docker

Monitor

Log

AWS

CoreOS

Kubernetes

Terraform

Page 38: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Monitor K8S Cluster- Container View & Cluster View

- Yes, Prometheus (Not Again)

- Another Way For Integrating With AWS ASG or SNS ?

Page 39: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Do You Remember EC2 era?- Memory and Disk Metrics for

AWS EC2 Linux Instances. (Ref)

- Turn it Into Container. (Ref)

Page 40: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Easy Monitor Cluster Status

Page 41: Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!

Any questions ?Thanks!