why kubernetes matters
TRANSCRIPT
Kubernetes & ContainersA New Era for DevOps
Sirish Raghuram,Co-founder, CEO
About UsLauren Delgado, VP Marketing• Leads marketing and education at Platform9• Open-source at Platform9, DataTorrent and
HortonWorks• Before: Developer marketing at Microsoft
Sirish Raghuram, Co-founder, CEO• Vision of Open-source-as-a-Service• Believes Kubernetes represents a fundamental
breakthrough• Before: early engineer at VMware
Context: Kubernetes & Containers•Massive interest in Containers today•Many good technology choices•We’re focussing on Containers & Kubernetes• Why is Kubernetes strategic?• How do Containers & Kubernetes help DevOps?
#1: Write Once, Run Anywhere(Any Cloud)
How does one build for hybrid?#1: Write Once, Run Anywhere (Any Cloud)
#1: Write Once, Run Anywhere (Any Cloud)•Applications and DevOps tooling “couple” to infrastructure:• Performance dependencies• Network architecture, routing, load-balancing
• Cloud provider specific constructs• AWS Auto-scaling or Cloud-formations
• Storage services• EBS, RDS
#1: Write Once, Run Anywhere (Any Cloud)•Infrastructure coupling is a long term competitive disadvantage• Economic reasons• Strategic. Examples:• On-premises companies going to SaaS• SaaS companies needing to sell on-premises• Hosting in a specific geo/region/MSP
#1: Write Once, Run Anywhere (Any Cloud)•Kubernetes eliminates infrastructure lock-in• Uses containers• Run well everywhere
• Provides management capabilities for containers• Infrastructure-agnostic• Application independent• Supports most modern DevOps scenarios
#1: Write Once, Run Anywhere (Any Cloud)
KubernetesClusters
Nodes + Networking
Resource Pools
Cloud Providers
Bare OS Bare metalBare OS
Applications
#2: Modular App Design w/ Containers
#2: Modular App Design w/ Containers•Monolithic applications make everything worse• Larger teams slow things down• Spaghetti dependencies• Lack of ownership for shared components• Path complexity to testing• Slower builds
#2: Modular App Design w/ Containers•OOP vs procedural languages: much more modular• Notion of “class”: public, private (contracts)• Separation of concerns• Extensibility and reusability• More modular code
#2: Modular App Design w/ Containers•Does the Container image boundary feel similar to the class boundary?• Yes, but…• My app requires many different collaborating
processes• We need a system - a harness - that enables modular
apps using Containers
#2: Modular App Design w/ Containers•How could we use a collection of Containers?• Let’s assume an App can be broken into n distinct
“Services”• Each Service may need a collection of Containers to
get work done
#2: Modular App Design w/ Containers•Kubernetes makes it easy to leverage Containers to modularize Apps• Apps —> Service*
An application is composed of many Services• Service —> Pod (label)*
A Service exposes some functionality and is supported by a collection of workers called Pods
• Pod —> Container*A Pod is a co-located set of Containers, sharing compute, storage and network resources
#2: Modular App Design w/ Containers
#2: Modular App Design w/ Containers•Modularity can grow over time• Services can represent Kubernetes native or external
functionality• Pods can evolve to be modular• Sidecar containers
Extend a main container. E.g. event publishers• Ambassador containers
Proxy to external systems. E.g. data loaders• Adapter containers
Enable data normalization. E.g. schema mapping
#2: Modular App Design w/ Containers•Modularity can grow over time• Start with monolithic applications• End up with micro-services• Kubernetes helps modularize, at every stage
#3: Fault-tolerant by Design
#3: Fault-tolerant by Design•Design for failure takes a lot of integration• Infrastructure provisioning and re-provisioning• Configuring networking and load balancers• Redundancy (scale-out)• Lifecycle management• Software update?
#3: Fault-tolerant by Design•Kubernetes native Services are automatically fault-tolerant• Accessed via “virtual-IP” and ports• Visible inside cluster or publicly
• Automatically replicated onto many ephemeral workers (Pods)
• Automatically load-balanced, out-of-the-box• Kubernetes built-in or cloud-provider provided
• Discoverable via DNS
#3: Fault-tolerant by Design•Kubernetes drives current state towards desired state• Desired state is what is declared• e.g. # replicas=3
• Observed state may differ over time• e.g. a replica became unreachable
• Kubernetes will find the diff and converge• Fault tolerance therefore based on desired state
#3: Fault-tolerant by Designreplicas = 2
#3: Fault-tolerant by Designreplicas = 3
#4: Deployment Control, not just Infrastructure Management
#4: Deployment, not Infrastructure•Software deployment is hard • Amplifies sins in design, testing, implementation,
infrastructure, version management, schema upgrades
• Operations teams have infrastructure management tools
• Deployment requires using ad-hoc scripting and automation
• Why is the hardest part of Ops being done ad-hoc?
#4: Deployment, not Infrastructure•Kubernetes has native support for Deployment• Controllers are in focus, not infrastructure• Infrastructure is orchestrated behind the scenes
• Deployment controller:• Deploys a scale-out Kubernetes Service• Answers queries for deployment status• Updates deployed Pods using new versions of Container
images• Rolls back to a previous version• Pauses and resumes a deployment
#4: Deployment, not Infrastructure•Deployments provide even more goodness• Horizontal auto-scaling
Dynamically scale-out Services based on compute / memory usage, within limits
• Rolling updatesSequence update of scale-out Services while meeting spare / worker downtime limits
• Canary deploymentsDeploy a new version of software side by side with previous version, route traffic progressively
#4: Deployment, not InfrastructureRolling Update
#4: Deployment, not InfrastructureRolling Update
#4: Deployment, not InfrastructureRolling Update
#4: Deployment, not InfrastructureRolling Update
#4: Deployment, not InfrastructureRolling Update
#4: Deployment, not InfrastructureRolling Update
#4: Deployment, not InfrastructureRolling Update
#5: Container Integrations for Production
#5: Container Integrations for Production•Kubernetes provides many integrations to run Containers in production• Distributing secrets without environment variables or
storing them in images• Resource QoS for Containers• Liveness and readiness probes• Termination message and pre-termination hook
FAQ: Why Not PaaS?•Kubernetes preserves more user choice• Any application, framework or language• Any middleware• Choice of source-to-image workflow• Choice of logging, monitoring and alerting systems
In Summary
Kubernetes: New Era for DevOps•Kubernetes represents a breakthrough for DevOps• Integrate applications and operations by design • Write once, run anywhere• Modular applications w/ containers• Fault-tolerant by design• Control deployments, not just infrastructure• Integrate containers for production
Platform9 Overview
About Platform9
Coolest Cloud Startup of 2015
MIT CIO Sloan FinalistTop 10 Virtualization Startup
• Founded in 2013 by early VMware engineers•Global traction since 2015•Deliver open-source as SaaS, making cloud infrastructure easy•Managed OpenStack. Managed Kubernetes. In Production Globally
Platform9 Managed Kubernetes• “SaaS Managed” SLA• Fully automated deployment• 24/7 pro-active health
monitoring and alerting• Zero-touch upgrades
•Enterprise Ready• SSO, RBAC, multi-tenancy and
security/isolation• Out of box integration with any
storage and networking infra•Multi-cloud• Run anywhere: Bare-metal,
AWS, GCE, Azure• Quotas and isolation for tenants
across clouds • Define once - deploy anywhere
Platform9 Managed Kubernetes
Platform9 Managed Kubernetes
Platform9 Managed Kubernetes
Get In Touch•Let us help you build your first Kubernetes Service• https://platform9.com/contact/• Reference: “Kubernetes webinar”
•Visit our blog• https://platform9.com/blog/• Compare Kubernetes vs Amazon ECS, Docker Swarm and Mesos
•Follow us on Twitter•@Platform9Sys•Watch for:•Kubernetes Comparison eBook•Why Kubernetes? whitepaper