Lazy loaded image
k8s云原生运维
Redis on Kubernetes 部署实战
字数 2093阅读时长 6 分钟
2025-9-16
2025-9-16
type
status
date
slug
summary
tags
category
icon
password

文档说明

本文档详细记录了在 openEuler 22.03 (LTS-SP4) 系统上,基于 Kubernetes 1.25.1Docker 环境部署 Redis 服务及 RedisInsight 可视化管理工具的完整流程。精准整合配置管理与可视化监控,确保生产环境部署可靠性。

一、环境概览

组件
版本/配置
说明
操作系统
openEuler 22.03 (LTS-SP4)
生产环境推荐版本
Kubernetes
v1.25.1
集群节点 IP:11.0.1.80
容器运行时
Docker
默认运行时环境
Redis 镜像
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.4.5-alpine
官方 Alpine 基础镜像
RedisInsight
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redislabs/redisinsight:2.56
可视化管理工具
命名空间
middleware
专用中间件命名空间
存储类
pixiu-localstorage
本地存储类(需提前配置)
Redis 端口
NodePort 30030
外部访问端口
RedisInsight
Ingress redisinsight.k8s.cn
可视化管理入口

二、部署前准备

2.1 验证基础环境

成功标志
  • 返回存储类定义,包含 volumeBindingMode: WaitForFirstConsumer

2.2 创建专用命名空间


三、Redis 服务部署

3.1 部署持久化存储 (PVC)

redis-pvc.yaml
部署命令:
验证 PVC 状态:
正确状态变化流程
  1. 创建后立即查看:STATUSPending
  1. 无需等待,继续下一步部署
  1. 当 Pod 进入 ContainerCreating 状态时:STATUS 自动变为 Bound
  1. 最终 Pod 进入 Running 状态
⚠️ 关键说明:
  1. PVC 不会立即变为 Bound,必须等待 Pod 调度(这是 WaitForFirstConsumer 模式的核心特性)
  1. 验证时机:在创建 Deployment 后,当 Pod 状态为 ContainerCreating 时检查 PVC
  1. 使用以下命令监控状态变化:

    3.2 部署 Redis 服务(含配置管理)

    3.2.1 创建 Redis 配置 ConfigMap

    redis-config.yaml
    部署命令:

    3.2.2 部署 Redis 服务

    redis-deploy.yaml
    部署命令:

    3.3 创建 Redis 服务暴露端点

    redis-svc.yaml
    部署命令:

    四、RedisInsight 部署(可视化管理工具)

    4.1 部署 RedisInsight 持久化存储

    redisinsight-pvc.yaml
    部署命令:
    验证状态

    4.2 部署 RedisInsight 服务

    redisinsight-deploy.yaml
    部署命令:
    验证状态

    4.3 创建 RedisInsight 服务

    redisinsight-svc.yaml
    部署命令:

    4.4 配置 Ingress 暴露访问

    redisinsight-ingress.yaml
    部署命令:
    验证 Ingress
    ⚠️ 关键配置说明:
    1. runAsUser: 0:RedisInsight 需要 root 权限访问存储
    1. Ingress 需要提前配置好 nginx ingress controller
    1. 访问前需在 hosts 文件添加:11.0.1.80 redisinsight.k8s.cn

    五、服务验证

    5.1 Redis 服务验证

    5.2 RedisInsight 服务验证

    5.2.1 基础连通性测试

    5.2.2 可视化访问验证

    1. 在本地 hosts 添加:
      1. 浏览器访问:http://redisinsight.k8s.cn
      1. 首次启动需等待 2-3 分钟初始化

      5.2.3 连接 Redis 服务

      1. 登录 RedisInsight 后点击 "Add Redis Database"
      1. 配置参数:
          • Name: k8s-redis
          • Host: redis-svc.middleware.svc.cluster.local
          • Port: 6379
          • Password: your_strong_password
      1. 点击 "Add Redis Database" 完成连接
      成功标志
      • 在 RedisInsight 界面看到连接状态为 "Connected"
      • 可查看 Key 数量、内存使用等监控指标
      • 可执行命令操作 Redis 数据
      image.png
      image.png

      六、关键运维操作

      6.1 PVC 状态验证流程(核心修正)

      状态验证流程图(含 RedisInsight)

      验证步骤(实操指南)

      1. 监控 Redis 和 RedisInsight 的 PVC 状态
        1. 关键观察点
          精准成功标志
          • RedisInsight PVC 在 Pod 进入 ContainerCreating 时变为 Bound
          • RedisInsight Pod 进入 Running 状态后可通过 Ingress 访问

          6.2 RedisInsight 连接配置最佳实践

          重要提示:
          RedisInsight 需要正确配置 Redis 服务地址才能管理 Redis 实例:

          服务发现配置

          配置项
          生产环境值
          说明
          Host
          redis-svc.middleware.svc.cluster.local
          Kubernetes 内部 DNS 地址
          Port
          6379
          Redis 服务端口
          TLS
          Disabled
          根据安全需求配置
          Password
          your_strong_password
          与 redis.conf 一致

          连接测试命令


          七、故障排查指南

          RedisInsight 问题排查表

          问题现象
          原因
          解决方案
          Ingress 无法访问
          DNS 未配置或 Ingress 未生效
          1. 检查 hosts 文件<br>2. kubectl describe ingress redisinsight
          RedisInsight 启动失败
          PVC 权限问题
          添加 fsGroup: 0 到 Deployment spec
          无法连接 Redis
          网络策略限制
          1. 检查 NetworkPolicy<br>2. 验证 DNS 解析
          数据加载缓慢
          资源限制过低
          调整 resources.limits 内存至 2Gi

          诊断命令集(增强版)


          八、附录

          附录 A:RedisInsight 安全加固建议

          附录 B:生产环境检查清单

          项目
          检查命令
          预期结果
          Redis PVC 状态
          kubectl -n middleware get pvc redis-pvc
          STATUS=Bound
          RedisInsight PVC 状态
          kubectl -n middleware get pvc redisinsight-pvc
          STATUS=Bound
          Redis 服务可用
          kubectl -n middleware exec -it redis-xxx -- redis-cli ping
          PONG
          RedisInsight 健康检查
          curl <http://redisinsight:5540/health>
          {"status":"UP"}
          Ingress 可访问性
          curl -H "Host: redisinsight.k8s.cn" <http://11.0.1.80>
          HTTP 200

          运维关键提示:
          1. RedisInsight 连接关键
              • 使用 Kubernetes 内部 DNS 地址 redis-svc.middleware.svc.cluster.local
              • 不要使用 NodePort 地址(可能导致连接问题)
          1. PVC 状态验证核心原则
              • 当 Pod 进入 ContainerCreating 时,PVC 应已变为 Bound
          1. 生产环境建议:
              • 为 RedisInsight 配置 TLS 加密
              • 添加资源限制防止资源耗尽
              • 设置自动备份策略
          上一篇
          Sz-admin框架之使用oss封装组件
          下一篇
          MariaDB on Kubernetes 部署实战