Share
Embed
Transcript
54 slides
-
@saturnism @googlecloud #kubernetes Ray Tsang Developer Advocate Google Cloud Platform
@saturnism | +RayTsang 請參加 http://gcpug.tw/ -
@saturnism @googlecloud #kubernetes “ ” SRE is what happens when
you ask a software engineer to design and run operations. Ben Treynor Sloss 24x7 VP, Google -
@saturnism @googlecloud #kubernetes Package & Deployment application.ear app.war helloworld-service.jar guestbook-service.jar
apache-xyz.jar application.war /... helloworld-service.jar guestbook-service.jar apache-xyz.jar -
@saturnism @googlecloud #kubernetes Machine app.war / app.ear Application Server Kernel
Shell / CLI / Tools Machine app.war / app.ear Application Server Kernel Shell / CLI / Tools Machine app.war / app.ear Application Server Kernel Shell / CLI / Tools -
@saturnism @googlecloud #kubernetes Everything at Google runs in containers Launch
over 2 billion containers per week. -
@saturnism @googlecloud #kubernetes job hello_world = { runtime = {
cell = 'ic' } // Cell (cluster) to run in binary = '.../hello_world_webserver' // Program to run args = { port = '%port%' } // Command line parameters requirements = { // Resource requirements ram = 100M disk = 100M cpu = 0.1 } replicas = 5 // Number of tasks } 10000 Developer View -
@saturnism @googlecloud #kubernetes web browsers BorgMaster link shard UI shard
BorgMaster link shard UI shard BorgMaster link shard UI shard BorgMaster link shard UI shard Scheduler borgcfg web browsers scheduler Borglet Borglet Borglet Borglet Config file BorgMaster link shard UI shard persistent store (Paxos) Binary Developer View What just happened? -
@saturnism @googlecloud #kubernetes Hello world! Hello world! Hello world! Hello
world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Image by Connie Zhou Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! Hello world! -
@saturnism @googlecloud #kubernetes Kubernetes Greek for “Helmsman”; also the root
of the words “governor” and “cybernetic” • Infrastructure for containers • Schedules, runs, and manages containers on virtual and physical machines • Platform for automating deployment, scaling, and operations • Inspired and informed by Google’s experiences and internal systems • 100% Open source, written in Go -
@saturnism @googlecloud #kubernetes web browsers Scheduler kubectl web browsers scheduler
Kubelet Kubelet Kubelet Kubelet Config file Kubernetes Master Container Image Developer View What just happened? -
@saturnism @googlecloud #kubernetes Hello World Service - Greet Guestbook Service
- Create Guestbook Service - Retrieve -
@saturnism @googlecloud #kubernetes Guestbook UI Hello World Service Redis session
replication greeting MySQL Guestbook Service CRUD -
Confidential & Proprietary Google Cloud Platform 33 jfrog.com/artifactory/free-trial-google-cloud-platform/ Learn more
on GCP: cloud.google.com/free-trial -
@saturnism @googlecloud #kubernetes Challenges Which host machine(s) should each service
run on? Avoid port conflicts? How does the application code find the Guest Book service? How do we keep all of these service running? What happens if a host machine has trouble? Are the services healthy? How do we scale when load changes? Run this in another environment? QA, dev, another cloud, your servers? -
@saturnism @googlecloud #kubernetes Developer View spec: containers: - name: myservice
image: myservice resources: limits: memory: "128Mi" cpu: "0.1" ports: - containerPort: 3306 protocol: TCP replicas: 1 10000 -
@saturnism @googlecloud #kubernetes Group of containers Live and die together
Shared network interface Shared volumes Unique Routable IP Pod App Log Collector Pods ... -
@saturnism @googlecloud #kubernetes Pod IPs are routable • Docker default
is private IP Pods can reach each other without NAT • even across nodes No brokering of port numbers This is a fundamental requirement • several SDN solutions Inter-Pods Networking -
@saturnism @googlecloud #kubernetes Label anything Name-value pair Make your own
Pod App Log Collector Labels ... type = Frontend version = 1.0 -
@saturnism @googlecloud #kubernetes Replication Controller Replicas → 2 Pod frontend
Pod App Log Collector ... type = Frontend version = 1.0 Pod App Log Collector ... type = Frontend version = 1.0 Replication Controllers -
@saturnism @googlecloud #kubernetes Replication Controller Replicas → 1 Pod App
Log Collector ... type = Frontend version = 1.0 Replication Controllers -
@saturnism @googlecloud #kubernetes Replication Controllers node 1 f0118 node 3
node 4 node 2 d9376 b0111 a1209 Replication Controller - Desired = 4 - Current = 4 -
@saturnism @googlecloud #kubernetes Replication Controllers node 1 f0118 node 3
node 4 node 2 Replication Controller - Desired = 4 - Current = 4 d9376 b0111 a1209 -
@saturnism @googlecloud #kubernetes Replication Controllers node 1 f0118 node 3
node 4 Replication Controller - Desired = 4 - Current = 3 b0111 a1209 -
@saturnism @googlecloud #kubernetes Replication Controllers node 1 f0118 node 3
node 4 Replication Controller - Desired = 4 - Current = 4 b0111 a1209 c9bad -
@saturnism @googlecloud #kubernetes Replication Controller Replicas → 2 Pod frontend
Pod type = Frontend version = 1.0 Pod type = Frontend version = 1.0 Services Service Label selectors: version = 1.0 type = Frontend -
@saturnism @googlecloud #kubernetes Pod frontend Pod type = Frontend version
= 1.0 Pod type = Frontend version = 1.0 Services Service Label selectors: version = 1.0 type = Frontend Pod type = Frontend version = 2.0 -
@saturnism @googlecloud #kubernetes Pod frontend Pod type = Frontend version
= 1.0 Pod type = Frontend version = 1.0 Services Service Label selectors: type = Frontend Pod type = Frontend version = 2.0 -
@saturnism @googlecloud #kubernetes Service discovery Read service IP addresses via
environmental variables