by Rob Richardson
Rob Richardson is a software craftsman building web properties in ASP.NET and Node, React and Vue. He's a frequent speaker at conferences, user groups, and community events, and a diligent teacher and student of high quality software development. You can find this and other talks on his blog at https://robrich.org/presentations and follow him on twitter at @rob_rich.
Industry standard container orchestration engine
best known for rolling updates and auto scaling
Given a cluster of machine(s)
We specify containers' desired state
The engine makes it happen
We don't specify which machine does what
Either Docker containers or ...
are there any others really?
Docker is an ecosystem around Container Virtualization
Light-weight kernel virtualization
A suite of command-line tools for creating, running, and managing containers
Containers virtualize and share the host kernel
Containers must run on the kernel for which they were built:
K8s: "Given a Docker image ..."
Kubernetes gets microservices
|scale / restart details|
|others||ingress, replica set, stateful set,
job, cron job, secret, etc.
apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
|v1.7 & 1.6||
apiVersion: v1 kind: Service metadata: name: nginx-service labels: app: nginx spec: selector: app: nginx type: NodePort ports: - port: 80 protocol: TCP
|no service||no traffic into pod|
|internal port on cluster|
|public port on each worker node|
|cloud's native load balancer|
kind: Service ... spec: selector: app: nginx ...
Pod.yaml (or template in Deployment.yaml)
kind: Pod metadata: labels: app: nginx ...
DEMO: yaml config files
DEMO: launch apps
DEMO: upgrade apps
It's really easy to change things.
Next time you deploy
your changes will be lost.