最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
本小节演示的Operator是由UCloud开源的一个项目,项目地址为,打开此链接可以看到详细的操作文档。
创建一个具有6个实例的Redis集群。
首先需要下载该项目至服务器:
之后创建对应的CRD,然后就可以通过这些CRD声明一个创建Redis集群的YAML文件:
假设需要将Redis集群部署至redis-cluster命名空间,需要先创建redis-cluster命名空间和对应的一些权限,并且将Operator控制器安装至该命名空间:
查看Redis Operator的Pod状态:
接下来通过一个自定义类型的YAML文件一键式启动一个三主三从的节点:
创建完成后,可以通过查看自定义distributedrediscluster资源的状态来判断Redis集群是否完成了初始化:
当状态由Scaling变成了Healthy(此过程可能需要30分钟左右的时间),即表示Redis集群已经创建完成,并完成了槽的配置,此时已经可以正常使用:
在创建Redis集群后,会创建如下几个Service:
其中example-distributedrediscluster为程序端用来操作Redis集群的Service名称,可以通过redis://example-distributedrediscluster.redis-cluster:6379链接至该集群。
接下来,可以使用任意具有Redis客户端工具的Pod进行连接测试,比如使用drc-example-distributedrediscluster-0-0这个Pod进行测试,首先登录至该Pod:
当访问的key不在当前redis节点上时,redis服务器会返回一个Moved响应给到客户端,之后客户端连接Moved响应中的地址对应的redis服务器,在k8s中,Moved响应中返回的地址是Pod的IP。
在Kubernetes集群外部的客户端无法正常使用Kubernetes中的Redis集群,因为在它需要MOVED时,会返回一个Pod的IP,这个IP为Kubernetes内部IP。
标准的Kubernetes不会让外部网络和其直接通信,如果需要集群外部连接至Kubernetes内部的Redis集群,可以采用Redis集群的代理工具进行解决
在自定义资源的配置中,参数masterSize决定了该集群一共有多少个Master节点,clusterReplicas参数决定了每个Master节点有几个从节点。
如果想要扩容该集群,只需要更改这两个参数即可。
比如将集群扩容为具有4个Master节点的集群:
再次查看Pod,会发现创建了两个新的Pod:
此时集群的状态又会变成Scaling状态:
注意在扩容和缩容的过程中,Redis集群是不可用状态,所以最好在非业务时间段进行扩容。
如果只是用来测试和学习,在操作完成后可以清理该集群,清理步骤较传统架构简单,只需要将安装小节的create改成delete即可: