k8s用StatefulSet部署redis

redis-config.yaml (配置文件)

bash 复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-config
data:
  redis.conf: |

    # Redis general configuration

​    bind 0.0.0.0
​    protected-mode no
​    port 6379
​    dir /data
​    appendonly yes

  sentinel.conf: |
    sentinel monitor mymaster redis-master 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 10000
    sentinel parallel-syncs mymaster 1

redis-master-statefulset.yaml (主)

bash 复制代码
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-master
spec:
  serviceName: "redis-master"
  replicas: 1
  selector:
    matchLabels:
      app: redis
      role: master
  template:
    metadata:
      labels:
        app: redis
        role: master
    spec:
      containers:
      - name: redis
        image: redis:5.0.7
        command: ["redis-server", "/data/redis.conf"]
        volumeMounts:
        - name: redis-data
          mountPath: /data
        - name: config
          mountPath: /data/redis.conf
          subPath: redis.conf
      volumes:
      - name: config
        configMap:
          name: redis-config
  volumeClaimTemplates:

  - metadata:
    name: redis-data
    spec:
      storageClassName: "nfs-client-storageclass"
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi

redis-slave-statefulset.yaml (从)

bash 复制代码
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-slave
spec:
  serviceName: "redis-slave"
  replicas: 2
  selector:
    matchLabels:
      app: redis
      role: slave
  template:
    metadata:
      labels:
        app: redis
        role: slave
    spec:
      containers:
      - name: redis
        image: redis:5.0.7
        command: ["redis-server", "/data/redis.conf", "--slaveof", "redis-master", "6379"]
        volumeMounts:
        - name: redis-data
          mountPath: /data
        - name: config
          mountPath: /data/redis.conf
          subPath: redis.conf
      volumes:
      - name: config
        configMap:
          name: redis-config
  volumeClaimTemplates:

  - metadata:
    name: redis-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfs-client-storageclass"
      resources:
        requests:
          storage: 1Gi

redis-service.yaml (端口)

bash 复制代码
apiVersion: v1
kind: Service
metadata:
  name: redis-master
spec:
  ports:

  - port: 6379
    targetPort: 6379
      selector:
    app: redis
    role: master

---

apiVersion: v1
kind: Service
metadata:
  name: redis-slave
spec:
  ports:

  - port: 6379
    targetPort: 6379
      selector:
    app: redis
    role: slave

---

apiVersion: v1
kind: Service
metadata:
  name: redis-sentinel
spec:
  ports:

  - port: 26379
    targetPort: 26379
      selector:
    app: redis
    role: sentinel

redis-sentinel-statefulset.yaml (哨兵)

bash 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-sentinel
spec:
  replicas: 3
  selector:
    matchLabels:
      app: redis
      role: sentinel
  template:
    metadata:
      labels:
        app: redis
        role: sentinel
    spec:
      # 使用 initContainer 复制并修改权限
      initContainers:
      - name: copy-config
        image: busybox:1.27
        command: ['sh', '-c', 'cp /data/sentinel.conf /tmp/sentinel.conf && chmod 644 /tmp/sentinel.conf']
        volumeMounts:
        - name: config
          mountPath: /data
        - name: sentinel-config
          mountPath: /tmp
     # Redis Sentinel 容器
       containers:
       - name: sentinel
         image: redis:5.0.7
         command: ["redis-sentinel", "/tmp/sentinel.conf"]
         volumeMounts:
         - name: sentinel-config
           mountPath: /tmp
      # 卷定义
       volumes:
       - name: config
         configMap:
           name: redis-config
       - name: sentinel-config
         emptyDir: {}
相关推荐
小园子的小菜34 分钟前
Redis 核心原理深度解析:从数据结构、IO 模型到持久化机制
数据库·redis·缓存
风曦Kisaki10 小时前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
Crazy________14 小时前
k8s部署若依微服务架构流程,v3.6.6
运维·云原生·容器·kubernetes·状态模式
BullSmall15 小时前
Another Redis Desktop Manager(ARDM)下载指南
数据库·redis·缓存
xiaoxiangsiyan17 小时前
GitLab CI/CD 自托管(EE 企业版)+ Kubernetes Runner 集群 + ArgoCD(GitOps 部署)
运维·网络·ci/cd·容器·kubernetes·gitlab·argocd
PC2005-cloud17 小时前
KubeSphere 安装到插件管理实战:本地 K8s 搭建可视化容器平台
云原生·容器·kubernetes
nvd1118 小时前
ArgoCD 双层轮询深入拆解:从 redis-app.yaml 注册到缓存重建的完整链路
redis·缓存·argocd
xiaoxiangsiyan18 小时前
LNMP + Redis Sentinel 高可用架构部署手册(续)
运维·网络·数据库·redis·缓存·架构·sentinel
CodeHackerBhx19 小时前
Spring Boot 4 防重复提交:从接口幂等到 Redis 分布式锁的完整实践
java·数据库·spring boot·redis·分布式
沉迷学习 日益消瘦19 小时前
19-集群升级与维护
kubernetes