资讯动态

K8s 部署 Redis 6.2.3 集群

发布时间:2026/10/27 18:18:38 来源:尧图企业网站定制
一、安装规划组件replicas类型Redis6StatefulSetredis-trib1Deployment使用k8s版本为v1.18.0。本次使用OpenEBS来作为存储引擎OpenEBS是一个开源的、可扩展的存储平台它提供了一种简单的方式来创建和管理持久化存储卷。它支持各种存储后端包括但不限于ZFS、Btrfs、XFS等。同时OpenEBS具有高度的可扩展性和可配置性可以满足不同的存储需求。使用redis-trib管理Redis集群。redis-trib是官方提供的Redis Cluster的管理工具可以检查集群、创建删除节点、删除key、批量下发实例命令等等。如果没有安装OpenEBS需要先安装 kubectl apply-fhttps://openebs.github.io/charts/openebs-operator.yaml验证OpenEBS是否正确安装kubectl get pods-nopenebs所有的OpenEBS pods都处于Running状态表示正常。创建StorageClass这里使用OpenEBS的hostpath模式viredis-local-storage.ymlapiVersion:storage.k8s.io/v1kind:StorageClassmetadata:name:redis-local-storageannotations:openebs.io/cas-type:localcas.openebs.io/config:|- name: StorageType value: hostpath - name: BasePath value: /data/openebs/redisprovisioner:openebs.io/localreclaimPolicy:DeletevolumeBindingMode:WaitForFirstConsumerkubectl apply-fredis-local-storage.yml创建命名空间后面所有的操作均在此命名空间下执行vins.ymlapiVersion:v1kind:Namespacemetadata:name:redislabels:name:rediskubectl apply-fns.yml二、部署 Redis 集群节点viredis.ymlapiVersion:v1kind:Servicemetadata:name:redis-hlnamespace:redislabels:app:redis-hlspec:ports:-port:6379name:clientclusterIP:Noneselector:app:redis---apiVersion:v1kind:Servicemetadata:name:redis-npnamespace:redislabels:app:redis-npspec:type:NodePortports:-port:6379name:clientnodePort:31639targetPort:6379selector:app:redis---apiVersion:v1kind:ConfigMapmetadata:name:redis-confignamespace:redislabels:app:redis-configdata:redis.conf:| cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-require-full-coverage no cluster-migration-barrier 1 appendonly yes---apiVersion:apps/v1kind:StatefulSetmetadata:name:redisnamespace:redisspec:serviceName:redis-hlreplicas:6selector:matchLabels:app:redistemplate:metadata:labels:app:redisspec:containers:-name:redisimage:redis:6.2.3ports:-containerPort:6379name:servercommand:[redis-server,/etc/redis/redis.conf]volumeMounts:-name:redis-configmountPath:/etc/redis/redis.confsubPath:redis.conf-name:redis-datamountPath:/datavolumes:-name:redis-configconfigMap:name:redis-configvolumeClaimTemplates:-metadata:name:redis-dataspec:accessModes:[ReadWriteOnce]storageClassName:redis-local-storageresources:requests:storage:5Gikubectl apply-fredis.yml查看podkubectl get pods-nredis三、部署 redis-trib 工具viredis-trib.ymlapiVersion:apps/v1kind:Deploymentmetadata:name:redis-tribnamespace:redislabels:app:redis-tribspec:replicas:1selector:matchLabels:app:redis-tribtemplate:metadata:name:redis-triblabels:app:redis-tribspec:containers:-name:redis-tribimage:sunnywang/redis-tools-ubuntu:v0.5.1imagePullPolicy:IfNotPresentargs:-/bin/bash--c-sleep 3600kubectl apply-fredis-trib.yml查看podkubectl get pods-nredis四、初始化 Redis 集群进入到redis-trib pod中注意改成你环境中的名称kubectlexec-itredis-trib-596696b5cb-z2fg2-nredis -- /bin/bash初始化主节点这里规划redis-0、redis-1、redis-2为主节点redis-trib.py createdigshort redis-0.redis-hl.redis.svc.cluster.local:6379digshort redis-1.redis-hl.redis.svc.cluster.local:6379digshort redis-2.redis-hl.redis.svc.cluster.local:6379然后为每个主节点添加副本节点为redis-0添加redis-3副本节点redis-trib.py replicate --master-addrdigshort redis-0.redis-hl.redis.svc.cluster.local:6379 --slave-addrdigshort redis-3.redis-hl.redis.svc.cluster.local:6379为redis-1添加redis-4副本节点redis-trib.py replicate --master-addrdigshort redis-1.redis-hl.redis.svc.cluster.local:6379 --slave-addrdigshort redis-4.redis-hl.redis.svc.cluster.local:6379为redis-2添加redis-5副本节点redis-trib.py replicate --master-addrdigshort redis-2.redis-hl.redis.svc.cluster.local:6379 --slave-addrdigshort redis-5.redis-hl.redis.svc.cluster.local:6379连接任意redis节点查看集群状态redis-cli-hredis-0.redis-hl-c查看集群信息cluster info查看集群节点cluster nodes测试读写五、故障测试这里测试手动杀掉其中一个Redis节点让K8s重新拉起服务使其原有的ip改变看是否影响集群。首先查看当前的ip信息kubectl get pods-nredis-owide可以看到此时reids-0的ip是10.244.2.106下面进到其node主机上查看docker进程dockerps|grepredis-0直接强制删除这俩容器dockerrm-f34b60c4eb470 045dfbd9bc5ak8s会很快再次拉起该服务再次查看每个pod的ipkubectl get pods-nredis-owide可以看出reids-0的ip已经变成了10.244.2.110再次连接任意reids节点redis-cli-hredis-0.redis-hl-c查看集群信息cluster info可以看到此时集群状态依然是ok并且集群节点还是6个。查看集群节点cluster nodes可以看出新ip10.244.2.110已经加入集群测试写数据可以看出重定向到新ip写入依然正常。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑