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: {}
相关推荐
言之。5 小时前
K8s CoreDNS 核心知识点总结
云原生·容器·kubernetes
项目題供诗5 小时前
黑马k8s(十一)
云原生·容器·kubernetes
vvilkim5 小时前
深度解析:Redis 性能优化全方位指南
数据库·redis·性能优化
羊羊羊i6 小时前
Redis进阶知识
数据库·redis·缓存
jjkkzzzz14 小时前
Linux下的c/c++开发之操作Redis数据库
数据库·c++·redis
在未来等你15 小时前
互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
java·微服务·ai·kubernetes·大模型·embedding·spring ai
my_styles15 小时前
docker-compose部署项目(springboot服务)以及基础环境(mysql、redis等)ruoyi-ry
spring boot·redis·后端·mysql·spring cloud·docker·容器
编程、小哥哥15 小时前
互联网大厂Java面试:从Spring Boot到微服务架构的技术深挖
java·spring boot·redis·微服务·prometheus·面试技巧
hello1114-16 小时前
Redis学习打卡-Day3-分布式ID生成策略、分布式锁
redis·分布式·学习