lipl

记录精彩的程序人生

Open Source, Open Mind,
Open Sight, Open Future!
  menu
8 文章
0 浏览
0 当前访客
ღゝ◡╹)ノ❤️

k8s部署六节点redis 集群

k8s部署六节点redis 集群

1.创建 redis 配置文件,转换为configMap
cat > redis.conf << EOF
protected-mode no
appendonly yes
cluster-enabled yes
cluster-config-file /var/lib/redis/nodes.conf
cluster-node-timeout 5000
dir /var/lib/redis
port 6379
EOF

kubectl create configmap redis-conf --from-file=redis.conf -n 名称空间
2.创建pvc 动态生成 pv
cat > redis-pvc.yaml << EOF
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: redis-pro
spec:
  accessModes:  ["ReadWriteMany"]
  resources:
    requests:
      storage: 1Gi
  storageClassName:  redis-pro
EOF
3.创建svc
cat > redis-svc.yaml << EOF
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  labels:
    app: redis
spec:
  ports:
  - name: redis-port
    port: 6379
  clusterIP: None
  selector:
    app: redis
    appCluster: redis-cluster
EOF
4.创建 StatefulSet
cat > redis-StatefulSet.yaml << EOF
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-app
spec:
  serviceName: "redis-service"
  replicas: 6
  selector:
    matchLabels:
      app: redis
      appCluster: redis-cluster
  template:
    metadata:
      labels:
        app: redis
        appCluster: redis-cluster
    spec:
      containers:
      - name: redis
        image: redis
        imagePullPolicy: IfNotPresent
        command: ["/bin/bash", "-ce", "tail -f /dev/null"]
        command: ["redis-server"]
        args:
          - "/etc/redis/redis.conf"
          - "--protected-mode"
          - "no"
        ports:
            - name: redis
              containerPort: 6379
              protocol: "TCP"
            - name: cluster
              containerPort: 16379
              protocol: "TCP"
        volumeMounts:
          - name: "redis-conf"
            mountPath: "/etc/redis"
          - name: "redis-data"
            mountPath: "/var/lib/redis"
      volumes:
      - name: "redis-conf"
        configMap:
          name: "redis-conf"
          items:
            - key: "redis.conf"
              path: "redis.conf"
  volumeClaimTemplates:
  - metadata:
      name: redis-data
    spec:
      accessModes: [ "ReadWriteMany" ]
      storageClassName: redis-pro
      resources:
        requests:
          storage: 1Gi
EOF
5.使用redis-trib工具创建redis集群,通过docker构建
docker pull inem0o/redis-trib

kubectl describe pod redis-app | grep IP	#查看下每个 pod 的 ip

docker run --rm -ti inem0o/redis-trib create --replicas 1 172.16.43.41:6379 172.16.43.40:6379 172.16.43.18:6379 172.16.43.20:6379 172.16.43.52:6379 172.16.43.53:6379

// 在开启集群后,redis-cli用普通用户登录无法操作集群中的数据,需要加上-c 用集群模式登录才可进行操作。

标题:k8s部署六节点redis 集群
作者:lipl666
地址:http://www.lipeilong.space:8088/articles/2025/09/04/1756973834881.html