k8s 启动一个redis

需要提前创建longhorn sc 资源

yaml 复制代码
# Redis StatefulSet 配置(开发/测试环境单副本)
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
  labels:
    app.kubernetes.io/name: redis
spec:
  serviceName: redis-headless
  replicas: 1
  # 标签选择器:匹配 Pod 模板标签
  selector:
    matchLabels:
      app.kubernetes.io/name: redis
  template:
    metadata:
      labels:
        app.kubernetes.io/name: redis
    spec:
      securityContext:
        fsGroup: 0
        runAsUser: 0
        runAsGroup: 0
      containers:
      
      - name: redis
        # 镜像与版本
        image: redis:8.4.0
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
          limits:
            cpu: 500m
            memory: 1Gi
        ports:
        - containerPort: 6379
          name: redis
          protocol: TCP
        # 环境变量配置(原 environment 直接迁移,生产环境建议用 Secret 存储密码)
        env:
        # 时区配置:统一集群时区
        - name: TZ
          value: "Asia/Shanghai"
        # 数据目录挂载
        volumeMounts:
        - name: redis-data
          mountPath: /data
          # 子路径:避免存储目录权限冲突,隔离 Redis 数据文件
          subPath: redis
        - name: redis-config
          mountPath: /etc/redis
          readOnly: true
        command: ["redis-server"]
        args: ["/etc/redis/redis.conf"]
      volumes:
      - name: redis-config
        configMap:
          name: redis-config

  # PVC 模板:为 StatefulSet 每个 Pod 自动创建专属持久化存储
  volumeClaimTemplates:
  - metadata:
      name: redis-data
      labels:
        app.kubernetes.io/name: redis
    spec:
      # 访问模式:单节点读写
      accessModes: ["ReadWriteOnce"]
      # 存储类:使用 longhorn 分布式存储
      storageClassName: "longhorn"
      # 存储资源请求:根据数据量预估配置
      resources:
        requests:
          storage: 5Gi
---
# Redis 无头服务(StatefulSet 必需,提供固定网络标识)
apiVersion: v1
kind: Service
metadata:
  name: redis-headless
  labels:
    app.kubernetes.io/name: redis

spec:
  # 无头服务标识:clusterIP=None
  clusterIP: None
  selector:
    app.kubernetes.io/name: redis

  ports:
  - name: redis
    port: 6379
    targetPort: 6379
    protocol: TCP
---
# Redis 外部访问服务(NodePort 类型,对应原端口映射 6379:6379)
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  labels:
    app.kubernetes.io/name: redis

spec:
  # 关联 Redis Pod 标签
  selector:
    app.kubernetes.io/name: redis

  # 服务类型:NodePort(开发/测试环境外部访问常用方式)
  type: NodePort
  ports:
  - name: redis
    # Service 集群内部端口
    port: 6379
    # 目标端口:映射至 Pod 暴露端口
    targetPort: 6379
    # 节点暴露端口:30000-32767 范围内,确保集群内唯一(此处沿用原端口 6379,需确认集群未占用)
    nodePort: 6379
    protocol: TCP
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-config
  labels:
    app.kubernetes.io/name: redis
data:
  redis.conf: |
    bind 0.0.0.0
    protected-mode no
    daemonize no
    pidfile /var/run/redis_6379.pid
    logfile /data/redis_6379.log
    requirepass lb781023
    user harbor on >lb781023 allcommands allkeys
相关推荐
db_cy_206233 分钟前
Docker+Kubernetes企业级容器化部署解决方案(阶段一)
docker·容器·kubernetes·云计算·负载均衡·运维开发
进阶的小名35 分钟前
[超轻量级延时队列(MQ)] Redis 不只是缓存:我用 Redis Stream 实现了一个延时MQ(自定义注解方式)
java·数据库·spring boot·redis·缓存·消息队列·个人开发
短剑重铸之日37 分钟前
《7天学会Redis》Day 6 - 内存&性能调优
java·数据库·redis·缓存·7天学会redis
DemonAvenger1 小时前
Redis数据迁移与扩容实战:平滑扩展的技术方案
数据库·redis·性能优化
last demo1 小时前
docker容器
运维·docker·容器
2501_948194981 小时前
RN for OpenHarmony AnimeHub项目实战:人气排行页面开发
redis
qq_318121591 小时前
互联网大厂Java面试故事:支付与金融服务微服务架构、消息队列与AI风控全流程解析
java·spring boot·redis·微服务·kafka·支付系统·金融服务
短剑重铸之日2 小时前
《7天学会Redis》Day 3 - 持久化机制深度解析
java·redis·后端·缓存
qq_435139572 小时前
多级缓存(Caffeine+Redis)技术实现文档
数据库·redis·缓存
Y.O.U..2 小时前
Kurbenetes-Service(1)
容器·kubernetes