managing redis with kubernetes - kelsey hightower, google

34
Managing Redis with Kubernetes RedisConf 2016 @kelseyhightower

Upload: redis-labs

Post on 16-Jan-2017

1.397 views

Category:

Technology


1 download

TRANSCRIPT

Managing Redis with KubernetesRedisConf 2016@kelseyhightower

Goals

• Spark your interest in Kubernetes

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

Redis Cluster

• Automatically split your dataset among multiple nodes

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

Redis Cluster

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

Redis Cluster - Detect Failures

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

Redis Cluster - Auto Recovery

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

Redis Cluster - Scale

master0 - 5460

slave slave slave

master5461-10922

master10923-16383

slave

master0

Redis Cluster - Deployment Challenges

• No support for remapping of IPs or ports

• Configuration file distribution

• Service discovery

• Volume management

Kubernetes

Kubernetes

• Not a PaaS

• Framework for building distributed systems

• Declarative application management platform

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

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

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

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

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

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

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

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

Kubernetes - Scheduling (Bin Packing)

node 1 node 2 node 3 node 4

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

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

Kubernetes - Scheduling (Spread)

node 1 node 2 node 3 node 4

● Use for Redis cluster instances● Increase availability

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

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

Drives current state towards desired state

app: redisreplicas: 1

ReplicaSets

node 1 node 2 node 3 node 4

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

labels: app: redis

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

redislabels: app: redis

10.131.246.27

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

labels: app: redis name: redis-1

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

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

ServicesProvide a stable endpoint for one or more pods

node 1 node 2 node 3 node 4

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

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

Demo