orchestrating microservices with kubernetes

Post on 22-Jan-2018

334 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Orchestrating Microservices with Kubernetes

Jeff Hoffer, Developer Experiencegithub.com/eudaimos

What does Weave do?

Weave helps devops iterate faster with: • observability &

monitoring • continuous delivery • container networks

& firewalls

Kubernetes is our #1 platform

Agenda1. Concepts 2. Containers, Pods, Deployments, Services 3. Installing Kubernetes 4. Demos of Pods, Deployments, Services 5. Microservices sample app 6. What’s next?

Kubernetes: all you need to know

Pods

containers

Services

Deployments

Concepts

Computer

Concepts

Node

Concepts

nginx Containerimage: nginx:1.7.9

Node

web

Concepts

nginx ContainerPod

logger

Node

web

Concepts

nginx ContainerPod

logger

IP addr

Node

web

Concepts

Pod nginx

apiVersion: v1 kind: Pod metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

Node

Recap: all you need to know

Pods containers

Container Image

Docker container image, contains your application code in an isolated environment.

Pod A set of containers, sharing network namespace and local volumes, co-scheduled on one machine. Mortal. Has pod IP. Has labels.

Motivation for Deployments

Node 1

Podweb

nginx

Node 2

Motivation for Deployments

Podweb

nginx

Node 1 Node 2

Motivation for Deployments

Podweb

nginx

Node 1 Node 2

Deployment

web

nginx

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

Node 1

Deployment

web

nginx

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

Node 1

Deployment

web

nginx

Node 1 Node 2

Deployment

web

nginx

Node 1 Node 2

Deployment

web

nginx

Node 1 Node 2

Deployment

web

nginx

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 1 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

Node 1

Deployment

web

nginx

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

Node 1

Deployment

web

nginx

web

nginx

Node 1 Node 2

Recap: all you need to know

Pods containers

Deployments

Container Image

Docker container image, contains your application code in an isolated environment.

Pod A set of containers, sharing network namespace and local volumes, co-scheduled on one machine. Mortal. Has pod IP. Has labels.

Deployment Specify how many replicas of a pod should run in a cluster. Then ensures that many are running across the cluster.

Service discovery• Kubernetes provides DNS for service

discovery

Service discovery• Kubernetes provides DNS for service

discovery

WAIT! You said “service”.

What is a service?

Services: ClusterIP (internal things)

Computer 1

web

ruby

Computer 2

10.0.0.1db

pgsql

10.0.0.2

service VIP10.1.0.1DNS lookup “db”

returns A 10.1.0.1

Services: ClusterIP (internal things)

Computer 1

web

ruby

Computer 2

10.0.0.1db

pgsql

10.0.0.2

service VIP10.1.0.1

Services: NodePort (external)

Computer 1

web

nginx

web

nginx

10.0.0.1 10.0.0.2

81.23.64.18 81.23.64.19

requests requests

Computer 2

Computer 1

web

nginx

web

nginx

10.0.0.1 10.0.0.2

81.23.64.18 81.23.64.19

requests requests

Computer 2

Services: NodePort (external)NodePort 30001service VIP10.1.0.1

NodePort 30001service VIP10.1.0.1

Computer 1

web

nginx

web

nginx

10.0.0.1 10.0.0.2

81.23.64.18 81.23.64.19

requests requests

Computer 2

Services: NodePort (external)NodePort 30001service VIP10.1.0.1

NodePort 30001service VIP10.1.0.1

kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

kind: Service metadata: name: frontend spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30002

Using selectorsHow do services connect to deployments?

matches

kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9

kind: Service metadata: name: frontend spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30002

How do you expose services to outside?Using NodePort

Recap: all you need to know

Pods containers

ServicesDeployments

Container Image

Docker container image, contains your application code in an isolated environment.

Pod A set of containers, sharing network namespace and local volumes, co-scheduled on one machine. Mortal. Has pod IP. Has labels.

Deployment Specify how many replicas of a pod should run in a cluster. Then ensures that many are running across the cluster. Has labels.

Service Names things in DNS. Gets virtual IP. Two types: ClusterIP for internal services, NodePort for publishing to outside. Routes based on labels.

Architecture of Kubernetes itself

Node 1 Node 2

Master

API server

Architecture of Kubernetes itself

Node 1 Node 2

Master

API server etcd

kubeadm init

API server

Architecture of Kubernetes itself

Node 1 Node 2

Master

API server etcd

kubeadm init

kubeadm join

kubelet

API server

Architecture of Kubernetes itself

Node 1 Node 2

Master

API server etcd

kubeadm init

kubeadm join kubeadm join

kubelet kubelet

API server

Architecture of Kubernetes itself

Node 1 Node 2

Master

API server etcd

kubeadm init

kubeadm join kubeadm join

kubelet kubelet

kubectl apply

API server

Architecture of Kubernetes itself

Node 1 Node 2

Master

containersServices

containers

API server etcd

kubeadm init

kubeadm join kubeadm join

kubectl apply

kubelet kubelet

Training!

Join the Weave user group!

meetup.com/pro/Weave/ weave.works/help

What’s next?

• Continuous delivery: hooking up my CI/CD pipeline to Kubernetes

• How do I monitor this stuff? • Network policy for security

Come to our Weave Cloud training to find out!

Thanks! Questions?

We are hiring!DX in San Francisco

Engineers in London & SF

weave.works/weave-company/hiring

top related