当前位置: 首页 > news >正文

[Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)

上一节讲解了K8s包管理工具Helm、使用Helm部署mongodb集群(主从数据库集群),这里来看看K8s使用Helm部署mysql集群(主从数据库集群)

一.Helm 搭建mysql集群 

1.安装mysql不使用persistence(无本地存储)

无本地存储:当重启的时候,数据库消失

(1).打开官网的应用中心

打开应用中心,搜索mysql

(2).安装 

1).添加repo仓库
#添加repo仓库源
# mysql-repo 是自定义的
helm repo add  mysql-repo https://charts.bitnami.com/bitnami
2).安装
#安装: mysql-repo和上面保存一致
#mongo:是自定义的
#--set 可以跟参数
#persistence.enabled 配置应用的持久化
helm install mysqltest mysql-repo/mysql --set persistence.enabled=false,auth.rootPassword="mysqlpass"

具体命令如下: 

[root@VM-0-12-tencentos ~]# helm install mysqltest mysql-repo/mysql --set primary.persistence.size=10Gi,auth.rootPassword=mysqlpass
NAME: mysqltest
LAST DEPLOYED: Wed Jan 10 20:30:35 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 9.16.1
APP VERSION: 8.0.35** Please be patient while the chart is being deployed **Tip:Watch the deployment status using the command: kubectl get pods -w --namespace defaultServices:echo Primary: mysqltest.default.svc.cluster.local:3306Execute the following to get the administrator credentials:echo Username: rootMYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default mysqltest -o jsonpath="{.data.mysql-root-password}" | base64 -d)To connect to your database:1. Run a pod that you can use as a client:kubectl run mysqltest-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mysql:8.0.35-debian-11-r2 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash2. To connect to primary service (read/write):mysql -h mysqltest.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
3).自动生成secret,PVC,磁盘等 

可以通过面板进行查看

(3).设置环境变量 

使用安装完成的提示命令设置环境变量

 [root@VM-0-3-tencentos ~]#MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default my-mysql -o jsonpath="{.data.mysql-root-password}" | base64 -d)
[root@VM-0-3-tencentos ~]# echo $MYSQL_ROOT_PASSWORD
mysqlpass

 (4).开启一个客户端进行测试

参考上面安装完成的代码

1).开启临时客户端
 kubectl run mysqltest-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mysql:8.0.35-debian-11-r2 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

具体如下: 

 2).连接数据库
[root@VM-0-12-tencentos ~]# kubectl run testmysql-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mysql:8.0.35-debian-11-r2 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash
If you don't see a command prompt, try pressing enter.
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ 
I have no name!@testmysql-client:/$ mysql -h testmysql.default.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 22
Server version: 8.0.35 Source distributionCopyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

(5).查看 pod 

(6).外部访问

这里需要进行一下端口转发,命令如下:

kubectl port-forward --address 0.0.0.0 service/testmysql 3306:3306

在服务端开启一个临时mysql客户端,看看有上面添加的数据不? 

[root@VM-0-12-tencentos ~]# kubectl run testmysql-client --rm --tty -i --restart='Never' --image  docker.io/bitnami/mysql:8.0.35-debian-11-r2 --namespace default --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash
If you don't see a command prompt, try pressing enter.
I have no name!@testmysql-client:/$  mysql -h testmysql.default.svc.

相关文章:

  • 03.neuvector之组的划分逻辑
  • 四、Qt 的第一个demo
  • 08、Kafka ------ 消息存储相关的配置-->消息过期时间设置、查看主题下的消息存活时间等配置
  • 计算机组成原理-程序中断(基本概念 中断分类 流程 )
  • 详解Java之Spring框架中事务管理的艺术
  • 【进程调度】基于优先级的轮转调度C++实现算法
  • 力扣2182.构造限制重复的字符串
  • 代码随想录算法训练营第四天|24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II,总结
  • 1panel中的sftpgo webadmin 更新修改docker容器文件的配置教程
  • 基于FFmpeg的简单Android视频播放器
  • 生物信息学中的可重复性研究
  • 大模型实战营Day3 作业
  • 【读书笔记】网空态势感知理论与模型(十)
  • SOMEIP学习总结
  • 二叉树的中序遍历【二叉树】【递归】
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angularjs之国际化
  • gcc介绍及安装
  • iOS | NSProxy
  • Javascript 原型链
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • PAT A1050
  • Python打包系统简单入门
  • Swoft 源码剖析 - 代码自动更新机制
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 理清楚Vue的结构
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 正则与JS中的正则
  • 主流的CSS水平和垂直居中技术大全
  • 回归生活:清理微信公众号
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​flutter 代码混淆
  • (03)光刻——半导体电路的绘制
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (十三)Flask之特殊装饰器详解
  • (转)可以带来幸福的一本书
  • (转载)利用webkit抓取动态网页和链接
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Standard 的管理策略
  • .NET 指南:抽象化实现的基类
  • .NET简谈设计模式之(单件模式)
  • @property @synthesize @dynamic 及相关属性作用探究
  • [APIO2015]巴厘岛的雕塑
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [CSAWQual 2019]Web_Unagi ---不会编程的崽
  • [HackMyVM]靶场 Quick3
  • [HEOI2013]ALO
  • [ITIL学习笔记]之事件管理(2)
  • [Java、Android面试]_10_Java中==与equal()方法的区别?重写equal()方法?
  • [Mybatis-Plus笔记] MybatisPlus-03-QueryWrapper条件构造器
  • [NOI2020统一省选 A] 组合数问题 (推式子)