【kubernetes】使用helm部署redis

news2024/11/19 13:25:10

1 什么是helm

在学习使用k8s进行应用的部署时,或者从github上下载一些组件进行部署时,通常是直接用yaml的方式部署,用这种方式部署时,有个比较大的问题是,当参数需要调整时,就需要阅读整个yaml文件,找到对应的配置进行修改,而且,这种方式不方便进行版本管理,当其他人进行部署时,就需要知道修改了哪些参数以及对应的值,也就是说,无法保证两次部署的环境一致。如果有一个仓库保存了应用的yaml模板、模板中的参数以及版本号,每次选择版本进行部署时,可以用默认参数替换掉yaml模板中的变量,并且可以设置某些参数的值,用一条命令就可以进行环境的部署,而且能够保证环境的一致,另外,使用包管理器还可以解决另一个大问题:依赖,有些应用可能还依赖其他的组件,包管理器的配置中可以声明依赖,在包安装时,会先去下载依赖。

helm被称为k8s的包管理器,类似于centos的yum和ubuntu的apt,只是yum仓库中保存的是rpm包,apt仓库中保存的是dpkg包,而helm仓库中保存的是Chart。

关键术语:

  • Helm:包管理器,可以指代Helm整个机制,也可以指代客户端,就类似于yum客户端
  • Chart:yaml模板文件和模板参数文件的集合,类似于yum中的rpm包
  • Release:Chart在k8s集群中运行起来的实例,一个Chart可以在集群中多次安装,每次安装都会生成一个Release
  • Repository:仓库,保存Chart的地方,类似于yum中的源

2 helm v2 vs v3

在提到helm时,都会将v2和v3版本进行对比,它们的主要区别就是集群中的Tiller组件:v2版本会在集群中部署一个Tiller组件,helm客户端在进行操作时,会将请求发送给Tiller,Tiller调用k8s apiserver的接口实现功能,而v3版本的helm没有Tiller组件,helm客户端直接与k8s apiserver进行通信。

详细的变化可以参考:Helm v2 迁移到 v3。

3 helm的安装和使用(以安装redis为例)

wget https://get.helm.sh/helm-v3.13.0-linux-amd64.tar.gz
tar -xf helm-v3.13.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/

# 查看helm的版本和帮助文档
helm version
helm help

在helm安装完成后,可以用helm repo add命令添加仓库,当然也可以直接用官方的hub。因此,第一步,添加仓库:

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

添加完仓库后可以使用helm repo list命令查看仓库列表。

添加完仓库后,就可以在仓库中搜索应用,类似于yum search

# 在仓库中搜索redis
helm search repo redis

当搜索到想要安装的Chart时,可以进行安装:

helm install luo-redis bitnami/redis --kubeconfig /root/.kube/config

然后就可以用helm list查看Release:

请添加图片描述
查看Pod和Service,这是默认创建的一主三从的redis集群:

请添加图片描述

然后就可以对集群进行测试。

首先,需要获取集群的密码:REDIS_PASSWORD=$(kubectl get secret --namespace default luo-redis -o jsonpath="{.data.redis-password}" | base64 -d)

然后可以选择一个从redis登陆进行测试验证:

请添加图片描述

首先以服务的方式访问master节点,将数据写入到redis集群的master节点,然后用无头服务的方式访问replicas-0的redis,可以看到数据已经同步了,然后对从节点进行写入失败了。

上述测试说明这个一主三从的redis集群可以正常工作。

这里使用helm创建redis集群全部用的都是默认参数,例如有三个从节点,如果要用4个从节点呢?此时就需要修改参数。

4 helm的参数设置

设置helm部署时的参数通常有两种方式:

  • 执行helm install时,在命令行中设置模板参数
  • 直接下载Chart,然后修改里面的values.yaml

这里以修改从redis的数量为例。

4.1 修改Chart的values.yaml

使用helm pull bitnami/redis命令从仓库中下载redis的Chart,就会在当前目录下出现一个redis的压缩包,进行解压:

请添加图片描述

其中比较重要的有三个部分:

  • Chart.yaml:Chart的描述文件,描述Chart的版本、应用的版本、依赖等信息
  • templates/:使用golang的template语法实现的yaml模板文件
  • values.yaml:将模板文件中的变量提取为参数放在此处统一保存,可以对该文件进行修改

在values.yaml中搜索replica会发现这里的replicaCount就是从redis的数量:

请添加图片描述

因此,可以直接将values.yaml中的replicaCount修改为4,然后用helm upgrade luo-redis bitnami/redis -f values.yaml进行更新,第一个参数是Release的名称,第二个参数是Chart的名称。

当然,也可以在安装的时候设置-f values.yaml参数。

4.2 命令行中设置模板参数

在命令行中设置参数时,就需要知道参数的名字是什么,从上面下载的values.yaml中可以知道要修改从redis的数量只需要修改replica.replicaCount即可,因此,可以用下列命令修改从redis的数量。

helm upgrade luo-redis bitnami/redis --set replica.replicaCount=2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1062499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UG\NX CAM二次开发 加工模块获取 UF _ask_application_module

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 加工模块获取 UF _ask_application_module 代码: void MyClass::do_it() { // TODO: add your code here // 获取NX当前所在的模块 int module_id = 0; // UF_ask_application_module(&…

Android改造CardView为圆形View,Kotlin

Android改造CardView为圆形View,Kotlin 可以利用androidx.cardview.widget.CardView的cardCornerRadius特性,将CardView改造成一个圆形的View,技术实现的关键首先设定CardView为一个宽高相等的View(正方形)&#xff0c…

在PHP8中使用instanceof操作符检测对象类型-PHP8知识详解

在PHP8中使用instanceof操作符可以检测当前对象属于哪个类。语法格式如下: objectName instanceof classname下面我们用一个实例来讲解使用instanceof操作符检测对象类型。 本实例将将创建3个类,其中有两个类是父类和子类的关系,然后实例化…

时序预测 | MATLAB实现EMD-iCHOA+GRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测

时序预测 | MATLAB实现EMD-iCHOAGRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测 目录 时序预测 | MATLAB实现EMD-iCHOAGRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 EMD-iCHOAGR…

第一百六十四回 如何实现NumberPicker

文章目录 1.概念介绍2.使用方法2.1 NumberPicker2.2 CupertinoPicker 3.示例代码4.内容总结 我们在上一章回中介绍了"如何在任意位置显示PopupMenu"相关的内容,本章回中将介绍如何实现NumberPicker.闲话休提,让我们一起Talk Flutter吧。 1.概…

【知识点随笔分析 | 第七篇】什么是Cookie、Session、Token

前言: 当今互联网世界的发展让网站和应用程序扮演着重要的角色。为了实现用户身份验证、数据传输和用户状态管理等功能,开发人员常常使用一些关键技术来确保安全性和持久性。而在这些技术中,Cookie、Session和Token是最常见和广泛使用的三种机…

C++基础知识(三) -- 引用

1 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名(俗称),编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 比如:李逵,在家称为"铁牛",江湖上人称"…

动态内存管理<C语言>

✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶‍🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始&#x1…

深度学习基础之GFLOPS(2)

什么是GFLOPS 神经网络的GFLOPS(Giga FLoating-Point Operations Per Second)代表了神经网络模型执行计算的速度和计算能力。这可以用一个类比来解释: GFLOPS就像神经网络模型的"运算速度"标签。 想象你有两个数学家&#xff0c…

macOS下 /etc/hosts 文件权限问题修复方案

文章目录 前言解决方案权限验证 macOS下 etc/hosts 文件权限问题修复 前言 当在 macOS 上使用 vi编辑 /etc/hosts 文件时发现出现 Permission Denied 的提示,就算在前面加上 sudo 也照样出现一样的提示,解决方案如下; 解决方案 可以尝试使用如下命令尝试解除锁定; sudo chf…

Spring5应用之Cglib动态代理

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 前言Cglib动态代理…

STM32--基于STM32的智能家居设计与实现

本文详细介绍基于STM32F103C8T6的智能家居设计与实现,详细设计资料见文末链接 一、功能模块介绍 智能家居系统系统图如下所示,主要包括温湿度传感器、OLED液晶显示,WIFI物联网模块、人体红外预警模块、烟雾传感器模块、蜂鸣器模块 &#…

手边酒店V2独立版小程序 1.0.21 免授权+小程序前端

手边酒店小程序独立版酒店宾馆订房系统支持创建多个小程序,让每一个客户单独管理属于自己的小程序。后台支持一键入住,一键退款、退押金、钟点房支持微信支付、模板消息。客服实时收到新的订单信息,可以在手机端处理订单。支持按日期维护房价…

浅谈wor2vec,RNN,LSTM,Transfermer之间的关系

浅谈wor2vec,RNN,LSTM,Transfermer之间的关系 今天博主谈一谈wor2vec,RNN,LSTM,Transfermer这些方法之间的关系。 首先,我先做一个定位,其实Transfermer是RNN,LSTM&…

ActiveMQ消息中间件介绍

一、ActiveMQ简介 ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provide实现。尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中仍然扮演这特殊的地位。 二、Active…

【逐步剖C】-第十一章-动态内存管理

一、为什么要有动态内存管理 从我们平常的学习经历来看,所开辟的数组一般都为固定长度大小的数组;但从很多现实需求来看需要我们开辟一个长度“可变”的数组,即这个数组的大小不能在建立数组时就指定,需要根据某个变量作为标准。…

小样本学习——匹配网络

目录 匹配网络 (1)简单介绍: (2)专业术语 (3)主要思想 (4)训练过程 问题 回答 MANN 匹配网络 (1)简单介绍: Matching netwo…

【C++设计模式之装饰模式:结构型】分析及示例

装饰模式(Decorator Pattern)是一种结构型设计模式,它允许在运行时动态地给一个对象添加额外的行为。 描述 装饰模式通过创建一个包装器(Wrapper)来包裹原始对象,并在原始对象的行为前后添加额外的功能。…

JAVA学习(5)-全网最详细~

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

git提交代码的流程

1.拉取代码 当你进入了一家公司就需要拉去公司的代码进行开发,此时你的项目小组长会给你个地址拉代码, git clone 公司项目的地址 此时如果不使用了这个方式拉去代码,拉去的是master分支上的代码,但是很多数的情况下,公司的项目可能会在其它的分支上,因此到公…