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

如何使用k8s安装redis呢

在Kubernetes (k8s) 上安装Redis
在Kubernetes上安装Redis有几种方法,下面我将介绍两种常见的方式:使用StatefulSet直接部署和使用Helm chart部署。
一、安装redis
1.1 拉去ARM镜像(7.4.2)

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_redis:latest

1.2 拉去x86镜像(8.0.1)版本

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest

方法一:使用StatefulSet部署Redis
首先创建一个Redis的配置文件ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:name: redis-config
data:redis.conf: |bind 0.0.0.0protected-mode noport 6379tcp-backlog 511timeout 0tcp-keepalive 300daemonize nosupervised nopidfile /var/run/redis_6379.pidloglevel noticelogfile ""databases 16always-show-logo yessave 900 1save 300 10save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir /data

创建Redis的StatefulSet和Service:

apiVersion: apps/v1
kind: StatefulSet
metadata:name: redis
spec:serviceName: redisreplicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latestports:- containerPort: 6379name: redisvolumeMounts:- name: redis-datamountPath: /data- name: redis-configmountPath: /usr/local/etc/redis/redis.confsubPath: redis.confvolumes:- name: redis-configconfigMap:name: redis-configitems:- key: redis.confpath: redis.confvolumeClaimTemplates:- metadata:name: redis-dataspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 1Gi
---
apiVersion: v1
kind: Service
metadata:name: redis
spec:ports:- port: 6379targetPort: 6379selector:app: redis
kubectl apply -f redis-configmap.yaml
kubectl apply -f redis-statefulset.yaml

方法二:使用Helm安装Redis
如果你已经安装了Helm,这是更简单的方法:

添加Bitnami仓库(包含Redis chart):

helm repo add bitnami https://charts.bitnami.com/bitnami

安装Redis:

helm install redis registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest

获取密码(如果启用了认证):

export REDIS_PASSWORD=$(kubectl get secret --namespace default my-redis -o jsonpath="{.data.redis-password}" | base64 --decode)

连接Redis:

kubectl run --namespace default edis-client --rm --tty -i --restart='Never' \--env REDIS_PASSWORD=$REDIS_PASSWORD \--image registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest -- bash
redis-cli -h redis-master -a $REDIS_PASSWORD
redis-cli -h redis-replicas -a $REDIS_PASSWORD

验证安装

kubectl get pods
kubectl logs <redis-pod-name>

完整版本 redis-deployment-all.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: redis-deployment
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latestports:- containerPort: 6379env:- name: REDIS_PASSWORDvalue: "87vhqEneQ5u8"volumeMounts:- name: redis-logmountPath: /var/log/redis/- name: redis-datamountPath: /datacommand: ["redis-server", "--appendonly", "yes", "--requirepass", "$(REDIS_PASSWORD)"]volumes:- name: redis-logemptyDir: {}- name: redis-dataemptyDir: {}---
apiVersion: v1
kind: Service
metadata:name: redis-service
spec:type: NodePortports:- port: 6379targetPort: 6379nodePort: 30379selector:app: redis

应用配置:

kubectl apply -f  redis-deployment-all.yaml

第三种:

完整的 Redis 部署配置(包含 PV 和 PVC)
首先创建 PersistentVolume (PV):

apiVersion: v1
kind: PersistentVolume
metadata:name: redis-pv
spec:capacity:storage: 1GiaccessModes:- ReadWriteOncehostPath:path: /data/redispersistentVolumeReclaimPolicy: Retain

创建 PersistentVolumeClaim (PVC):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1Gi

修改你的 Deployment 使用 PVC 而不是 emptyDir:

apiVersion: apps/v1
kind: Deployment
metadata:name: redis-deployment
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisspec:containers:- name: redisimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latestports:- containerPort: 6379env:- name: REDIS_PASSWORDvalue: "87vhqEneQ5u8"volumeMounts:- name: redis-logmountPath: /var/log/redis/- name: redis-datamountPath: /datacommand: ["redis-server", "--appendonly", "yes", "--requirepass", "$(REDIS_PASSWORD)"]volumes:- name: redis-logemptyDir: {}- name: redis-datapersistentVolumeClaim:claimName: redis-pvc

Service 配置保持不变:

apiVersion: v1
kind: Service
metadata:name: redis-service
spec:type: NodePortports:- port: 6379targetPort: 6379nodePort: 30379selector:app: redis

如何使用这些配置
依次应用这些配置文件:

kubectl apply -f redis-pv.yaml
kubectl apply -f redis-pvc.yaml
kubectl apply -f redis-deployment.yaml
kubectl apply -f redis-service.yaml

验证资源是否创建成功:

kubectl get pv
kubectl get pvc
kubectl get pods
kubectl get svc

访问 Redis:
集群内部访问: 使用服务名 redis-service 和端口 6379
集群外部访问: 使用节点 IP 和 30379 端口

http://www.lqws.cn/news/187165.html

相关文章:

  • 深入理解 Python `asyncio` 的子进程协议(Subprocess Protocol)
  • C++算法-动态规划2
  • 数据库优化秘籍:解锁性能提升的 “潘多拉魔盒”
  • OpenLayers 分屏对比(地图联动)
  • 记录一个用了很久的git提交到github和gitee比较方便的方法
  • JDK8之后的新特性
  • React源码阅读-fiber核心构建原理
  • 【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
  • QPair 类说明
  • 水库大坝安全监测系统是什么?需要用到哪些设备?
  • 1.3 古典概型和几何概型
  • 2025.6.5学习日记 Nginx主目录文件 .conf介绍、热部署 定时日志切割
  • 实战设计模式之模板方法模式
  • Go 中的 Map 与字符处理指南
  • 如何使用Webhook触发器,在 ONLYOFFICE 协作空间构建智能工作流
  • C++中的概念(Concepts)
  • 自然语言处理的发展
  • 数字孪生恰似企业的“智能军师”,精准助力决策
  • 【python基础知识】 *args, **kwargs介绍
  • 一篇文章实现Android图片拼接并保存至相册
  • 深入了解linux系统—— 进程池
  • Redis哨兵模式
  • CSS 性能优化
  • 微信小程序动态效果实战指南:从悬浮云朵到丝滑列表加载
  • 密码学基础——SM4算法
  • spring重试机制
  • 一种全新的非对称加密算法
  • 从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
  • 金融系统渗透测试
  • 交易所系统攻坚:高并发撮合引擎与合规化金融架构设计