当前位置: 首页 > java >正文

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.0port 6379requirepass your_secure_password  # 替换为实际密码appendonly yesdir /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-headlessreplicas: 1  # 单实例selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: redis:7.0.12command: ["redis-server", "/etc/redis/redis.conf"]ports:- containerPort: 6379volumeMounts:- name: configmountPath: /etc/redis- name: datamountPath: /dataenv:- name: REDIS_PASSWORD  # 从Secret注入密码valueFrom:secretKeyRef:name: redis-secretkey: passwordvolumes:- name: configconfigMap:name: redis-configvolumeClaimTemplates:  # 动态PVC- metadata:name: dataspec:accessModes: [ "ReadWriteOnce" ]storageClassName: "nfs-redis"  # 需提前创建NFS StorageClassresources:requests:storage: 5Gi---
# Headless Service(内部DNS)
apiVersion: v1
kind: Service
metadata:name: redis-headless
spec:clusterIP: Noneselector:app: redisports:- port: 6379name: redis---
# NodePort Service(外部访问)
apiVersion: v1
kind: Service
metadata:name: redis-external
spec:type: NodePortselector:app: redisports:- port: 6379targetPort: 6379nodePort: 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

三、关键配置说明

  1. 持久化存储

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

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

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

    • 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
http://www.xdnf.cn/news/6232.html

相关文章:

  • 火线、零线、地线
  • 【HALCON】 HALCON 教程:正确使用 `get_dict_tuple` 获取字典内容
  • win11 VSCode 强制弹窗微软登录
  • 【数据管理平台测试文档】
  • 40-canvas中文字的横向对齐方式
  • CSS 锚点滑动效果的技术
  • NDM:高效全能的下载工具
  • 【设计模式】- 创建者模式
  • 2011-2020年各省粗离婚率数据
  • 记录: Windows下远程Liunx 系统xrdp 用到的一些小问题(免费踩坑 记录)
  • Qwen3模型架构、训练方法梳理
  • 因果推断 | 用SHAP分值等价因果效应值进行反事实推理
  • 怎样将MM模块常用报表设置为ALV默认格式(MB52、MB5B、ME2M、ME1M等)
  • Redis实现-优惠卷秒杀(基础版本)
  • 数据安全学习指南(1.0版本)
  • 开发指南112-样式的优先级别
  • Ascend的aclgraph(七)AclConcreteGraph:capture_begin
  • prisma连接关系型数据库如mysql数据库并完善用户的增删改查
  • ROOM 数据库 | 实现自定义 ContentProvider 插入数据
  • 30天通过软考高项-第九天
  • LeetCode 55. 跳跃游戏(中等)
  • 多线程(三)
  • 团结引擎 1.5.0 发布,抖音小游戏平台即将开放、Shader Graph功能新增…引擎能力再提升!
  • 深入探索局域网技术:从理论到实战
  • 如何下载 Microsoft SQL Server Management Studio 2019
  • 最大子段和(就是之前总结线性dp思想)
  • 现代垃圾收集器
  • 公路水运安全员A证备考要点
  • 如何解决电脑蓝屏错误代码:Oxc0000098
  • OSS-承载数据的巨轮