layout: true background-image: url(photos/k8s-sticker.jpg) background-size: cover background-position: 50% 25% image-credit: Photo "k8s Sticker" shared by Joe Beda under a Creative Commons ( BY ) license
class: middle, center
.cblock[
Joe Beda
CTO, Heptio
]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/record.jpg) image-credit: flickr photo shared by VanDammeMaarten under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ .center[
] ] ]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/record.jpg) image-credit: flickr photo shared by VanDammeMaarten under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ cgroups:
- Resource limiting, tracking, prioritization, and isolation
- CPU, RAM, IO, Networking, etc.
- Developed by Google for over ~10 years
- "nice++"
namespaces:
- Resource visibility and naming isolation
- network, PID, users, mounts
- "chroot++"
cgroups + namespaces = "lightweight virtualization" ] ]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/record.jpg) image-credit: flickr photo shared by VanDammeMaarten under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ Containers == Docker?
- Image format: Upload, download, share, build
- API: Automatable create, delete, start, stop
- Networking: Good defaults ] ]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/record.jpg) image-credit: flickr photo shared by VanDammeMaarten under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ Users benefits:
- Packaging, deployment and reuse
- Efficiency and overcommit
- Security*
This list is in order
* Big caveats here currently ] ]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/record.jpg) image-credit: flickr photo shared by VanDammeMaarten under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ Dev → Production
- Multi-machine
- Discovery and Naming
- Scaling
- Multiple users
- Failure tolerance and recovery
- Monitoring
- Logging
- High availability
- Deployment lifecycle
- Load balancing
- etc, etc
] ]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/record.jpg) image-credit: flickr photo shared by VanDammeMaarten under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[
- Split your application into small services that can be reused, remixed and shared.
- Enables smaller, nimble, decoupled teams and processes.
- Better tooling enables and encourages microservices.
Not what I'm talking about today.
] ]
class: column-slide background-image: url(photos/ship-wheel.jpg) image-credit: flickr photo shared by Rick Galvan under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[
Kubernetes is ancient Greek for "Helmsman". Root of the word "Governor", "Cybernetics".
Kubernetes is a "Container Orchestrator" or "Cluster Manager".
- Places containers on nodes
- Recovers automatically from failure
- Basic monitoring, logging, health checking
- Enables containers to find each other.
Key component in logical infrastructure
]]
class: column-slide background-image: url(photos/ship-wheel.jpg) image-credit: flickr photo shared by Rick Galvan under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ Based on ideas proven at Google over 10 years
Everything at Google runs in a container.
Google launches 2 billion containers per week.
Part of a larger set of tools that make up the internal Google platform. ]]
class: column-slide background-image: url(photos/ship-wheel.jpg) image-credit: flickr photo shared by Rick Galvan under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ https://github.com/kubernetes/kubernetes
Very active open source project
23k stars, 1400+ contributors
Apache 2 licensed
Written in Go
Hosted by the Cloud Native Computing Foundation (CNCF) ]]
.image-credit[ {{image-credit}} ]
???
stats with git shortlog -sn --no-merges | wc
class: column-slide background-image: url(photos/ship-wheel.jpg) image-credit: flickr photo shared by Rick Galvan under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[ Extend the container goodness across nodes.
Enable operations specialization. Cluster Ops vs. App Ops
Reduce cost to run many things in production. Enables new ways of building applications. ]]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/space-needle.jpg) image-credit: flickr photo shared by Seattle Municipal Archives under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[
- declarative > imperative
- control loops
- simple > complex
- modularity
- legacy compatible
- network-centric
- labels > hierarchy
- cattle > pets
- open > closed ]]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
class: column-slide background-image: url(photos/core-memory.jpg) image-credit: flickr photo shared by dvanzuijlekom under a Creative Commons ( BY-SA ) license
.column-container[.left-column[
] .right-column[.center[ ]]]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/road.jpg) image-credit: flickr photo shared by mdalmuld under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[
- Namespaces
- Isolated workspaces for users/projects
- Ingress
- L7 load balancing
- Deployments
- Declarative version updates
- Jobs
- Run to completion
- Autoscaling
- Automatically adjust replica count
- DaemonSets
- Run something on every node (or subset) ]]
.image-credit[ {{image-credit}} ]
class: column-slide background-image: url(photos/road.jpg) image-credit: flickr photo shared by mdalmuld under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[
- Role Based Access Control (RBAC)
- Control what users have access to what objects
- Multiple Schedulers
- Flexible Scheduling Constraints
- Affinity, anti-affinity, taints, tolerations
- StatefulSet
- Support for long term stateful distributed systems
- Automatic Cluster Scaling
- K8s publishes signals that allow external services to scale the cluster automatically.
- Cloud Provider Integration
- GCP, AWS, Azure, OpenStack, vSphere
- Network Policy
- Network ingress policy ]]
class: column-slide background-image: url(photos/road.jpg) image-credit: flickr photo shared by mdalmuld under a Creative Commons ( BY ) license
.column-container[.left-column[
] .right-column[
- Platforms
- OpenStack, Deis Workflow
- Operators
- Automatic management of systems via API
- Integrates using k8s extensions
- etcd, Prometheus, elasticsearch, memcahced, mongodb, rook, etc.
- Authentication Providers
- Extended via webhook. OpenID Connect, OAuth 2, LDAP, SAML, etc.
- Already implemented on GKE and GCE.
- Helm: Package Manager
- Super easy to install applications and systems.
- Extended Network Policy ]]
class: middle, left
.cblock[
Joe Beda
@jbeda
https://www.heptio.com
]
.ccblock[
Kubernetes 101 by Joe Beda is licensed under a Creative Commons Attribution 4.0 International License.
]
.image-credit[ {{image-credit}} ]