Top Banner
Managing Redis with Kubernetes RedisConf 2016 @kelseyhightower
34

Managing Redis with Kubernetes - Kelsey Hightower, Google

Jan 16, 2017

Download

Technology

Redis Labs
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Managing Redis with Kubernetes - Kelsey Hightower, Google

Managing Redis with KubernetesRedisConf 2016@kelseyhightower

Page 2: Managing Redis with Kubernetes - Kelsey Hightower, Google

Goals

• Spark your interest in Kubernetes

• Understand what Kubernetes can and can’t do for Redis Clusters

Page 3: Managing Redis with Kubernetes - Kelsey Hightower, Google

Redis Cluster

• Automatically split your dataset among multiple nodes

• Continue operations when a subset of the nodes are experiencing failures

Page 4: Managing Redis with Kubernetes - Kelsey Hightower, Google

Redis Cluster

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

Page 5: Managing Redis with Kubernetes - Kelsey Hightower, Google

Redis Cluster - Detect Failures

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

Page 6: Managing Redis with Kubernetes - Kelsey Hightower, Google

Redis Cluster - Auto Recovery

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

Page 7: Managing Redis with Kubernetes - Kelsey Hightower, Google

Redis Cluster - Scale

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

slave

master0

Page 8: Managing Redis with Kubernetes - Kelsey Hightower, Google

Redis Cluster - Deployment Challenges

• No support for remapping of IPs or ports

• Configuration file distribution

• Service discovery

• Volume management

Page 9: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes

Page 10: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes

• Not a PaaS

• Framework for building distributed systems

• Declarative application management platform

Page 11: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

● Use for standalone Redis instances● Increase single node resource utilization

Page 12: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

● Use for standalone Redis instances● Increase single node resource utilization

Page 13: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

● Use for standalone Redis instances● Increase single node resource utilization

Page 14: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

● Use for standalone Redis instances● Increase single node resource utilization

Page 15: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

● Use for standalone Redis instances● Increase single node resource utilization

Page 16: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Page 17: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Page 18: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Page 19: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Page 20: Managing Redis with Kubernetes - Kelsey Hightower, Google

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Page 21: Managing Redis with Kubernetes - Kelsey Hightower, Google

Pods

Logical Application• One or more containers

and volumes• Shared namespaces• One IP per pod

Pod

redis

ConfigGCE

10.128.7.4

/etc/redis/redis.conf

/var/lib/redis

Page 22: Managing Redis with Kubernetes - Kelsey Hightower, Google

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Page 23: Managing Redis with Kubernetes - Kelsey Hightower, Google

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Page 24: Managing Redis with Kubernetes - Kelsey Hightower, Google

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Page 25: Managing Redis with Kubernetes - Kelsey Hightower, Google

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Page 26: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

Page 27: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

labels: app: redis

Page 28: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

redislabels: app: redis

10.131.246.27

Page 29: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

labels: app: redis name: redis-1

Page 30: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

labels: app: redis name: redis-1

redis-1 10.131.242.1

Page 31: Managing Redis with Kubernetes - Kelsey Hightower, Google

node 2

ServicesProvide a stable endpoint for one or more pods

node 1 node 3 node 4

redis-1 10.131.242.1

labels: app: redis name: redis-1

Page 32: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

redis-2redis-1 redis-3 redis-4

Page 33: Managing Redis with Kubernetes - Kelsey Hightower, Google

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

redis-1 redis-2 redis-3 redis-4

redis

Page 34: Managing Redis with Kubernetes - Kelsey Hightower, Google

Demo