apiVersion: apps/v1 kind: Deployment metadata: name: redis namespace: devops labels: app.kubernetes.io/name: redis spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: redis template: metadata: labels: app.kubernetes.io/name: redis spec: securityContext: fsGroup: 999 fsGroupChangePolicy: OnRootMismatch seccompProfile: type: RuntimeDefault containers: - name: redis image: redis:7-alpine imagePullPolicy: IfNotPresent ports: - containerPort: 6379 command: ["redis-server", "--appendonly", "yes"] volumeMounts: - name: redis-data mountPath: /data securityContext: runAsNonRoot: true runAsUser: 999 runAsGroup: 999 allowPrivilegeEscalation: false capabilities: drop: ["ALL"] seccompProfile: type: RuntimeDefault readinessProbe: exec: command: ["redis-cli", "ping"] initialDelaySeconds: 5 periodSeconds: 5 resources: requests: cpu: 50m memory: 128Mi limits: cpu: 250m memory: 256Mi volumes: - name: redis-data persistentVolumeClaim: claimName: redis-data --- # Redis AOF 数据持久化,避免 Pod 重建时丢失分布式锁和缓存状态。 // Logan.Li apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redis-data namespace: devops labels: app.kubernetes.io/name: redis spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi --- apiVersion: v1 kind: Service metadata: name: redis namespace: devops spec: selector: app.kubernetes.io/name: redis ports: - port: 6379 targetPort: 6379