K8s 之 Helm 部署 MySQL 5.7

news2024/10/6 22:24:25

helm

Author:rab


目录

    • 一、环境
    • 二、部署
      • 2.1 安装 NFS
      • 2.2 安装 Helm
      • 2.3 安装 MySQL
        • 2.3.1 创建 Namespace
        • 2.3.2 创建 PV
        • 2.3.3 配置 MySQL
        • 2.3.4 部署 MySQL
      • 2.4 MySQL 可用性验证
    • 小结


一、环境

# K8s版本
v1.23.6

# Docker版本
v20.10.20

# Helm版本
v3.10.3

# NFS
v4

说明:通过 NFS 对 MySQL 服务做数据持久化存储。这篇文章是建立在你已经掌握 Deployment、DaemonSet、Service、探针机制、PV/PVC、Secret/ConfigMap 基础上的。

二、部署

2.1 安装 NFS

1、安装 NFS Server

yum -y install rpcbind
yum -y install nfs-utils

2、启动 NFS Server

systemctl start nfs-server
systemctl enable nfs-server
systemctl start rpcbind
systemctl enable rpcbind

3、验证 NFS Server 是否启动

systemctl status nfs.service

image-20231021120721591

4、配置文件共享路径

vim /etc/exports
/home/data/app 192.168.56.0/24(rw,no_root_squash,sync)

# 说明
# /home/data/app:是要共享的目录
# 192.168.56.0/24:授权的目标主机(即允许访问共享目录的主机或IP地址范围)
# rw:表示共享是可读写的,允许客户端对共享的目录执行读取和写入操作
# no_root_squash:这个选项表示在客户端使用 root 权限(超级用户权限)访问共享目录时,不会将其权限限制为匿名用户(通常映射为"nobody")。这意味着 root 用户可以在共享目录上执行操作,而不会受到权限的限制
# sync:这个选项指定NFS服务器应该采用同步写入模式。这意味着在数据写入共享目录之前,NFS服务器会等待确认写入操作,以确保数据的稳定性和一致性。这可以降低性能,但可以提供更高的数据一致性

5、验证 NFS Server 是否生效

showmount -e

image-20231021121732731

2.2 安装 Helm

1、下载并上传 Helm 二进制包

Helm 二进制安装包下载地址:https://github.com/helm/helm/tags

Helm 的作用:像 CentOS 7 中的 yum 命令一样管理软件包,只不过 Helm 这儿管理的是在 K8s 上安装的各种容器应用。

tar xzf helm-v3.10.3-linux-amd64.tar.gz
cp linux-amd64/helm /usr/bin/

2、版本验证

helm version

image-20230116165436895

3、Helm 命令 Tab 补全

Helm 有很多子命令和参数,为了提高使用命令行的效率,通常建议安装 helm 的 bash 命令补全脚本。

helm completion bash > .helmrc
echo "source .helmrc" >> .bashrc

重新登录 Linux 系统,输入 helm 命令并按 Tab 键,此时就会列出 helm 命令的选项参数。

image-20230116170328442

4、配置国内 Chart 仓库

微软仓库(推荐,基本上官网有的 chart 这里都有):http://mirror.azure.cn/kubernetes/charts/

官方仓库(官方 Chart 仓库,国内有点不好使):https://hub.kubeapps.com/charts/incubator

国内阿里云 Chart 仓库:https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo update   # 类似 yum update

image-20230116174458427

5、查看配置的存储库

helm repo list
helm search repo stable

image-20230116174731285

扩展:如何删除存储库?

helm repo remove aliyu   # 移除你指定的存储库即可

2.3 安装 MySQL

安装完成 Helm 后,接下来就是通过 Helm 包管理工具来安装 MySQL,我们可以将这个 MySQL 服务部署在我们自定义的 namespace 中,便于后续的管理、运维,具体步骤如下。

2.3.1 创建 Namespace
kubectl create namespace helm
2.3.2 创建 PV

NFS Server 我们 2.1 步骤已经安装完成了,接下来就是创建持久卷(PV)。

vim mysql-helm-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-helm-pv
  namespace: helm
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 8Gi
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /home/data/app
    server: 192.168.56.160
kubectl apply -f mysql-helm-pv.yml

执行完成后验证 PV 是否被创建:

kubectl get pv -n helm

image-20231023101750465

2.3.3 配置 MySQL

1、下载 MySQL 安装包

# 先查可用的MySQL版本(下图部分截图)
helm search repo mysql

image-20231020181515267

# 下载安装包至本地
helm pull stable/mysql --version=1.6.9

# 注意:1.6.9不是MySQL的版本,而是chart的版本

image-20231020181902080

2、解压缩安装包

会解压出mysql目录,我们的一且配置都在解压出的mysql目录中。

tar xzf mysql-1.6.9.tgz

3、指定 MySQL 镜像版本

根据实际情况来指定你的 MySQL 版本。

cd mysql && cp values.yaml values.yaml.bak && vim values.yaml

image-20231023100705754

4、修改 MySQL 密码 root 密码

vim values.yaml

image-20231023102610555

5、配置 Service

将 Type 设置为 NodePort,便于我们外部可请求 MySQL

并指定将 service 的 3306 端口映射到主机(Host)的 32000 端口。

vim values.yaml

image-20231023103054641

2.3.4 部署 MySQL

以上配置完成后,接下来就是运行 MySQL 服务了。

# 进入values.yaml文件所在目录执行
helm install --name myhelm-mysql --name-template mysql -f values.yaml . --namespace helm

image-20231023104101470

查看是否正常运行/部署:

image-20231023105305106

2.4 MySQL 可用性验证

以上部署完成后,接下来我们可以通过自己本地的 MySQL 客户端工具来连接 MySQL,可是否可正常连接。

image-20231023105513874

小结

测试连接没问题,以上就是简单的如何通过 Helm 来部署 MySQL,更多的 Helm 配置模板配置我们在后续继续深入,本次文章就是想让你整体认识到 Helm 包管理工具在 K8s 集群中的应用/特点。

那我们如何删除由 Helm 管理的资源呢?其实很简单,只需只想以下指令即可:

  • 先列出 Helm 管理的资源

    helm list -n helm
    

    image-20231023110118447

  • 在删除你想删除的资源即可

    会连同 deployment、service 等资源都会被删除,而且要注意的是,如果你的 PV 策略为 Recycle 时,该操作将会将你的持久化数据也一并连同删除,因此在实际生产中,为了保证我们数据的安全/完整性,我们一般会将 PV 回收策略设置为 Retain(即由我们管理员收到回收)。

    helm uninstall mysql -n helm
    

好了,本次的内容就到此结束了,如果文中出现了相关技术性错误,欢迎批评指正!

—END

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

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

相关文章

建筑能源管理(6)——建筑能源监管

中国建筑(公共机构)能耗的总量逐年上升,在能源总消费量中所占的比例已从20世纪70年代末的10%,上升到近年的超过30%。2006年,《中华人民共和国国民经济和社会发展第十一个五年规划纲要》提出了“十一五”期间单位国内生产总值能耗降低20%左右&…

SocketBase类库

SocketBase类库主要是方便创建Socket客户端和Socket服务端的基础实现。 抽象基类&#xff1a;主要实现创建Socket public abstract class NetworkBase{} 通用基类&#xff1a;指定了消息的解析规则&#xff0c;指定了数据转换的规则 的基本实现 /// <summary>/// 支持长…

Flume基本使用--mysql数据输出

MySQL数据输出 在MySQL中建立数据库school&#xff0c;在数据库中建立表student。SQL语句如下&#xff1a; create database school; use school; create table student(id int not null,name varchar(40),age int,grade int,primary key(id) ); 请使用Flume实时捕…

SQL sever中的函数(基础)

目录 一、聚合函数 1.1聚合函数概述 1.2SUM(求和)函数 1.3AVG(平均值)函数 1.4MIN(最小值)函数 1.5MAX(最大值)函数 1.6COUNT(统计)函数 1.6.1COUNT函数用法分类 1.6.2COUNT函数用法示例 1.7DISTINCT(取不重复记录)函数 1.8查询重复记录 二、数学函数 2.1数学函数…

【Java小知识点】类加载器的区别

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理Java类加载器的区别&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#x1faf0;&#x1faf…

TDengine(taos)数据库导出历史数据

业务需求&#xff1a;导出某个站点的累计充电量&#xff0c;累计放电量&#xff0c;光伏总放电量&#xff0c;进线总功率的所有数据‘ 1、登录taos&#xff0c;使用存数据的库&#xff1b; 提示Database changed&#xff1b;即为使用成功&#xff1b; 2、找到你想要导出的字段…

USGS MODIS 蒸散量数据集

USGS MODIS 蒸散量 这里提供的蒸散量 (ET) 数据集是遥感技术的结果&#xff0c;主要利用 MODIS 热图像和全球天气数据集。该数据集对应于 Climate Engine 使用的全球 ET 产品的第 5 版。它为 2003 年至 2023 年期间的 ET 时空动态提供了宝贵的见解。该数据集的基石是可操作的简…

【go-zero】go-zero 脚手架 simple-admin 开篇:安装 了解 goctls

一、什么是goctls 1、github地址 官方链接: goctls链接:https://github.com/suyuan32/goctls 官方视频教程: SimpleAdmin环境配置-工具安装 2、goctls说明 二、安装 goctls 1、使用go install 推荐使用 go install 进行安装 我个人使用的是mac的zsh ,之前是git clone的源…

网络通信和tcp协议

一、计算机网络架构模型 1、OSI七层模型 2、TCP/IP模型 3、TCP/IP协议族 无论是什么网络模型&#xff0c;都是为上一层提供服务&#xff0c;抽象层建立在低一层提供的服务上&#xff0c;每层都对应不同的协议 4、地址和端口号 1&#xff09;MAC地址 MAC 地址共 48 位&#…

深入探究Java内存模型

文章目录 &#x1f31f; Java虚拟机内存模型&#x1f34a; 一、方法区&#x1f34a; 二、堆&#x1f389; 堆的基本概念&#x1f389; 堆的结构&#x1f4dd; 新生代&#x1f4dd; 老年代 &#x1f389; 堆的分配策略&#x1f4dd; 对象优先分配&#x1f4dd; 空间优先分配 &am…

数聚携手永达汽车集团强势入选爱分析《商业智能实践案例》

近日&#xff0c;国内知名数字化市场研究咨询机构爱分析发布《2023爱分析商业智能最佳实践案例》&#xff0c;此评选活动面向落地商业智能的各行企业和商业智能厂商&#xff0c;以第三方专业视角深入调研&#xff0c;评选出具有参考价值的创新案例。永达汽车集团与数聚股份合作…

Spring底层原理(二)

Spring底层原理(二) BeanFactory的实现 //创建BeanFactory对象 DefaultListableBeanFactory factory new DefaultListableBeanFactory(); //注册Bean定义对象 AbstractBeanDefinition beanDefinition BeanDefinitionBuilder.genericBeanDefinition(SpringConfig.class).set…

Spring实例化源码解析之Bean的实例化(十二)

前言 本章开始分析finishBeanFactoryInitialization(beanFactory)方法&#xff0c;直译过来就是完成Bean工厂的初始化&#xff0c;这中间就是非lazy单例Bean的实例化流程。ConversionService在第十章已经提前分析了。重点就是最后一句&#xff0c;我们的bean实例化分析就从这里…

蓝桥每日一题(day 6: 蓝桥505.数字三角形)--线性dp--easy

题目&#xff1a; 关注&#xff1a; 本题给出了一个限制&#xff0c;“向左下走的次数与向右下走的次数相差不能超过1”。观察一下&#xff0c;发现&#xff1a;当行数为奇数的时候&#xff0c;只有最后一行的中间的f符合要求&#xff1b;当行数为偶数的时候&#xff0c;只有中…

12.4 组播鼠标批量执行

组播模式相比单播模式可以提高网络的效率和带宽利用率&#xff0c;因为组播数据包只需要发送一次&#xff0c;就可以被多个接收者接收&#xff0c;而不需要每个接收者都单独发送一份数据包。这在需要同时向多个接收者发送相同数据的场景下特别有用&#xff0c;如视频会议、在线…

解救Kubernetes混乱:Descheduler快速实现资源平衡

By default, Kubernetes doesn’t recompute and rebalance workloads. You could have a cluster with fewer overutilized nodes and others with a handful of pods How can you fix this? 关注【云原生百宝箱】公众号&#xff0c;快速掌握云原生 默认情况下&#xff0c;Ku…

RabbitMQ相关的其他知识点

RabbitMQ相关的其他知识点 一、幂等性1.1 概念1.2 消息重复消费1.3 消费端的幂等性保障 二、优先队列2.1 应用场景2.2 实现原理2.3 代码实现 三、惰性队列3.1 定义3.2 应用场景3.3 两种设置模式3.4 内存开销对比 一、幂等性 1.1 概念 用户对于同一操作发起的一次请求或者多次请…

冬天虽冷,希望你们能够坚强一点

养了好多植物&#xff0c;以前来阳台的时候看着个个都挺茂盛&#xff0c;也绿油油的&#xff0c;可天气一变冷&#xff0c;你们当中就有些扛不住了&#xff0c;多肉已经挂了&#xff0c;就剩你们啦&#xff01;希望你们能够坚强一点。

1024程序员节 | 电脑软件:SmartSystemMenu(窗口置顶工具)介绍

目录 一、软件介绍 二、软件用途 三、安装教程 四、功能介绍 五、软件设置 六、软件下载 一、软件介绍 SmartSystemMenu 是一款简单实用的 Windows 窗口增强工具&#xff0c;它可以为窗口的标题栏右键菜单新增 17 个新功能。 二、软件用途 SmartSystemMenu(窗口置顶工具)&#…

Spring实例化源码解析之循环依赖CircularReference(十三)

前言 首先什么是循环依赖&#xff0c;简单说就是互相引用。在Spring中是默认支持循环依赖的&#xff0c;至于怎么解决的循环依赖问题&#xff0c;就是本章要探讨的内容。 // 默认允许循环依赖 private boolean allowCircularReferences true;//提供set方法 public void setA…