Introducing: Kubernetes


Three Steps to Achieving
Scalable Cloud Native Apps


BrightTALK: An Intro to Kubernetes Concepts - May 11, 2017

Slides: bit.ly/3steps2k8s

presented by…

Ryan Jarvinen
Developer Advocate at CoreOS

&

Carter Morgan
Developer Advocate at Google

brought to you by ![CoreOS Logo](http://i.imgur.com/DRm4KEq.png "") Helping *Secure the Internet* with automated security updates

Three Steps

to Achieving Scalable Cloud Native Apps:


  1. Step1: Packaging your Applications

  2. Step2: Scaling your Applications

  3. Step3: Maintaining your Applications

# Step1: Packaging Applications
> "Q: How do I package and distrubte apps for mutliple cloud environments?"
# Containers!
### from monoliths to microservices ![monoliths vs microservices](http://i.imgur.com/KFkNQi2.png)
# Step2: Scaling Applications
> "Q: How do I manage containers on multiple machines?"

Needs:

  • scheduling
  • monitoring
  • scaling
  • configuration
  • service discovery
  • security
  • health
  • upgrades

Kubernetes!

Kubernetes is...

  1. Open Source, with a huge community following
  2. A container automation framework
  3. Representing years of Google-scale industry experience
  4. A distributed-solutions modeling language
# Kuberenetes Basics

Pods

  • One or more physically co-located containers
  • Shared namespaces, volumes
  • One IP address per Pod
  • Your minimum increment of scale

Labels

Arbitrary metadata attached to any API object

  • Queryable by Selectors
  • How Kubernetes does grouping

Labels

Arbitrary metadata attached to any API object

  • Queryable by Selectors
  • How Kubernetes does grouping

selector: version=v1

Labels

Arbitrary metadata attached to any API object

  • Queryable by Selectors
  • How Kubernetes does grouping

selector: track=stable

Services

Persistent IPs for Pods

  • Uses Labels to target Pods
  • Internal or External IPs

Deployments

Drive current state toward desired state

Deployments

Drive current state toward desired state

Deployments

Drive current state toward desired state

Deployments

Drive current state toward desired state

Deployments

Drive current state toward desired state

# Step3: Managing Applications
> "Q: How are application updates safely delivered?"
### Deployment strategy: `RollingUpdate`

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Rolling Updates

gradually scale workloads in production

Lessons Learned:

  1. A reliable way to package and distrubute workloads?
    Containers
  2. A reliable way to host and scale your solutions?
    Kubernetes
  3. A reliable way to manage and update your solutions?
  4. the k8s deployment model
## Ready to Give Kubernetes a Try?
## Google Container Engine (GKE) Upstream Kubernetes environments are available on-demand via Google Container Engine [cloud.google.com/container-engine/](https://cloud.google.com/container-engine/)

Upstream Kubernetes, delivered by CoreOS

  • Easily deploy and manage your own Kubernetes environments
  • Available on bare metal, or BYO cloud provider
  • Support available from CoreOS
  • Your first ten Enterprise-grade Kubernetes nodes are Free!
coreos.com/tectonic

Thank You!

from @ryanj and @_askcarter


Next Steps:

  1. Learn more: Slides, links and other materials
  2. Run your own K8s with Tectonic: coreos.com/tectonic
Runs on Kubernetes Presented by: @ryanj