k8s部署redis 7.0主从

71 阅读1分钟

k8s部署redis 7.0主从

apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-master-config
  namespace: test
  labels:
    app: redis
data:
  redis.conf: |
    # Redis configuration
    port 6379
    bind 0.0.0.0
    protected-mode yes
    save 900 1
    save 300 10
    save 60 10000
    appendonly yes
    appendfsync everysec
    requirepass NgapdBEEEU #密码
    masterauth NgapdBEEEU #密码
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-slave-config
  namespace: test
  labels:
    app: redis
data:
  redis.conf: |
    # Redis configuration for slave
    port 6379
    bind 0.0.0.0
    protected-mode yes
    save 900 1
    save 300 10
    save 60 10000
    appendonly yes
    appendfsync everysec
    requirepass NgapdBEEEU #密码
    masterauth NgapdBEEEU #密码
    replicaof redis-master 6379
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-master
  namespace: test
  labels:
    app: redis
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:7.0
        command: ["redis-server", "/etc/redis/redis.conf"]
        volumeMounts:
        - name: config-volume
          mountPath: /etc/redis
        - name: redis-data
          mountPath: /data
        ports:
        - containerPort: 6379
          name: redis
      volumes:
      - name: config-volume
        configMap:
          name: redis-master-config
          items:
          - key: redis.conf
            path: redis.conf
      - name: redis-data
        persistentVolumeClaim:
          claimName: redis-master-pvc
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-slave
  namespace: test
  labels:
    app: redis
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:7.0
        command: ["redis-server", "/etc/redis/redis.conf"]
        volumeMounts:
        - name: config-volume
          mountPath: /etc/redis
        - name: redis-data
          mountPath: /data
        ports:
        - containerPort: 6379
          name: redis
      volumes:
      - name: config-volume
        configMap:
          name: redis-slave-config
          items:
          - key: redis.conf
            path: redis.conf
      - name: redis-data
        persistentVolumeClaim:
          claimName: redis-slave-pvc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-master-pvc
  namespace: test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-slave-pvc
  namespace: test
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  namespace: test
  labels:
    app: redis
spec:
  clusterIP: None
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: master
---
apiVersion: v1
kind: Service
metadata:
  name: redis-slave
  namespace: test
  labels:
    app: redis
spec:
  clusterIP: None
  ports:
  - port: 6379
    targetPort: 6379
  selector:
    app: redis
    role: slave