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.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

MySQL中的锁机制详解之全局锁,表级锁,行级锁

《MySQL中的锁机制详解之全局锁,表级锁,行级锁》MySQL锁机制通过全局、表级、行级锁控制并发,保障数据一致性与隔离性,全局锁适用于全库备份,表级锁适合读多写少场景,行级锁(InnoDB)实现高并... 目录一、锁机制基础:从并发问题到锁分类1.1 并发访问的三大问题1.2 锁的核心作用1.3 锁粒度分

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT