# redis.yaml — Redis 7 缓存 (StatefulSet + Service + 持久化卷) # ---------------------------------------------------------------------------- # 组件: # - redis-headless (Headless Service): StatefulSet 稳定标识 redis-0 # - redis (ClusterIP Service): 供后端以 redis:6379 连接 # - redis (StatefulSet): 单实例 Redis 7,无密码,db 0 # 持久化: volumeClaimTemplates 2Gi + AOF/RDB 落盘 # # 部署: kubectl apply -f redis.yaml # ---------------------------------------------------------------------------- --- # Headless Service — StatefulSet 稳定标识 apiVersion: v1 kind: Service metadata: name: redis-headless namespace: devops labels: app.kubernetes.io/name: redis app.kubernetes.io/component: cache spec: clusterIP: None selector: app.kubernetes.io/name: redis ports: - name: redis port: 6379 targetPort: 6379 --- # ClusterIP Service — 供应用连接 apiVersion: v1 kind: Service metadata: name: redis namespace: devops labels: app.kubernetes.io/name: redis app.kubernetes.io/component: cache spec: type: ClusterIP selector: app.kubernetes.io/name: redis ports: - name: redis port: 6379 targetPort: 6379 --- # StatefulSet apiVersion: apps/v1 kind: StatefulSet metadata: name: redis namespace: devops labels: app.kubernetes.io/name: redis app.kubernetes.io/component: cache spec: serviceName: redis-headless replicas: 1 selector: matchLabels: app.kubernetes.io/name: redis template: metadata: labels: app.kubernetes.io/name: redis spec: containers: - name: redis image: redis:7-alpine imagePullPolicy: IfNotPresent command: ["redis-server"] args: - --appendonly yes # 开启 AOF - --save 60 1000 # RDB: 60s 内 1000 次变更快照 - --databases 1 # 仅使用 db 0 - --maxmemory 256mb - --maxmemory-policy allkeys-lru ports: - name: redis containerPort: 6379 livenessProbe: exec: command: ["redis-cli", "ping"] initialDelaySeconds: 15 periodSeconds: 10 readinessProbe: exec: command: ["redis-cli", "ping"] initialDelaySeconds: 5 periodSeconds: 10 resources: requests: cpu: 50m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: data mountPath: /data # ---- 持久化卷 (2Gi) ---- volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 2Gi # storageClassName: standard # 按集群实际 StorageClass 调整