目录
使用redis-operator部署redis-cluster集群:
摘要:
记录使用operator-hub中的redis-operator组建cluster集群的操作手册
redis-operator的代码仓库:
https://github.com/ot-container-kit/redis-operator
使用redis-operator部署redis-cluster集群:
一. 安装crd资源
执行安装crd命令:
make install
执行结果:
[root@node-201 redis-operator]# make install
/root/work/redis-operator/bin/controller-gen "crd:trivialVersions=true,preserveUnknownFields=false" rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
/root/work/redis-operator/bin/kustomize build config/crd | kubectl apply -f -
customresourcedefinition.apiextensions.k8s.io/redis.redis.redis.opstreelabs.in configured
customresourcedefinition.apiextensions.k8s.io/redisclusters.redis.redis.opstreelabs.in configured
查看crd:
[root@node-201 redis-operator]# kubectl get crd
NAME CREATED AT
applications.apps.hello.org 2022-03-15T09:25:40Z
guestbooks.webapp.com.bolingcavalry 2022-03-14T10:51:25Z
redis.redis.redis.opstreelabs.in 2022-03-14T11:01:10Z
redisclusters.redis.redis.opstreelabs.in 2022-03-14T11:01:10Z
二. 编译controller
执行编译controller命令
make
命令执行结果:
[root@node-201 redis-operator]# make
'/root/work/redis-operator/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
go fmt ./...
go vet ./...
kubebuilder edit
go build -gcflags=all="-N -l" -o bin/manager main.go
三. 启动controller进程
启动 ./bin/manager可执行文件即可
./bin/manager
启动后日志:
[root@node-201 redis-operator]# ./bin/manager
1.647499103461668e+09 INFO controller-runtime.metrics Metrics server is starting to listen {"addr": ":8040"}
1.647499103462062e+09 INFO setup starting manager
1.6474991034624867e+09 INFO Starting server {"kind": "health probe", "addr": "[::]:8041"}
1.6474991034624867e+09 INFO Starting server {"path": "/metrics", "kind": "metrics", "addr": "[::]:8040"}
1.6474991034627392e+09 INFO controller.redis Starting EventSource {"reconciler group": "redis.redis.opstreelabs.in", "reconciler kind": "Redis", "source": "kind source: *v1beta1.Redis"}
1.6474991034627922e+09 INFO controller.rediscluster Starting EventSource {"reconciler group": "redis.redis.opstreelabs.in", "reconciler kind": "RedisCluster", "source": "kind source: *v1beta1.RedisCluster"}
四. 部署redis-cluster的cr
执行命令
kubectl apply -f example/redis-cluster.yaml
查看cr:
[root@node-201 redis-operator]# kubectl get RedisCluster
NAME CLUSTERSIZE LEADERREPLICAS FOLLOWERREPLICAS AGE
redis-cluster 6 3
五. 查看redis的cluster集群的组建情况:
查看pod
[root@node-201 redis-operator]# kubectl get pods -o wide | grep redis
redis-cluster-follower-0 1/1 Running 0 26m 10.168.1.11 node-202 <none> <none>
redis-cluster-follower-1 1/1 Running 0 26m 10.168.0.34 node-201 <none> <none>
redis-cluster-follower-2 1/1 Running 0 25m 10.168.2.101 node-203 <none> <none>
redis-cluster-leader-0 1/1 Running 0 26m 10.168.1.10 node-202 <none> <none>
redis-cluster-leader-1 1/1 Running 0 26m 10.168.0.33 node-201 <none> <none>
redis-cluster-leader-2 1/1 Running 0 25m 10.168.2.100 node-203 <none> <none>
查看redis的cluster集群信息:
[root@node-201 redis-operator]# kubectl exec redis-cluster-leader-0 -- redis-cli cluster nodes
84a5a1fabef77ed9d2136ce87c59fdc49ed9cdb8 10.168.0.34:6379@16379 slave ef08e674515a726c8be271235abea2fd300e7d69 0 1647499250529 2 connected
ef08e674515a726c8be271235abea2fd300e7d69 10.168.0.33:6379@16379 master - 0 1647499250000 2 connected 5461-10922
1643d026495ae20e765a1fc673ba960333e1a1dd 10.168.2.101:6379@16379 slave ac44cc072210ae7d87eb50a61d67f0b4bb69651a 0 1647499250630 3 connected
78c7403f708a6953234e3f00699db3feb53cd0d7 10.168.1.11:6379@16379 slave c2b626621a888d587fe58f3ccaf78cef3ff65303 0 1647499250529 1 connected
c2b626621a888d587fe58f3ccaf78cef3ff65303 10.168.1.10:6379@16379 myself,master - 0 1647499250000 1 connected 0-5460
ac44cc072210ae7d87eb50a61d67f0b4bb69651a 10.168.2.100:6379@16379 master - 0 1647499250000 3 connected 10923-16383