All Projects → tangcong → codis-operator

tangcong / codis-operator

Licence: Apache-2.0 license
Codis Operator creates and manages codis clusters(proxy based Redis cluster solution) running in kubernetes.(WIP)

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to codis-operator

td-redis-operator
一款强大的云原生redis-operator,经过大规模生产级运行考验,支持分布式集群、支持主备切换等缓存集群解决方案…The powerful cloud-native redis-operator, which has passed the test of large-scale production-level operation, supports distributed clusters and active/standby switching ...
Stars: ✭ 327 (+1457.14%)
Mutual labels:  redis-cluster, operator, k8s
kube-code-generator
Kubernetes code generator docker image
Stars: ✭ 60 (+185.71%)
Mutual labels:  operator, k8s, crd
sbom-operator
Catalogue all images of a Kubernetes cluster to multiple targets with Syft
Stars: ✭ 114 (+442.86%)
Mutual labels:  operator, k8s
Etcd Cloud Operator
Deploying and managing production-grade etcd clusters on cloud providers: failure recovery, disaster recovery, backups and resizing.
Stars: ✭ 149 (+609.52%)
Mutual labels:  operator, k8s
Redis Operator
Redis Operator creates/configures/manages Redis clusters atop Kubernetes
Stars: ✭ 142 (+576.19%)
Mutual labels:  redis-cluster, operator
Tower Operator
DEPRECATED: This project was moved and renamed to: https://github.com/ansible/awx-operator
Stars: ✭ 87 (+314.29%)
Mutual labels:  operator, k8s
Litmus
Litmus helps SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGeih-xCimi3Q
Stars: ✭ 2,377 (+11219.05%)
Mutual labels:  operator, crd
Kadalu
A lightweight Persistent storage solution for Kubernetes / OpenShift using GlusterFS in background.
Stars: ✭ 239 (+1038.1%)
Mutual labels:  operator, k8s
Kanary
Kubernetes Operator to manage canary deployment using HAProxy
Stars: ✭ 14 (-33.33%)
Mutual labels:  operator, k8s
galaxykube
PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes.
Stars: ✭ 65 (+209.52%)
Mutual labels:  operator, k8s
Undermoon
Mordern Redis Cluster solution for easy operation.
Stars: ✭ 166 (+690.48%)
Mutual labels:  redis-cluster, k8s
carvel-secretgen-controller
secretgen-controller provides CRDs to specify what secrets need to be on Kubernetes cluster (to be generated or not)
Stars: ✭ 54 (+157.14%)
Mutual labels:  operator, k8s
K8s Mediaserver Operator
Repository for k8s Mediaserver Operator project
Stars: ✭ 81 (+285.71%)
Mutual labels:  operator, k8s
Deploy
Deploy Development Builds of Open Cluster Management (OCM) on RedHat Openshift Container Platform
Stars: ✭ 78 (+271.43%)
Mutual labels:  operator, k8s
Eunomia
A GitOps Operator for Kubernetes
Stars: ✭ 130 (+519.05%)
Mutual labels:  operator, k8s
Bruce Operator
The BRUCE operator.
Stars: ✭ 15 (-28.57%)
Mutual labels:  operator, k8s
Console
Management UI for MinIO and MinIO operator
Stars: ✭ 159 (+657.14%)
Mutual labels:  operator, k8s
Kooper
Kooper is a simple Go library to create Kubernetes operators and controllers.
Stars: ✭ 388 (+1747.62%)
Mutual labels:  operator, k8s
Aws Service Operator
AWS Service Operator allows you to create AWS resources using kubectl.
Stars: ✭ 750 (+3471.43%)
Mutual labels:  operator, k8s
Redis Cluster Operator
Redis Cluster Operator creates and manages Redis Clusters atop Kubernetes.
Stars: ✭ 150 (+614.29%)
Mutual labels:  redis-cluster, operator

Codis-Operator

Codis Operator creates and manages codis clusters running in kubernetes.(Notice,It is not ready for production/Work In Progress)

Advantages based on k8s

NO SPOF RISK

Codis dashboard component which does migration/cluster management work is a spof, if it is deployed by traditional method and when it fails, we have to recover it manually,however,it will be self-healing based on k8s.

Easily Create/Maintain Cluster

Codis Cluster has a lots of components(proxy/dashboard/redis/fe/sentinel).it will cost a lot of time if it is deployed and managed by traditional method,especially when nodes die,cut off,we have to recover/migrate every component manually.however,we can easily deploy/destory cluster with only one command based on k8s,and when proxy/dashboard/fe fails(node die,outage,node cut,node resource exhaustion),all these failures will be self-healing that saves much time.

Feature

Create and Destroy Codis Cluster

Deploy/Destroy cluster with only one comannd

Scaling the Codis Cluster

Automatically scales the proxy component

Automatic FailOver

Automatically performs failover when proxy/dashboard/fe failed.

Automatically monitoring Codis Cluster

Automatically deploy Prometheus,Grafana for Codis cluster monitoring.

Getting Start(Demo)

Codis Operator demo

OverView

Deploy Codis Operator

kubectl create -f ./deploy/manager/deployment-dev.yml

Create and destroy a codis cluster

kubectl create -f ./examples/sample-1.yml
kubectl delete -f ./examples/sample-1.yml

Best Practices

  • specifying coordinator name to etcd/zookeeper

  • use pv to store Redis data(ssd disk is better)

  • use dedicated node to run codis-server(Redis)

  • set max memory limit(node memory) for codis-server and assign enough memory

  • make sure request resource and limit source are equal(k8s pod qos is guaranteed,evict/oom seldom happens)

  • it is better that if your pod ip is sticky.

EXAMPLES

reference linking:

https://github.com/tangcong/codis-operator/blob/master/examples/sample-3.yml

  • using network pv(specifying storageClassName)

  • enabling hpa

  • specifying service type

  • specifying coordinator name

  • specifying request/limit resource

  • specifying scheduler policy(node selector/tolerations)

To do List

  • monitor(proxy/redis)

  • dedicated scheduler server(k8s do not know "codis group" conception, one group may have 2-N replicas, we want to make sure that every codis server pod which is in the same group be scheduled into different node, when one node crash/outage,we can promote other slave to master.)

  • make sure that drain node safely and automatically.

  • support helm

  • support local pv

  • add unit test

  • add e2e test

  • add chaos test

SNAPSHOTS

cluster info_1

cluster info_2

cluster info_3

cluster info_4

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].