K8S redis 部署的项目实践

 更新时间:2025年05月16日 09:18:17   作者:文静小土豆  
本文主要介绍了K8S redis 部署的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Kubernetes 1.26.14中部署Redis单实例/集群的步骤如下(结合NFS持久化存储与认证配置):

一、部署Redis单实例(StatefulSet模式)

1. 创建配置文件 redis-statefulset.yaml

# ConfigMap存储Redis配置
apiVersion: v1
kind: ConfigMap
metadata:
  name: redis-config
data:
  redis.conf: |
    bind 0.0.0.0
    port 6379
    requirepass your_secure_password  # 替换为实际密码
    appendonly yes
    dir /data

---
# 密码Secret
apiVersion: v1
kind: Secret
metadata:
  name: redis-secret
type: Opaque
data:
  password: eW91cl9zZWN1cmVfcGFzc3dvcmQ=  # base64编码密码

---
# StatefulSet定义
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
spec:
  serviceName: redis-headless
  replicas: 1  # 单实例
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:7.0.12
        command: ["redis-server", "/etc/redis/redis.conf"]
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: config
          mountPath: /etc/redis
        - name: data
          mountPath: /data
        env:
        - name: REDIS_PASSWORD  # 从Secret注入密码
          valueFrom:
            secretKeyRef:
              name: redis-secret
              key: password
      volumes:
      - name: config
        configMap:
          name: redis-config
  volumeClaimTemplates:  # 动态PVC
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "nfs-redis"  # 需提前创建NFS StorageClass
      resources:
        requests:
          storage: 5Gi

---
# Headless Service(内部DNS)
apiVersion: v1
kind: Service
metadata:
  name: redis-headless
spec:
  clusterIP: None
  selector:
    app: redis
  ports:
  - port: 6379
    name: redis

---
# NodePort Service(外部访问)
apiVersion: v1
kind: Service
metadata:
  name: redis-external
spec:
  type: NodePort
  selector:
    app: redis
  ports:
  - port: 6379
    targetPort: 6379
    nodePort: 31000  # 自定义端口范围30000-32767

2. 部署资源

kubectl apply -f redis-statefulset.yaml

二、部署Redis集群(6节点3主3从)

1. 调整StatefulSet配置

# 修改StatefulSet部分
spec:
  replicas: 6  # 6节点
  template:
    spec:
      containers:
      - env:
        - name: REDIS_CLUSTER_ENABLED  # 启用集群模式
          value: "yes"
# 其他部分与单实例相同

2. 初始化集群

# 进入任意Redis Pod执行集群初始化
kubectl exec -it redis-0 -- redis-cli -a your_password \
  --cluster create \
  $(kubectl get pods -l app=redis -o jsonpath='{range.items[*]}{.status.podIP}:6379 ') \
  --cluster-replicas 1

三、关键配置说明

  • 持久化存储

    • 使用NFS动态供给(需提前部署StorageClass)
    • volumeClaimTemplates自动创建PVC,数据目录/data持久化
  • 安全认证

    • 通过Secret管理密码,避免明文暴露
    • requirepass配置强制认证访问
  • 服务暴露

    • Headless Service提供内部DNS解析(redis-0.redis-headless
    • NodePort Service允许外部通过节点IP:31000访问
  • 集群模式扩展

    • 6节点部署时需手动初始化集群(redis-cli --cluster create
    • 生产环境建议使用哨兵模式(Sentinel)实现高可用

四、验证部署

# 检查资源状态
kubectl get statefulset,pvc,svc -l app=redis

# 测试单实例连接
kubectl exec -it redis-0 -- redis-cli -a your_password ping

# 查看集群状态(集群模式)
kubectl exec -it redis-0 -- redis-cli -a your_password cluster nodes

到此这篇关于K8S redis 部署的项目实践的文章就介绍到这了,更多相关K8S redis 部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Redis和springboot 整合redisUtil类的示例代码

    Redis和springboot 整合redisUtil类的示例代码

    这篇文章主要介绍了Redis和springboot 整合redisUtil类的示例代码,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 在CenOS系统下安装和配置Redis数据库的教程

    在CenOS系统下安装和配置Redis数据库的教程

    这篇文章主要介绍了在CenOS系统下安装和配置Redis数据库的教程,Redis是一个可基于内存的高性能NoSQL数据库,需要的朋友可以参考下
    2015-11-11
  • Redis的持久化方式

    Redis的持久化方式

    Redis提供了两种主要的持久化方式:RDB和AOF,RDB通过定时快照的方式保存数据状态,而AOF记录每个写操作以便于重启时重放,两者可以结合使用,且在重启时AOF文件会被优先用于数据恢复,RDB快照具有速度快、节省磁盘空间的优点,但可能会丢失最近的数据
    2024-10-10
  • 详解SSH框架和Redis的整合

    详解SSH框架和Redis的整合

    本篇文章主要介绍了SSH框架和Redis的整合,详细的介绍了Struts+Spring+Hibernate和Redis整合,有兴趣的可以了解一下。
    2017-03-03
  • 使用Redis实现延时任务的解决方案

    使用Redis实现延时任务的解决方案

    这篇文章主要介绍了使用Redis实现延时任务的解决方案,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 如何利用Redis分布式锁实现控制并发操作

    如何利用Redis分布式锁实现控制并发操作

    这篇文章主要介绍了如何利用Redis分布式锁实现控制并发操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • redis中redisson实现锁自动延时

    redis中redisson实现锁自动延时

    redisson作为分布式锁能够解决分布式的加锁解锁问题,还能够实现锁的设置存活时间以及自动续期,本文主要介绍了redis中redisson实现锁自动延时,感兴趣的可以了解一下
    2024-02-02
  • Redis报错NOAUTH Authentication required简单解决办法

    Redis报错NOAUTH Authentication required简单解决办法

    这篇文章主要给大家介绍了关于Redis报错NOAUTH Authentication required的简单解决办法,Redis无密码报错NOAUTH Authentication required的原因是客户端访问Redis时需要提供密码,但是没有提供或提供的密码不正确,需要的朋友可以参考下
    2024-05-05
  • Redis实现登录注册的示例代码

    Redis实现登录注册的示例代码

    本文主要介绍了Redis实现登录注册的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • ​Redis 实现计数器和限速器的示例代码

    ​Redis 实现计数器和限速器的示例代码

    本文主要介绍了​Redis 实现计数器和限速器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02

最新评论