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
相关推荐
難釋懷1 小时前
优惠卷秒杀集群环境下的并发问题
redis·缓存
青衫码上行2 小时前
NoSql数据库简介 + Redis概述
数据库·redis·nosql
江畔何人初3 小时前
k8s静态pod
云原生·容器·kubernetes
可涵不会debug3 小时前
Redis魔法学院——第四课:哈希(Hash)深度解析:Field-Value 层级结构、原子性操作与内部编码优化
数据库·redis·算法·缓存·哈希算法
fengxin_rou4 小时前
【黑马点评实战篇|第一篇:基于Redis实现登录】
java·开发语言·数据库·redis·缓存
我待_JAVA_如初恋4 小时前
Redis常用的数据类型之String
数据库·redis·缓存
u0104058365 小时前
淘客返利系统的CI/CD流水线搭建:Docker镜像构建与K8s部署实践
ci/cd·docker·kubernetes
学到头秃的suhian5 小时前
Redis跳表
redis
市场部需要一个软件开发岗位6 小时前
docker操作记录
运维·docker·容器
南墙上的石头6 小时前
docker日常使用命令汇总
docker·容器·rpc