简体   繁体   中英

How do I select the master Redis pod in this Kubernetes example?

Here's the example I have modeled after.

In the Readme's "Delete our manual pod" section:

  1. The redis sentinels themselves, realize that the master has disappeared from the cluster, and begin the election procedure for selecting a new master. They perform this election and selection, and chose one of the existing redis server replicas to be the new master.

How do I select the new master? All 3 Redis server pods controlled by the redis replication controller from redis-controller.yaml still have the same

labels:
  name: redis

which is what I currently use in my Service to select them. How will the 3 pods be distinguishable so that from Kubernetes I know which one is the master?

How will the 3 pods be distinguishable so that from Kubernetes I know which one is the master?

Kubernetes isnt aware of the master nodes. You can find the pod manually by connecting to it and using:

redis-cli info

You will get lots of information about the server but we need role for our purpose:

redis-cli info | grep ^role
Output:
role: Master

Please note Replication controllers are replaced by Deployments for stateless services. For stateful services use Statefulsets .

Your client Redis library can actually handle this. For example with ioredis :

ioredis guarantees that the node you connected to is always a master even after a failover.

So, you actually connect to a redis-sentinel instead of a redis-client .

We need to do the same thing and tried different things like modifying chart. Finally, just created a simple python docker that does the labeling and created chart that expose the master redis as service. This periodically checked the pods create for redis-ha and label them according to their role ( master/ slave)

It uses the same sentinel commands to find the master/slave.

helm chart redis-pod-labeler here source repo

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM