it编程 > 数据库 > Redis

K8S redis 部署的项目实践

22人参与 2025-05-16 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

三、关键配置说明

四、验证部署

# 检查资源状态
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 部署内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Redis处理MQ消费幂等的实现示例

05-16

Nginx+keepalived配置的实现步骤

05-14

nginx中常见日志分析命令合集

05-14

Redis作为分布式锁的使用详解

05-14

Redis集群部署模式的不同实现过程

05-14

大数据量下Redis分片的5种策略分享

05-19

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论