k8s学习--利用helm部署应用mysql,加深helm的理解

2024-06-16 16:04

本文主要是介绍k8s学习--利用helm部署应用mysql,加深helm的理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 应用
    • 环境
      • 一、一键部署helm
      • 二、部署storageclass
        • (1)配置NFS(主机IP:192.168.10.17)
        • (2)创建配置storageclass
      • 三、安装mysql 应用:
        • 查看chart资源
        • 删除Release


前言

感兴趣的可以先看
链接: k8s学习–helm的详细解释及安装和常用命令

应用

环境

虚拟机

Ip主机名cpu内存硬盘
192.168.10.11master012cpu双核4G100G
192.168.10.12worker012cpu双核4G100G
192.168.10.13worker022cpu双核4G100G
192.168.10.17nfs1cpu一核2G40G

版本 centos7.9
已部署k8s-1.27

一、一键部署helm

具体命令解释请看,这里不再过多描述
链接: k8s学习–helm的详细解释及安装和常用命令

wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
tar xf helm-v3.13.2-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
helm version
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm repo list

二、部署storageclass

(1)配置NFS(主机IP:192.168.10.17)

如果nfs服务器已经配置好,只需在各节点上安装nfs-utils,rpcbind即可

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
yum -y install nfs-utils rpcbind       #各主机都安装
mkdir /nfsdata
cat /etc/exports
/nfsdata *(rw,sync,no_root_squash)
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server
showmount -e
(2)创建配置storageclass

详细解释请看
链接: StorageClass详细解释与应用

master节点

mkdir sc
cd sc

创建账号、创建权限、给账号关联权限
注:需要vpn

wget https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/rbac.yaml
kubectl apply -f rbac.yaml

通过中间件将访问账号与共享存储关联

vim nfs-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisioner
spec:replicas: 1strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccount: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner- name: NFS_SERVERvalue: 192.168.10.17- name: NFS_PATHvalue: /nfsdatavolumes:- name: nfs-client-rootnfs:server: 192.168.10.17path: /nfsdata
kubectl apply -f nfs-deployment.yaml

配置storageclass与中间件关联

wget https://raw.githubusercontent.com/kubernetes-sigs/nfs-subdir-external-provisioner/master/deploy/class.yaml
kubectl apply -f class.yaml

三、安装mysql 应用:

helm search repo mysql

在这里插入图片描述

helm install stable/mysql --generate-name --set persistence.storageClass=nfs-client --set mysqlRootPassword=test123

解释
1.my-release 是你的发布名称,你可以随意更改。
2.bitnami/mysql 是 Chart 的名称和仓库路径。
3.–set persistence.storageClass=nfs-client 指定了存储类为 nfs-client。
4.–set auth.rootPassword=test123 设置了 MySQL 的 root 用户密码。
在这里插入图片描述

查看chart有没有被创建出来

helm list

在这里插入图片描述

可以看到chart自动创建了pod,pvc,pv

kubectl get pod

在这里插入图片描述

kubectl get pvc

在这里插入图片描述

kubectl get pv

在这里插入图片描述
一个 chart 包是可以多次安装到同一个集群中的,每次安装都会产生一个release, 每个release都可以独立管理和升级。
我们可以试着再创建一个

helm install stable/mysql --generate-name --set persistence.storageClass=nfs-client --set mysqlRootPassword=root
helm ls

在这里插入图片描述
查看有没有创建出第二个pod

kubectl get pods

可以看到第二个pod
在这里插入图片描述
可以进去查看数据库是否正常运行

[root@master01 sc]# kubectl exec -it mysql-1718516470-579958995c-k7hlb -- bash 
root@mysql-1718516470-579958995c-k7hlb:/# mysql -uroot -ptest123
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

nfs服务器上查看/nfsdata目录内容

ls /nfsdata

在这里插入图片描述

查看chart资源
helm ls

在这里插入图片描述
查看资源

kubectl get all -l release=mysql-1718516470

在这里插入图片描述

kubectl get all | grep mysql-1718516470

在这里插入图片描述
我们也可以 helm show chart 命令来了解 MySQL 这个 chart 包的一些特性:

helm show chart stable/mysql

在这里插入图片描述
如果想要了解更多信息,可以用 helm show all 命令:

helm show all stable/mysql

数据过多,就不展示了,可以自己看看

删除Release

如果需要删除这个 release,也很简单,只需要使用 helm uninstall或helm delete 命令即可:

helm uninstall mysql-1718516470

nfs服务器上查看/nfsdata目录内容

ls /nfsdata

在这里插入图片描述
uninstall 命令会从 Kubernetes 中删除 release,也会删除与 release 相关的所有 Kubernetes 资源以及 release 历史记录。

helm ls

在这里插入图片描述
在删除的时候使用 --keep-history 参数,则会保留 release 的历史记录,该 release 的状态就是 UNINSTALLED,

helm uninstall mysql-1718516710 --keep-history
helm ls

可以看到已经全部删除了
在这里插入图片描述
查看所有(包括已删除)的Helm发行版

helm ls -a

在这里插入图片描述
回滚版本

helm rollback mysql-1718516710 1
helm ls

可以看到已经恢复了
在这里插入图片描述
rollback后,又回到deployed状态

这篇关于k8s学习--利用helm部署应用mysql,加深helm的理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066901

相关文章

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

SQL Server 查询数据库及数据文件大小的方法

《SQLServer查询数据库及数据文件大小的方法》文章介绍了查询数据库大小的SQL方法及存储过程实现,涵盖当前数据库、所有数据库的总大小及文件明细,本文结合实例代码给大家介绍的非常详细,感兴趣的... 目录1. 直接使用SQL1.1 查询当前数据库大小1.2 查询所有数据库的大小1.3 查询每个数据库的详

Python中yield的用法和实际应用示例

《Python中yield的用法和实际应用示例》在Python中,yield关键字主要用于生成器函数(generatorfunctions)中,其目的是使函数能够像迭代器一样工作,即可以被遍历,但不会... 目录python中yield的用法详解一、引言二、yield的基本用法1、yield与生成器2、yi

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.