@@ -5,15 +5,13 @@ Contents
55 * [ 简介] ( #简介 )
66 * [ 部署准备] ( #部署准备 )
77 * [ 部署步骤] ( #部署步骤 )
8- * [ 步骤 1:克隆代码 ] ( #步骤-1-克隆代码 )
8+ * [ 步骤 1:添加 Helm 仓库 ] ( #步骤-1-添加-helm-仓库 )
99 * [ 步骤 2:部署 Operator] ( #步骤-2-部署-operator )
1010 * [ 步骤 3:部署 RadonDB MySQL 集群] ( #步骤-3-部署-radondb-mysql-集群 )
1111 * [ 部署校验] ( #部署校验 )
1212 * [ 校验 RadonDB MySQL Operator] ( #校验-radondb-mysql-operator )
1313 * [ 校验 RadonDB MySQL 集群] ( #校验-radondb-mysql-集群 )
14- * [ 连接 RadonDB MySQL] ( #连接-radondb-mysql )
15- * [ 同 NameSpace 访问] ( #同-namespace-访问 )
16- * [ 跨 NameSpace 访问] ( #跨-namespace-访问 )
14+ * [ 访问 RadonDB MySQL] ( #访问-radondb-mysql )
1715 * [ 卸载] ( #卸载 )
1816 * [ 卸载 Operator] ( #卸载-Operator )
1917 * [ 卸载 RadonDB MySQL] ( #卸载-RadonDB-MySQL )
@@ -40,34 +38,36 @@ RadonDB MySQL 支持在 Kubernetes 上安装部署和管理,自动执行与运
4038
4139## 部署步骤
4240
43- ### 步骤 1: 克隆代码
41+ ### 步骤 1: 添加 Helm 仓库
4442
4543```
46- git clone https://github.com /radondb/radondb -mysql-kubernetes.git
44+ $ helm repo add radondb https://radondb. github.io /radondb-mysql-kubernetes/
4745```
4846
49- ### 步骤 2: 部署 Operator
50-
51- 使用 Helm(V3版本) 安装 chart 的指令如下。
52-
47+ 校验仓库,可查看到名为 ` radondb/mysql-operator ` 的 chart。
5348```
54- helm install [NAME] [CHART] [flags]
49+ $ helm search repo radondb
50+ NAME CHART VERSION APP VERSION DESCRIPTION
51+ radondb/mysql-operator 0.1.0 v2.1.0 Open Source,High Availability Cluster,based o...
5552```
5653
54+ ### 步骤 2: 部署 Operator
55+
5756以下指定 release 名为 ` demo ` , 创建一个名为 ` demo-mysql-operator ` 的 [ Deployment] ( #7-deployments ) 。
5857
5958```
60- helm install demo radondb-mysql-kubernetes/charts /mysql-operator
59+ $ helm install demo radondb/mysql-operator
6160```
6261
63- > 说明:在这一步骤中默认将同时创建一个名为 ` mysqlclusters.mysql.radondb.com ` 的 [ CRD] ( #8-CRD ) 。
62+ > 说明:在这一步骤中默认将同时创建集群所需的 [ CRD] ( #8-CRD ) 。
6463
6564### 步骤 3: 部署 RadonDB MySQL 集群
6665
6766执行以下指令,以默认参数为 CRD ` mysqlclusters.mysql.radondb.com ` 创建一个实例,即创建 RadonDB MySQL 集群。您可以参照[ 配置] ( #配置 ) 自定义集群部署参数。
6867
6968``` kubectl
70- kubectl apply -f radondb-mysql-kubernetes/config/samples/mysql_v1alpha1_mysqlcluster.yaml
69+ $ wget https://github.com/radondb/radondb-mysql-kubernetes/releases/latest/download/mysql_v1alpha1_mysqlcluster.yaml
70+ $ kubectl apply -f mysql_v1alpha1_cluster.yaml
7171```
7272
7373## 部署校验
@@ -77,29 +77,29 @@ kubectl apply -f radondb-mysql-kubernetes/config/samples/mysql_v1alpha1_mysqlclu
7777查看 ` demo ` 的 Deployment 和对应监控服务,回显如下信息则部署成功。
7878
7979``` shell
80- kubectl get deployment,svc
80+ $ kubectl get deployment,svc
8181NAME READY UP-TO-DATE AVAILABLE AGE
8282demo-mysql-operator 1/1 1 1 7h50m
8383
84-
8584NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
8685service/mysql-operator-metrics ClusterIP 10.96.142.22 < none> 8443/TCP 8h
8786```
8887
8988### 校验 RadonDB MySQL 集群
9089
91- 执行如下命令,将查看到名为 ` mysqlclusters.mysql.radondb.com ` 的 CRD。
90+ 执行如下命令,将查看到如下 CRD。
9291
9392``` shell
94- kubectl get crd
95- NAME CREATED AT
96- mysqlclusters.mysql.radondb.com 2021-06-29T02:28:36Z
93+ $ kubectl get crd | grep mysql.radondb.com
94+ backups.mysql.radondb.com 2021-11-02T07:00:01Z
95+ mysqlclusters.mysql.radondb.com 2021-11-02T07:00:01Z
96+ mysqlusers.mysql.radondb.com 2021-11-02T07:00:01Z
9797```
9898
9999以默认部署为例,执行如下命令将查看到名为 ` sample-mysql ` 的三节点 RadonDB MySQL 集群及用于访问节点的服务。
100100
101101``` shell
102- kubectl get statefulset,svc
102+ $ kubectl get statefulset,svc
103103NAME READY AGE
104104sample-mysql 3/3 7h33m
105105
@@ -109,68 +109,61 @@ service/sample-leader ClusterIP 10.96.111.214 <none> 3306/
109109service/sample-mysql ClusterIP None < none> 3306/TCP 7h37m
110110```
111111
112- ## 连接 RadonDB MySQL
112+ ## 访问 RadonDB MySQL
113113
114- 您需要准备一个用于连接 MySQL 的客户端。
114+ > ** 注意**
115+ >
116+ > 准备可用于连接 MySQL 的客户端。
115117
116- ### 同 NameSpace 访问
118+ - 当客户端的与数据库部署在不同 Kubernetes 集群,请参考 [ Kubernetes 访问集群中的应用程序 ] ( https://kubernetes.io/zh/docs/tasks/access-application-cluster/ ) ,配置端口转发、负载均衡等连接方式。
117119
118- 当客户端与 RadonDB MySQL 集群在同一个 NameSpace 中时,可使用 leader/follower service 名称代替具体的 IP 和端口。
120+ - 在 Kubernetes 集群内,支持使用 ` service_name ` 或者 ` clusterIP ` 方式,访问 RadonDB MySQL。
121+
122+ > ** 说明**
123+ >
124+ > RadonDB MySQL 提供 leader 服务和 follower 服务用于分别访问主从节点。leader 服务始终指向主节点(读写),follower 服务始终指向从节点(只读)。
119125
120- * 连接主节点(读写节点) 。
126+ 以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式 。
121127
122- ``` shell
123- $ mysql -h < leader service 名称> -u < 用户名> -p
124- ```
125-
126- 用户名为 ` radondb_usr` ,release 名为 ` sample` ,连接主节点示例如下:
127-
128- ` ` ` shell
129- $ mysql -h sample-leader -u radondb_usr -p
130- ` ` `
128+ ### ` service_name ` 方式
131129
132- * 连接从节点(只读节点)。
130+ * 连接 leader 服务(RadonDB MySQL 主节点)
133131
134132 ``` shell
135- $ mysql -h < follower service 名称 > -u < 用户名 > -p
133+ $ mysql -h < leader_service_name > . < namespace > -u < user_name > -p
136134 ```
137135
138- 用户名为 ` radondb_usr` ,release 名为 ` sample` ,连接从节点示例如下 :
136+ 用户名为 ` radondb_usr` ,release 名为 ` sample` ,RadonDB MySQL 命名空间为 ` default ` ,连接示例如下 :
139137
140138 ` ` ` shell
141- $ mysql -h sample-follower -u radondb_usr -p
139+ $ mysql -h sample-leader.default -u radondb_usr -p
142140 ` ` `
143141
144- # ## 跨 NameSpace 访问
145-
146- 当客户端与 RadonDB MySQL 集群不在同一个 NameSpace 中时,可以通过 podIP 或服务 ClusterIP 来连接对应节点。
147-
148- 1. 查询 pod 列表和服务列表,分别获取需要连接的节点所在的pod 名称或对应的服务名称。
142+ * 连接 follower 服务(RadonDB MySQL 从节点)
149143
150144 ` ` ` shell
151- $ kubectl get pod,svc
145+ $ mysql -h < follower_service_name > . < namespace > -u < user_name > -p
152146 ` ` `
153147
154- 2. 查看 pod/服务的详细信息,获取对应的IP。
148+ 用户名为 ` radondb_usr ` ,release 名为 ` sample ` ,RadonDB MySQL 命名空间为 ` default ` ,连接示例如下:
155149
156150 ` ` ` shell
157- $ kubectl describe pod < pod 名称>
158- $ kubectl describe svc < 服务名称>
151+ $ mysql -h sample-follower.default -u radondb_usr -p
159152 ` ` `
160153
161- > 注意:pod 重启后 pod IP 会更新,需重新获取 pod IP,建议使用服务的 ClusterIP 来连接节点。
154+ # ## `clusterIP` 方式
162155
163- 3. 连接节点 。
156+ RadonDB MySQL 的高可用读写 IP 指向 leader 服务的 ` clusterIP ` ,高可用只读 IP 指向 follower 服务的 ` clusterIP ` 。
164157
165- ` ` ` shell
166- $ mysql -h < pod IP/服务 ClusterIP > -u < 用户名 > -p
167- ` ` `
158+ ` ` ` shell
159+ $ mysql -h < clusterIP > -P < mysql_Port > -u < user_name > -p
160+ ` ` `
168161
169- 用户名为 ` radondb_usr` ,pod IP 为 ` 10.10.128.136` ,连接示例如下:
162+ 以下示例用户名为 ` radondb_usr` , leader 服务的 clusterIP 为 ` 10.10.128.136` ,连接示例如下:
170163
171- ` ` ` shell
172- $ mysql -h 10.10.128.136 -u radondb_usr -p
173- ` ` `
164+ ` ` ` shell
165+ $ mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p
166+ ` ` `
174167
175168# # 卸载
176169
@@ -179,71 +172,73 @@ service/sample-mysql ClusterIP None <none> 3306/
179172卸载当前命名空间下 release 名为 ` demo` 的 RadonDB MySQL Operator。
180173
181174` ` ` shell
182- helm delete demo
175+ $ helm delete demo
183176` ` `
184177
185178# ## 卸载 RadonDB MySQL
186179
187180卸载 release 名为 ` sample` RadonDB MySQL 集群。
188181
189182` ` ` shell
190- kubectl delete mysqlclusters.mysql.radondb.com sample
183+ $ kubectl delete mysqlclusters.mysql.radondb.com sample
191184` ` `
192185
193186# ## 卸载自定义资源
194187
195188` ` ` shell
196- kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com
189+ $ kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com
190+ $ kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com
191+ $ kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com
197192` ` `
198193
199194# # 配置
200195
201196# ## 容器配置
202197
203198| 参数 | 描述 | 默认值 |
204- | :---------------------------------- | :--------------------------- | :- ---------------------------------------------------------- |
199+ | :--------------------------------- | :-------------------------- | : ---------------------------------------------------------- |
205200| MysqlVersion | MySQL 版本号 | 5.7 |
206201| MysqlOpts.RootPassword | MySQL Root 用户密码 | " " |
207- | MysqlOpts.User | 默认新建的 MySQL 用户名称 | radondb_usr |
208- | MysqlOpts.Password | 默认新建的 MySQL 用户密码 | RadonDB@123 |
209- | MysqlOpts.Database | 默认新建的 MySQL 数据库名称 | radondb |
202+ | MysqlOpts.User | 默认新建的 MySQL 用户名称 | radondb_usr |
203+ | MysqlOpts.Password | 默认新建的 MySQL 用户密码 | RadonDB@123 |
204+ | MysqlOpts.Database | 默认新建的 MySQL 数据库名称 | radondb |
210205| MysqlOpts.InitTokuDB | 是否启用TokuDB | true |
211- | MysqlOpts.MysqlConf | MySQL 配置 | - |
206+ | MysqlOpts.MysqlConf | MySQL 配置 | - |
212207| MysqlOpts.Resources | MySQL 容器配额 | 预留: cpu 100m, 内存 256Mi; < /br> 限制: cpu 500m, 内存 1Gi |
213- | XenonOpts.Image | xenon(高可用组件)镜像 | radondb/xenon:1.1.5-alpha |
214- | XenonOpts.AdmitDefeatHearbeatCount | 允许的最大心跳检测失败次数 | 5 |
215- | XenonOpts.ElectionTimeout | 选举超时时间(单位为毫秒) | 10000ms |
208+ | XenonOpts.Image | xenon(高可用组件)镜像 | radondb/xenon:1.1.5-alpha |
209+ | XenonOpts.AdmitDefeatHearbeatCount | 允许的最大心跳检测失败次数 | 5 |
210+ | XenonOpts.ElectionTimeout | 选举超时时间(单位为毫秒) | 10000ms |
216211| XenonOpts.Resources | xenon 容器配额 | 预留: cpu 50m, 内存 128Mi; < /br> 限制: cpu 100m, 内存 256Mi |
217- | MetricsOpts.Enabled | 是否启用 Metrics(监控)容器 | false |
218- | MetricsOpts.Image | Metrics 容器镜像地址 | prom/mysqld-exporter:v0.12.1 |
212+ | MetricsOpts.Enabled | 是否启用 Metrics(监控)容器 | false |
213+ | MetricsOpts.Image | Metrics 容器镜像 | prom/mysqld-exporter:v0.12.1 |
219214| MetricsOpts.Resources | Metrics 容器配额 | 预留: cpu 10m, 内存 32Mi; < /br> 限制: cpu 100m, 内存 128Mi |
220215
221216# ## 节点配置
222217
223- | 参数 | 描述 | 默认值 |
224- | :------------------------- | :-------------------------------------------------- | :------------------------ |
225- | Replicas | 集群节点数,只允许为0、2、3、5 | 3 |
226- | PodSpec .ImagePullPolicy | 镜像拉取策略, 只允许为 Always/IfNotPresent/Never | IfNotPresent |
227- | PodSpec .Labels | 节点 pod [标签](# 1-标签) | - |
228- | PodSpec .Annotations | 节点 pod [注解](# 2-注解) | - |
229- | PodSpec .Affinity | 节点 pod [亲和性](# 3-亲和性) | - |
230- | PodSpec .PriorityClassName | 节点 pod [优先级](# 4-优先级)对象名称 | - |
231- | PodSpec .Tolerations | 节点 pod [污点容忍度](# 5-容忍)列表 | - |
232- | PodSpec .SchedulerName | 节点 pod [调度器](# 6-调度器)名称 | - |
233- | PodSpec.Resources | 节点 pod 配额 | 预留: cpu 10m, 内存 32Mi |
234- | PodSpec .SidecarImage | Sidecar 镜像 | radondb/mysql-sidecar:v2.1.0 |
235- | PodSpec .BusyboxImage | Busybox 镜像 | busybox:1.32 |
236- | PodSpec .SlowLogTail | 是否开启慢日志跟踪 | false |
237- | PodSpec .AuditLogTail | 是否开启审计日志跟踪 | false |
218+ | 参数 | 描述 | 默认值 |
219+ | :-------------------------- | :----------------------------------------------- | :------------------------ |
220+ | Replicas | 集群节点数,只允许为0、2、3、5 | 3 |
221+ | PodPolicy .ImagePullPolicy | 镜像拉取策略, 只允许为 Always/IfNotPresent/Never | IfNotPresent |
222+ | PodPolicy .Labels | 节点 pod [标签](# 1-标签) | - |
223+ | PodPolicy .Annotations | 节点 pod [注解](# 2-注解) | - |
224+ | PodPolicy .Affinity | 节点 pod [亲和性](# 3-亲和性) | - |
225+ | PodPolicy .PriorityClassName | 节点 pod [优先级](# 4-优先级)对象名称 | - |
226+ | PodPolicy .Tolerations | 节点 pod [污点容忍度](# 5-容忍)列表 | - |
227+ | PodPolicy .SchedulerName | 节点 pod [调度器](# 6-调度器)名称 | - |
228+ | PodPolicy.ExtraResources | 节点容器配额(除 MySQL 和 Xenon 之外的容器) | 预留: cpu 10m, 内存 32Mi |
229+ | PodPolicy .SidecarImage | Sidecar 镜像 | radondb/mysql-sidecar:latest |
230+ | PodPolicy .BusyboxImage | Busybox 镜像 | busybox:1.32 |
231+ | PodPolicy .SlowLogTail | 是否开启慢日志跟踪 | false |
232+ | PodPolicy .AuditLogTail | 是否开启审计日志跟踪 | false |
238233
239234# ## 持久化配置
240235
241236| 参数 | 描述 | 默认值 |
242- | :------------------------ | :-------------- | :- ------------ |
237+ | :----------------------- | :------------- | : ------------ |
243238| Persistence.Enabled | 是否启用持久化 | true |
244239| Persistence.AccessModes | 存储卷访问模式 | ReadWriteOnce |
245- | Persistence.StorageClass | 存储卷类型 | - |
246- | Persistence.Size | 存储卷容量 | 10Gi |
240+ | Persistence.StorageClass | 存储卷类型 | - |
241+ | Persistence.Size | 存储卷容量 | 10Gi |
247242
248243# # 参考
249244
0 commit comments