k8s用StatefulSet部署redis

打印 上一主题 下一主题

主题 1016|帖子 1016|积分 3048

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
redis-config.yaml  (配置文件)
  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4.   name: redis-config
  5. data:
  6.   redis.conf: |
  7.     # Redis general configuration
  8. ​    bind 0.0.0.0
  9. ​    protected-mode no
  10. ​    port 6379
  11. ​    dir /data
  12. ​    appendonly yes
  13.   sentinel.conf: |
  14.     sentinel monitor mymaster redis-master 6379 2
  15.     sentinel down-after-milliseconds mymaster 5000
  16.     sentinel failover-timeout mymaster 10000
  17.     sentinel parallel-syncs mymaster 1
复制代码
redis-master-statefulset.yaml (主)
  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4.   name: redis-master
  5. spec:
  6.   serviceName: "redis-master"
  7.   replicas: 1
  8.   selector:
  9.     matchLabels:
  10.       app: redis
  11.       role: master
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: redis
  16.         role: master
  17.     spec:
  18.       containers:
  19.       - name: redis
  20.         image: redis:5.0.7
  21.         command: ["redis-server", "/data/redis.conf"]
  22.         volumeMounts:
  23.         - name: redis-data
  24.           mountPath: /data
  25.         - name: config
  26.           mountPath: /data/redis.conf
  27.           subPath: redis.conf
  28.       volumes:
  29.       - name: config
  30.         configMap:
  31.           name: redis-config
  32.   volumeClaimTemplates:
  33.   - metadata:
  34.     name: redis-data
  35.     spec:
  36.       storageClassName: "nfs-client-storageclass"
  37.       accessModes: [ "ReadWriteOnce" ]
  38.       resources:
  39.         requests:
  40.           storage: 1Gi
复制代码
redis-slave-statefulset.yaml (从)
  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4.   name: redis-slave
  5. spec:
  6.   serviceName: "redis-slave"
  7.   replicas: 2
  8.   selector:
  9.     matchLabels:
  10.       app: redis
  11.       role: slave
  12.   template:
  13.     metadata:
  14.       labels:
  15.         app: redis
  16.         role: slave
  17.     spec:
  18.       containers:
  19.       - name: redis
  20.         image: redis:5.0.7
  21.         command: ["redis-server", "/data/redis.conf", "--slaveof", "redis-master", "6379"]
  22.         volumeMounts:
  23.         - name: redis-data
  24.           mountPath: /data
  25.         - name: config
  26.           mountPath: /data/redis.conf
  27.           subPath: redis.conf
  28.       volumes:
  29.       - name: config
  30.         configMap:
  31.           name: redis-config
  32.   volumeClaimTemplates:
  33.   - metadata:
  34.     name: redis-data
  35.     spec:
  36.       accessModes: [ "ReadWriteOnce" ]
  37.       storageClassName: "nfs-client-storageclass"
  38.       resources:
  39.         requests:
  40.           storage: 1Gi
复制代码
redis-service.yaml (端口)
  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4.   name: redis-master
  5. spec:
  6.   ports:
  7.   - port: 6379
  8.     targetPort: 6379
  9.       selector:
  10.     app: redis
  11.     role: master
  12. ---
  13. apiVersion: v1
  14. kind: Service
  15. metadata:
  16.   name: redis-slave
  17. spec:
  18.   ports:
  19.   - port: 6379
  20.     targetPort: 6379
  21.       selector:
  22.     app: redis
  23.     role: slave
  24. ---
  25. apiVersion: v1
  26. kind: Service
  27. metadata:
  28.   name: redis-sentinel
  29. spec:
  30.   ports:
  31.   - port: 26379
  32.     targetPort: 26379
  33.       selector:
  34.     app: redis
  35.     role: sentinel
复制代码
 redis-sentinel-statefulset.yaml (哨兵)
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: redis-sentinel
  5. spec:
  6.   replicas: 3
  7.   selector:
  8.     matchLabels:
  9.       app: redis
  10.       role: sentinel
  11.   template:
  12.     metadata:
  13.       labels:
  14.         app: redis
  15.         role: sentinel
  16.     spec:
  17.       # 使用 initContainer 复制并修改权限
  18.       initContainers:
  19.       - name: copy-config
  20.         image: busybox:1.27
  21.         command: ['sh', '-c', 'cp /data/sentinel.conf /tmp/sentinel.conf && chmod 644 /tmp/sentinel.conf']
  22.         volumeMounts:
  23.         - name: config
  24.           mountPath: /data
  25.         - name: sentinel-config
  26.           mountPath: /tmp
  27.      # Redis Sentinel 容器
  28.        containers:
  29.        - name: sentinel
  30.          image: redis:5.0.7
  31.          command: ["redis-sentinel", "/tmp/sentinel.conf"]
  32.          volumeMounts:
  33.          - name: sentinel-config
  34.            mountPath: /tmp
  35.       # 卷定义
  36.        volumes:
  37.        - name: config
  38.          configMap:
  39.            name: redis-config
  40.        - name: sentinel-config
  41.          emptyDir: {}
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表