Upload
ow2-consortium
View
148
Download
0
Embed Size (px)
Citation preview
The Anatomy of a Large-Scale Hypertextual Web Search Engine
1996, Sergey Brin and Lawrence PageComputer Science Department, Stanford University, Stanford, CA 94305
Google is living a few years in the future, and sending the rest of us messages
Doug Cutting, Hadoop creator November 2013“ ”
Google Cloud Platform 18
Application containers
Lightweight Linux environment
Hermetically sealed,
deployable application
Introspectable, runnable artifact
Google Cloud Platform 19
Resource isolation
Predictability
Quality of Service
Batch vs. interactive
Containers at Google
Resource accounting
Efficient overcommit
Google Cloud Platform 22
EfficiencyOptimized packing, better scaling
Performance Active environment tuning
Continuous integrationEasy and reliable
RobustnessActive monitoring, self healing
Google Cloud Platform 23
Containers at Google
We launch over2 Billioncontainers per week.
Google Cloud Platform 23
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
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
κυβερνήτης
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
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:
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
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
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)
Google Cloud Platform 39
Kubernetes has a healthy ecosystemSome examples:
● Cloud providers: Azure, VMware, Openstack, Rackspace, CenturyLink● Distros: CoreOS Tectonic, Mirantis Murano (OpenStack), RedHat
Atomic, Hyper.sh, VMTurbo● PaaS: RedHat OpenShift, Deis, Rancher, WSO2, Gondor/Kel, Apcera● CD: Fabric8, Shippable, CloudBees, Solano● Deployment: Kumoru, Redspread, Spinnaker● Package managers: Helm, KPM● Monitoring: Prometheus, Sysdig, Datadog● Networking: Weaveworks, Tigera, OpenContrail● Storage: NetApp, ClusterHQ● Appliances: Redapt, Diamante
laptop$ kubeadm --helpkubeadm: 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>
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