Kubernetes, the rising tide of systems administration Containers and cloud have moved from "why" to "how and when?" Learn how Google is helping the world go Cloud Native.
7. The Anatomy of a Large-Scale Hypertextual Web Search Engine
1996, Sergey Brin and Lawrence Page
Computer Science Department, Stanford University, Stanford,
CA 94305
18. Google Cloud Platform 18
Application containers
Lightweight Linux
environment
Hermetically sealed,
deployable application
Introspectable, runnable
artifact
19. Google Cloud Platform 19
Resource
isolation
Predictability
Quality of Service
Batch vs.
interactive
Containers
at Google
Resource
accounting
Efficient overcommit
22. Google Cloud Platform 22
Efficiency
Optimized packing, better scaling
Performance
Active environment tuning
Continuous integration
Easy and reliable
Robustness
Active monitoring, self healing
23. Google Cloud Platform 23
Containers at Google
We launch over
2 Billion
containers per week.
Google Cloud Platform 23
24.
25. Google Cloud Platform 25
web browsers
BorgMaster
link shard
UI shardBorgMaster
link shard
UI shardBorgMaster
link shard
UI shardBorgMaster
link shard
UI shard
Cell
Scheduler
borgcfg web browsers
scheduler
Borglet Borglet Borglet Borglet
BorgMaster
link shard
read/UI
shard
Config
file
persistent store
(Paxos)
Binary
33. Google Cloud Platform 33
Greek for “Helmsman”:
the root of the word “governor” and “cybernetic”
● Container orchestrator
● Builds on Docker containers
○ also supporting other container technologies
● Multiple cloud and bare-metal environments
● Supports existing OSS apps
○ cannot require apps becoming cloud-native
● Inspired and informed by Google’s
experiences and internal systems
● 100% Open source, written in Go
Let users manage applications, not machines
κυβερνήτης
34. Google Cloud Platform 34
web browsers
BorgMaster
link shard
UI shardBorgMaster
link shard
UI shardBorgMaster
link shard
UI shardBorgMaster
link shard
UI shard
Cluster
Scheduler
kubectl web browsers
scheduler
kubelet kubelet kubelet kubelet
k8s Master
controller manager
API
server
Config
file
persistent store
(etcd)
Binary
35. Google Cloud Platform 35
● 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
Kubernetes abstracts away:
36. Google Cloud Platform 36
● Kubernetes is one of the three legs of Cloud Native
○ Takes in container packaged apps
○ Emits microservices architectures
● Announced June 2014, in GA since June 2015
● 1.4 is due out in 1 week!
● Under half the code is now written by Google
● Stewarded by the Cloud Native Compute Foundation™
○ A Linux Foundation Collaborative Project™
Kubernetes history
37. Google Cloud Platform 37
Kubernetes is stable
● Concrete ideas from 10 years of production experience
○ and mistakes!
● v1 API; breaking changes held until v2
● Alpha, Beta and GA tracks for new features
● Thorough end-to-end testing
● New work taking place outside of core
○ Volume & network plugins
○ Custom controllers
○ ThirdPartyResources
38. Google Cloud Platform 38
Kubernetes has a solid core
● Core primitives:
○ pods, services, volumes, labels, controllers, etc
● Continual improvement using these basic concepts
○ Ingress: connect a load balancer to a Service
○ ReplicaSet: fungible replicas
○ DaemonSet: put a pod on every node
○ Job: batch workloads
○ ScheduledJob: run a Job at a certain time (cron)
42. laptop$ kubeadm --help
kubeadm: bootstrap a secure Kubernetes cluster easily.
/==========================================================
| KUBEADM IS ALPHA, DO NOT USE IT FOR PRODUCTION CLUSTERS! |
| |
| But, please try it out! Give us feedback at: |
| https://github.com/kubernetes/kubernetes/issues |
| and at-mention @kubernetes/sig-cluster-lifecycle |
==========================================================/
Example usage:
Create a two-machine cluster with one master (which controls the cluster),
and one node (where workloads, like pods and containers run).
On the first machine
====================
master# kubeadm init master
Your token is: <token>
On the second machine
=====================
node# kubeadm join node --token=<token> <ip-of-master>
43.
44. Google Cloud Platform 44Google Cloud Platform 44
More efficient and happier operations teams
More reliable infrastructure and applications
More efficient usage of resources
Lower business risk