k8s部署redis两主两从集群并初始化集群

本文介绍了如何在k8s环境中部署一个包含两个主节点和两个从节点的Redis集群。首先,部署了ceph存储并创建了PV的storageClass。接着,配置了redis.conf文件并挂载到configMap。然后,为Redis创建了headless服务和外部访问端口的service。当所有pod运行正常后,发现集群状态为fail,通过redis-trib工具进行了集群初始化。最后,验证了集群的初始化成功,并测试了主从切换功能。
摘要由CSDN通过智能技术生成

1. 部署ceph存储创建pv的storageClass

2. 配置redis.conf配置文件到并挂载到configmap

# cat redis-configmap.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-conf
  namespace: redis-test
data:
  update-node.sh: |
    #!/bin/sh
    REDIS_NODES="/data/nodes.conf"
    sed -i -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES}
    exec "$@"
  redis.conf: |+
    cluster-enabled yes
    cluster-config-file /data/nodes.conf
    cluster-node-timeout 10000
    protected-mode no
    daemonize no
    pidfile /var/run/redis.pid
    port 6379
    tcp-backlog 511
    bind 0.0.0.0
    timeout 3600
    tcp-keepalive 1
    loglevel verbose
    logfile /data/redis.log
    databases 16
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir /data
    #requirepass yl123456
    appendonly yes
    appendfilename "appendonly.aof"
    appendfsync everysec
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    lua-time-limit 20000
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    #rename-command FLUSHALL  ""
    latency-monitor-threshold 0
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-entries 512
    list-max-ziplist-value 64
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    activerehashing yes
    client-output-buffer-limit normal 0 0 0
    client-output-buffer-limit slave 256mb 64mb 60
    client-output-buffer-limit pubsub 32mb 8mb 60
    hz 10
    aof-rewrite-incremental-fsync yes

创建configmap并查看状态

# 创建configmap配置文件
[root@master redis]# kubectl apply -f redis-configmap.yaml 
service/redis-service created
configmap/redis-conf created
statefulset.apps/redis-app created

# 查看configmap
[root@master redis]# kubectl get configmap -n redis-test
NAME         DATA   AGE
redis-conf   1      49m

3. 给redis创建个headness,然后再给redis暴露一个外部端口

# cat redis-headless.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  namespace: redis-test
spec:
  type: ClusterIP
  clusterIP: None
  ports:
  - port: 6379
    targetPort: 6379
    name: client
  - port: 16379
    targetPort: 16379
    name: gossip
  selector:
    app: redis
---
apiVersion: v1
kind: Service
metadata:
  name: redis-nodeport
  namespace: redis-test
spec:
  type: NodePort
  ports:
  - name: client
    port: 6379
    targetPort: 6379
    nodePort: 36379
  selector:
    app: redis

 创建service并查看状态

# 创建headless服务查看状态
[root@master redis]# kubectl apply -f r
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值