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: {}
相关推荐
dalianwawatou11 分钟前
云原生-k8s
云原生·容器·kubernetes
荣光波比25 分钟前
K8S(四)—— Kubectl从入门到精通:K8s资源管理与项目生命周期实战指南
云原生·容器·kubernetes
荣光波比29 分钟前
K8S(五)—— K8s中YAML文件全方位解析:语法、案例、Port详解与快速编写技巧
云原生·容器·kubernetes
野犬寒鸦1 小时前
从零起步学习Redis || 第十章:主从复制的实现流程与常见问题处理方案深层解析
java·服务器·数据库·redis·后端·缓存
阿巴~阿巴~3 小时前
Centos 7/8 安装 Redis
linux·服务器·数据库·redis·centos
AI浩4 小时前
Redis中的RPOP、BRPOP、LPOP 和 BLPOP
数据库·chrome·redis
张忠琳4 小时前
volcano scheduler v1.3.0源码分析之启动流程
云原生·kubernetes·volcano
東雪蓮☆6 小时前
K8S 概念、安装与核心工作机制详解
linux·运维·云原生·容器·kubernetes
Mr.wangh6 小时前
Redis作为分布式锁
数据库·redis·分布式
胖咕噜的稞达鸭7 小时前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法