Google has been using containers for over 12 years to manage applications. Kubernetes was created by Google to manage container clusters and provide basic building blocks for microservices. Kubernetes allows containers to be scheduled across a cluster, provides health checking and rolling upgrades, and handles naming, discovery, load balancing and other functions. Apigee extended Kubernetes to enable multi-tenancy and container-native API management.
10. Google confidential │ Do not distribute
Google has been developing
and using containers to
manage our applications for
over 12 years.
Images by Connie
Zhou
2B launched per week
● simplifies management
● performance isolation
● efficiency
12. we needed to do better
Clustering
Declarative app model
Agile, decoupled app architecture
Smart (ML enhanced) active management
Containers
Hermetically sealed deployment units
Efficient isolation and resource use
our Bad Old World: machine images
Everything (app and OS) bundled up in machine images
Fragile, tightly coupled apps and little resource fungibility
Low resource efficiency
a Better New World: cloud native computing
Radically enhanced developer productivity: snap together systems
Radically reduced operations overhead: rely on smart systems
Radically simpler deployments: immutable infrastructure
14. Separation of concerns = operations specialization
Separate infrastructure ops from cluster ops from app ops
Deliver common cluster services
Radically reduced operations overhead
what Google got from this
15. what Google got from this
Deeper automation = fewer bad outcomes
Higher abstraction provides more insight into behavior
Orchestration made far easier
Self-healing and self-managing systems
16. what Google got from this
Radically better physical efficiency
Containers offer efficient and fine grained resource isolation
Resource aware scheduling
Safer, less intrusive overcommitment
17. but it’s all so different
Deployment
Management, monitoring
Isolation (very complicated!)
Updates
Discovery
Scaling, replication, sets
A fundamentally different way of
managing applications requires
different tooling and abstractions
Images by Connie Zhou
18. kubernetes
Greek for “Helmsman”; also the root of the words
“governor” and “cybernetic”
Manages container clusters
Inspired and informed by Google’s experiences
and internal systems
Supports multiple cloud and bare-metal
environments
Supports multiple container runtimes
100% Open source, written in Go
Manage applications, not machines
19. Google Cloud Platform
Kubernetes at a glance
Open source production-grade container scheduling and management
● Top 0.01% of all GitHub projects: 1000+ contributors & 35,000+ commits
Run Anywhere: multi-cloud, on-prem, bare-metal, OpenStack, etc.
Broad industry adoption
Commercial Enterprise Support
Kubernetes at a glance
20. One or more containers co-scheduled,
scaled and versioned [Pods]
Automated health checking and rolling
upgrades [Replication Controller]
Decoupling of components and late
binding [Labels]
Late Binding a service endpoint that
can span multiple Pod versions
[Services]
Kubernetes Design Principles
registry
containers
Service
Pods
Each pod
contains one or
more containers
Nodes
Role:
frontend
Role:
frontend
Role:
frontend
Role:
frontend
Replication
controller
Replicas: 3
Env: prod
microservice
labels
Service
communication
channel
Blueprint
“pod
template”
Env: prod Env: prod Env: prod
Kubernetes provides the basic building blocks for Microservice patterns by providing a toolbox of primitives
for developers to compose a distributed system with pieces that operate independently
21. Kubernetes provides microservice-centric infrastructure
Once specific containers are no longer bound to specific machines/VMs,
host-centric infrastructure no longer works
Scheduling: Decide where my containers should run
Lifecycle and health: Keep my containers running despite failures
Scaling: Make sets of containers bigger or smaller
Naming and discovery: Find where my containers are now
Load balancing: Distribute traffic across a set of containers
Storage volumes: Provide data to containers
Logging and monitoring: Track what’s happening with my containers
Debugging and introspection: Enter or attach to containers
Identity and authorization: Control who can do things to my containers
22. Google Cloud Platform
Kubernetes offers choice and flexibility for Hybrid Cloud
Setting up and managing a cluster
• Choose a cloud: GCE, AWS, Azure, Rackspace, on-premises, ...
• Choose a node OS: CoreOS, Atomic, RHEL, Debian, CentOS, Ubuntu, ...
• Provision machines: create VMs, install Docker, ...
• Configure networking: IP ranges for Pods, Services, SDN, firewalls, ...
• Start cluster services: DNS, logging, monitoring, …
• Start and configure Kubernetes
• Manage nodes: kernel upgrades, OS updates, hardware failures, …
GKE is Google hosted and managed Kubernetes
• Directly uses upstream open source
• Rolls out within 3-5 business days of the latest open source release
• Alpha features also now available through ‘alpha clusters’
23. Google Cloud Platform
Google Container Engine (GKE)
“It delivers a high-performing, flexible infrastructure that lets us independently scale components for maximum efficiency”
~ Philips (Hue Lights)
“Made our engineers more productive and helped us do more work with less staff”
~ CCP Games (EVE Online)