首页 > 数据库 >Helm Chart 部署 Redis 的完美指南

Helm Chart 部署 Redis 的完美指南

时间:2023-12-15 14:11:06浏览次数:39  
标签:部署 Redis redis Chart chart helm Helm

目录

一、Helm介绍

Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前已经打包好的yaml文件部署到kubernetes上。

三个基本概念:

  1. Chart:Chart 代表着 helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。
  2. Repository:是 chart 的存储库。例如:https://charts.bitnami.com/bitnami
  3. Release:Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。

二、安装Helm

wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
tar -xvf helm-v3.13.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm

安装完后可以使用 helm version 查看版本

三、配置Helm的repository

# 添加仓库
helm repo add bitnami https://charts.bitnami.com/bitnami

# 也可以添加国内的一些库(阿里云等)
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

添加完成后可以使用 helm list 查看repo列表:

四、部署chart(以部署redis为例)

1. 搜索chart
# 查找redis
helm search repo redis

搜索出来可以看到有单机的redis或者集群的redis-cluster,APP VERSION表示redis的版本。

2. 拉取chart
# 拉取redis
helm pull bitnami/redis

拉取下来是一个tgz的压缩包,需要进行解压 tar -xvf redis-18.5.0.tgz ,解压后会得到一个redis目录,里面包含了redis的各种配置文件和启动文件。

Chart.yaml # 包含了chart的一些基本信息
charts # 该目录保存其他依赖的 chart
templates # chart 配置模板,用于渲染最终的 Kubernetes YAML 文件
NOTES.txt # 用户运行 helm install 时候的提示信息
values.yaml # 定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的

3. 修改values.yaml的一些配置(简单演示一下基本的配置)
  • global部分修改redis密码,如果有动态存储可以加上你提前建好的storgeClass,保证数据持久性;

  • architecture部分表示这个redis是集群还是单节点运行,如果集群改为replication,单节点改为standalone

  • service部分修改redis的服务,包括端口,是否对外访问,这里我们不对外,就改为ClusterIP

4. 启动chart
helm install redis-cluster ./redis/ -n redis

# redis-cluster表示部署的名称
# ./redis/ 表示chart的本地路径,这里为当前目录下的reids
# -n redis 表示命名空间,可以提前创建一个redis的命令空间

启动后会有一些提示,包括告诉你如何进入redis容器内,对外暴露端口等一些操作。

# 查看redis是否启动成功
kubectl get all -n redis

可以看到redis这个chart的所有状态都为running,一主三从,进入redis终端内验证,使用刚刚配置的密码登录redis:

kubectl exec -it redis-master-0 -n redis bash

创建一些数据 set name kubernetes ,然后在从节点验证数据是否存在。

可以看到从节点已经获取到刚刚创建的name,但是在从节点创建数据是不行的,从节点只能读取数据。

5. 升级和回滚
a. 升级

我们在刚刚已经创建了一个redis的chart,实际生产环境中,可能需要修改一些配置,然后基于这个chart对我们应用进行升级。

例如,我们这里修改一些redis的密码,然后升级这个chart,我们编辑一下values.yaml把开头创建的密码“redis123”改成“redis456”。

# 升级redis
helm upgrade redis-cluster ./redis/ -n redis

# redis-cluster表示部署的名称
# ./redis/ 表示chart的本地路径,这里为当前目录下的reids
# -n redis 表示命名空间,可以提前创建一个redis的命令空间

可以从时间看到我们的pod刚刚进行了更新,并且状态都处于running状态,然后进入容器进行验证,当我们输入之前的密码“redis123”,会报错说密码不正确,输入更新后的密码“redis456”,正常进入redis,如果一开始使用了数据持久化,这时候创建的数据应该也不会丢失。

b. 回滚
# 先看看我们历史的chart
helm history redis -n redis

可以看到第一个状态为superseded是我们最开始创建的chart,第二个状态为deployed是我们刚刚升级的chart,就是正在运行的,我们将版本回滚到第一个版本。

helm rollback redis 1 -n redis

可以看到我们已经回滚到第一个版本,并且pod正在更新中,等到创建成功,可以验证一下输入“redis123”是否能进入到redis。

验证成功,已经回滚到版本1,使用旧密码成功登录redis。

当我们深入探索 Helm Chart 部署 Redis 的过程时,不仅仅是学习了如何利用 Helm 简化复杂的部署任务,更是领略到了在容器化世界中管理和维护应用的便捷之处。通过 Helm Chart,我们可以轻松地定义、配置和部署复杂的应用程序,使得整个过程更加灵活、可维护性更高。

在未来,我们可以继续深入学习 Helm 的更多高级功能,探索更多复杂应用场景下的部署和管理方法。通过不断学习和实践,我们能够更好地应对日益复杂的容器化环境,提高工作效率,确保应用的可靠性和稳定性。

希望这篇博客能够帮助你更好地理解 Helm Chart 部署 Redis,并在你的容器化旅程中提供一些有益的经验。让我们一起迎接技术的挑战,不断进步,探索更多的可能性。感谢你的阅读,期待在未来的技术探索中再次相遇!

标签:部署,Redis,redis,Chart,chart,helm,Helm
From: https://www.cnblogs.com/Merbleue/p/17903263.html

相关文章

  • Highcharts 用SVGRenderer方法使柱状图连接列边​
    需求在Highcharts中,可以使用SVGRenderer方法来创建路径连接柱状图的列边,并根据具体的数据和需求进行适当的调整和扩展。分析要使用Highcharts的SVGRenderer方法来绘制柱状图并连接列边,可以按照以下步骤进行操作:创建柱状图:使用Highcharts的 chart 方法创建一个柱状图,并......
  • redis未授权
    redis未授权搭建环境ubuntu安装并启动redis服务wgethttp://download.redis.io/releases/redis-3.2.11.tar.gz#下载压缩包tarxzfredis-3.2.11.tar.gz#解压cdredis-3.2.11#进入目录make#编译执行cdsrccpredis-server/usr/bin/cpredis-cli/usr/bin/#把上面两......
  • Java-Redis是如何保证高可用的?
    Java-Redis是如何保证高可用的?​​高性能基于内存的存储Redis是基于内存的存储系统,所有数据都保存在内存中,这使得Redis可以快速读取和写入数据。与传统的基于磁盘存储的系统相比,Redis的读写性能更高。单线程的设计是单线程的设计,所有的读写请求都由同一个线程处理,避免了多线......
  • v-echarts 使用折线图
    <ve-linestyle="top:-40px"height="100%"width="100%":loading="yearChartLoading":data="yearChartData":extend="chartExtend":legend-visible="false":settings="yearSetting......
  • 创建一个Redis集群的启动命令并启动
    第一步:进入到存放集群的目录里cd/opt/cluster如下图[红线圈中的目录]:第二步:在此目录创建sh文件[示例为start.sh],并打开编辑vimstart.sh第三步:在文件中,写入要执行的所有Redis端口命令`redis-server/opt/cluster/6001/redis.confredis-server/opt/cluster/6002/redis.c......
  • RedisTemplate 使用 increasement() 和 get() 时报 SerializationException
    https://cloud.tencent.com/developer/article/1706934 org.springframework.data.redis.serializer.SerializationException:Cannotdeserialize;nestedexceptionisorg.springframework.core.serializer.support.SerializationFailedException:Failedtodeseriali......
  • Redis策略
    1.删除策略1.1.立即删除(过期后立即删除)原理:key过期之后立即删除缺点:对CPU不友好,用处理器性能换取存储空间(拿时间换空间),存在大量key同时过期占用大量CPU资源进行删除操作的情况1.2.惰性删除原理:过期后先不删除,等下一次访问时判断是否过期,若过期则立即删除缺点:对CPU不友好,用......
  • Redis数据结构5:REDIS_SKIPLIST
    REDIS_SKIPLISTskipList,即:跳表,或者叫跳跃表。skiplist的优势是能支持平均O(logN)复杂度的节点查找。用一句话来说:skiplist就是一个有着索引的list。编码结构简单理解简单来说,skipList有多层“索引”以加快查找速度:其中L1、L2和L3都是一个list。当查找8时,从L3查找到5,再从L......
  • redis 使用主从机制复制数据
    查看主从情况127.0.0.1:6379>inforeplication#Replicationrole:masterconnected_slaves:0master_repl_offset:12539repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0建立主从(在备机操作)注意,如果让有数据的......
  • echarts设置多条折线不是你想的那样简单
    简单的多条折线图小伙伴写过多条折线图的都知道,常见的折线图是xAxis配置项下的data属性上设置时间或者日期。series配置项下是对应的legend中的数据以及该条折线的数据。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"con......