K8S operator方式部署redis-cluster
K8S部署redis-cluster-operator
開源地址
https://github.com/ucloud/redis-cluster-operator
一、概述
Redis Cluster Operator用于管理基于k8s的Redis Cluster
該operator基于Operator framework之上(https://github.com/operator-framework/operator-sdk)
每個master node和slave node由一個statefulset管理,每個statefulset創建一個headless svc, 所有的node創建一個clusterIP service。
每個statefulset使用PodAntiAffinity來確保master和slave部署在不同的node上。同時,當operator在一個statefulset上選擇master時,他優先選擇不同k8s nodes上的pod作為master。
二、Features
自定義master nodes的數量和replica nodes的數量
Password
安全地擴容Redis Cluster
備份和恢復
持久化卷
自定義配置
Prometheus發現
三、使用redis-cluster-operator
3.1、部署一個redis cluster operator
注冊CRD(Custom Resource Definition):
$ kubectl create -f deploy/crds/redis.kun_distributedredisclusters_crd.yaml $ kubectl create -f deploy/crds/redis.kun_redisclusterbackups_crd.yaml關鍵配置:
masterSize: format: int32 type: integer minimum: 3 maximum: 10 clusterReplicas: format: int32 type: integer minimum: 1 maximum: 3 serviceName: type: string pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'CRD的生命周期包括namespace和cluster,cluster > namespace:
// cluster-scoped $ kubectl create -f deploy/service_account.yaml $ kubectl create -f deploy/cluster/cluster_role.yaml $ kubectl create -f deploy/cluster/cluster_role_binding.yaml $ kubectl create -f deploy/cluster/operator.yaml// namespace-scoped $ kubectl create -f deploy/service_account.yaml $ kubectl create -f deploy/namespace/role.yaml $ kubectl create -f deploy/namespace/role_binding.yaml $ kubectl create -f deploy/namespace/operator.yaml這樣查看redis-cluster-operator是否運行:
$ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE redis-cluster-operator 1/1 1 1 1d部署一個redis cluster:
$ kubectl apply -f deploy/example/redis.kun_v1alpha1_distributedrediscluster_cr.yaml擴容Redis Cluster:
apiVersion: redis.kun/v1alpha1 kind: DistributedRedisCluster metadata:annotations:# if your operator run as cluster-scoped, add this annotationsredis.kun/scope: cluster-scopedname: example-distributedrediscluster spec:# Increase the masterSize to trigger the scaling.masterSize: 4ClusterReplicas: 1image: redis:5.0.4-alpine縮容Redis Cluster:
apiVersion: redis.kun/v1alpha1 kind: DistributedRedisCluster metadata:annotations:# if your operator run as cluster-scoped, add this annotationsredis.kun/scope: cluster-scopedname: example-distributedrediscluster spec:# Increase the masterSize to trigger the scaling.masterSize: 3ClusterReplicas: 1image: redis:5.0.4-alpine總結
以上是生活随笔為你收集整理的K8S operator方式部署redis-cluster的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【收藏】最详细的cmder配置
- 下一篇: docker-compose部署prom