容器化 | 在 KubeSphere 中部署 MySQL 集群
程润科
数据库研发工程师,目前从事 RadonDB MySQL Kubernetes 研发,热衷于研究数据库内核、K8s 相关技术。
张莉梅
高级文档工程师,目前负责数据库产品文档开发、维护和管理工作。
本文将演示如何在 KubeSphere[1] 上部署 RadonDB MySQL on Kubernetes 2.1.2,快速实现高可用的 MySQL on K8s。
部署准备
- 确保已启用 OpenPitrix 系统[2]
- 创建一个企业空间、一个项目和一个用户供本操作使用[3]
- 安装过程中,请以
admin
身份登录控制台,在企业空间demo
中的demo-project
项目中进行操作 - 确保 KubeSphere 项目网关已开启外网访问[4]
动手实验
1、添加应用仓库
- 登录 KubeSphere 的 Web 控制台。
- 在
demo
企业空间中,进入应用管理下的应用仓库页面,点击添加,弹出仓库配置对话框。 - 输入仓库名称和仓库 URL。
- 输入
radondb-mysql-operator
作为应用仓库名称。 - 输入
https://radondb.github.io/radondb-mysql-kubernetes/
作为仓库的 URL,并点击验证以验证 URL,在 URL 旁边呈现一个绿色的对号,验证通过后,点击确定继续。
- 输入
- 将仓库成功导入到 KubeSphere 之后,在列表中即可查看 RadonDB MySQL 仓库。
2、部署 RadonDB MySQL Operator
- 在 demo-project 项目中,进入应用负载下的应用页面,点击部署新应用。
- 在对话框中,选择来自应用模板,进入应用模版页面。
- 从下拉菜单中选择 radondb-mysql-operator 应用仓库。
- 点击 mysql-operator 应用图标,查看和配置应用信息。
- 在配置文件选项卡,可查看和编辑 values.yaml 配置文件;在版本列框区域,可查看和选择版本号。
- 点击部署,进入 mysql-operator 应用基本信息配置页面,确认应用名称、应用版本以及配置部署位置。
- 点击下一步,进入 mysql-operator 应用配置页面,确认 values.yaml 配置信息,可编辑文件修改配置。
- 点击部署,返回应用模版页面。待应用状态切换为运行中,则应用部署成功。
更新 Operator
若已在 KubeSphere 部署过历史版本 Operator,可以选择如下方式更新到最新版本。
- 在 KubeSphere 平台删除历史版本 Operator 应用。
参考如上步骤,安装最新版本 Operator 。
执行如下命令更新 CRD 版本。如下示例为更新 CRD 到 2.1.2 版。
kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kubernetes/v2.1.2/charts/mysql-operator/crds/mysql.radondb.com_mysqlclusters.yaml
3、部署 RadonDB MySQL 集群
可任选一个 RadonDB MySQL 配置示例[5] 部署,或自定义配置部署。
以 mysql_v1alpha1_mysqlcluster.yaml
模版为例,创建一个 RadonDB MySQL 集群。
- 在右下角 工具箱中选择 Kubectl 工具,打开终端窗口。
- 执行以下命令,安装 RadonDB MySQL 集群。
kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml --namespace=<project_name>
注意
未指定项目时,集群将被默认安装在 kubesphere-controls-system
项目中。若需指定项目,安装命令需添加 --namespace=<project_name>
。
预期结果
$ kubectl apply -f https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml --namespace=demo-project
mysqlcluster.mysql.radondb.com/sample created
- 集群创建成果后,执行如下命令,可查看 RadonDB MySQL 集群节点服务。
kubectl get statefulset,svc
预期结果
$ kubectl get statefulset,svc
NAME READY AGE
statefulset.apps/sample-mysql 3/3 10m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/default-http-backend ClusterIP 10.96.69.202 <none> 80/TCP 3h2m
service/sample-follower ClusterIP 10.96.9.162 <none> 3306/TCP 10m
service/sample-leader ClusterIP 10.96.255.188 <none> 3306/TCP 10m
service/sample-mysql ClusterIP None <none> 3306/TCP 10m
部署校验
在 demo-project
项目中,查看 RadonDB MySQL 集群状态。
- 进入 应用负载 下的 服务 页面,可查看集群服务信息。
- 进入 应用负载 下的 工作负载 页面,点击 有状态副本集,可查看集群状态。进入一个 有状态副本集 详情页面,点击 监控 标签页,可查看一定时间范围内的集群指标。
- 进入 应用负载 下的 容器组 页面,可查看集群节点运行状态。
- 进入 存储 下的 存储卷 页面,可查看存储卷。查看某个存储卷用量信息,以其中一个数据节点为例,可以看到当前存储的存储容量和剩余容量等监控数据。
至此,完成在 KubeSphere 中部署 RadonDB MySQL 集群。
参考引用
[1]:KubeSphere:https://kubesphere.com.cn
[2]:OpenPitrix:https://kubesphere.io/zh/docs/pluggable-components/app-store
[3]:创建操作:https://kubesphere.io/zh/docs/quick-start/create-workspace-and-project
[4]:项目网关:https://kubesphere.io/zh/docs/project-administration/project-gateway
[5]:配置示例:https://github.com/radondb/radondb-mysql-kubernetes/blob/main/config/samples
容器化 | 在 KubeSphere 中部署 MySQL 集群的更多相关文章
- Kubernetes 中部署 MySQL 集群
文章转载自:https://www.cnblogs.com/ludongguoa/p/15319861.html 一般情况下 Kubernetes 可以通过 ReplicaSet 以一个 Pod 模板 ...
- 在 Kubernetes 中部署 Redis 集群
在 Kubernetes 中部署 Redis 集群 在Kubernetes中部署Redis集群面临挑战,因为每个 Redis 实例都依赖于一个配置文件,该文件可以跟踪其他集群实例及其角色.为此,我们需 ...
- Docker部署Mysql集群
单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信 ...
- Redis笔记 -- 在 Centos7.4单机中部署Redis集群(二)
0x00--背景和目的 在单台PC服务器上部署Redis集群,通过不同的TCP端口启动多实例,模拟多台独立PC组成集群. 0x01--环境描述: Centos版本:CentOS Linux relea ...
- ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...
- Kubernetes+Flannel 环境中部署HBase集群
2015-12-14注:加入新节点不更改运行节点参数需求已满足,将在后续文章中陆续总结. 注:目前方案不满足加入新节点(master节点或regionserver节点)而不更改已运行节点的参数的需求, ...
- keepalived-1.3.5+MHA部署mysql集群
MHA: MHA工作原理总结为以下几条: 从宕机崩溃的master保存二进制日志事件(binlog events): 识别含有最新更新的slave: 应用差异的中继日志(relay log)到其他sl ...
- Centos或Windows中部署Zookeeper集群及其简单用法
一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件 ...
- 在kubernetes集群中部署ElasticSearch集群--ECK
Elastic Cloud on Kubernetes (ECK) ---ECK是这个说法哈. 基本于k8s operator的官方实现. URL: https://www.elastic.co/gu ...
随机推荐
- 【Java】注解Annotation
注解 Annotation 理解Annotation jdk 5.0 新增的功能 Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理.通 ...
- 2.16图论专题PB
超神建图技巧合集 CF1368G 每个骨牌变成让空位移动的至多两条有向边,证明图中无环,形成森林. 然后黑白染色,两类森林互不影响.转为每次标记 A 类一棵子树与 B 类一棵子树形成的所有点对. 再转 ...
- func-spring-boot-starter 快速上手
func-spring-boot-starter test 项目地址 func-spring-boot-starter项目地址: https://gitee.com/yiur/func-spring- ...
- BERT-Pytorch版本代码pipline梳理
最近在做BERT的fine-tune工作,记录一下阅读项目https://github.com/weizhepei/BERT-NER时梳理的训练pipline,该项目基于Google的Transfor ...
- java基础04-数据类型扩展及面试题
java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...
- 《剑指offer》面试题09. 用两个栈实现队列
问题描述 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,dele ...
- PCx安装使用
PCx安装使用 注意:不要到Mittleman的网页下给的那个网站去下载,版本太老,只能在REDHAT操作系统上编译,且不能运行 mkdir PCx cd PCx/ git clone https:/ ...
- python3爬虫超简单实例
网站入口:http://wise.xmu.edu.cn/people/faculty 爬取信息:姓名和主页地址 python版本:3.5 import requests r = requests.ge ...
- django之django-debug-toolbar调试工具配置与使用
外部链接:https://blog.csdn.net/weixin_39198406/article/details/78821677 django-debug-toolbar的作用:进行性能调优,与 ...
- 长时间不操作Navicat或Putty会断线?
问题描述 今天发现只要一直不使用Putty,发现就会"卡住",还有Navicat连接数据库也有类似问题. 问题分析 Linux或者数据库都想节省连接资源呗. 问题解决 那就隔一段时 ...