@@ -5,15 +5,13 @@ Contents
5
5
* [ 简介] ( #简介 )
6
6
* [ 部署准备] ( #部署准备 )
7
7
* [ 部署步骤] ( #部署步骤 )
8
- * [ 步骤 1:克隆代码 ] ( #步骤-1-克隆代码 )
8
+ * [ 步骤 1:添加 Helm 仓库 ] ( #步骤-1-添加-helm-仓库 )
9
9
* [ 步骤 2:部署 Operator] ( #步骤-2-部署-operator )
10
10
* [ 步骤 3:部署 RadonDB MySQL 集群] ( #步骤-3-部署-radondb-mysql-集群 )
11
11
* [ 部署校验] ( #部署校验 )
12
12
* [ 校验 RadonDB MySQL Operator] ( #校验-radondb-mysql-operator )
13
13
* [ 校验 RadonDB MySQL 集群] ( #校验-radondb-mysql-集群 )
14
- * [ 连接 RadonDB MySQL] ( #连接-radondb-mysql )
15
- * [ 同 NameSpace 访问] ( #同-namespace-访问 )
16
- * [ 跨 NameSpace 访问] ( #跨-namespace-访问 )
14
+ * [ 访问 RadonDB MySQL] ( #访问-radondb-mysql )
17
15
* [ 卸载] ( #卸载 )
18
16
* [ 卸载 Operator] ( #卸载-Operator )
19
17
* [ 卸载 RadonDB MySQL] ( #卸载-RadonDB-MySQL )
@@ -40,34 +38,36 @@ RadonDB MySQL 支持在 Kubernetes 上安装部署和管理,自动执行与运
40
38
41
39
## 部署步骤
42
40
43
- ### 步骤 1: 克隆代码
41
+ ### 步骤 1: 添加 Helm 仓库
44
42
45
43
```
46
- git clone https://github.com /radondb/radondb -mysql-kubernetes.git
44
+ $ helm repo add radondb https://radondb. github.io /radondb-mysql-kubernetes/
47
45
```
48
46
49
- ### 步骤 2: 部署 Operator
50
-
51
- 使用 Helm(V3版本) 安装 chart 的指令如下。
52
-
47
+ 校验仓库,可查看到名为 ` radondb/mysql-operator ` 的 chart。
53
48
```
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...
55
52
```
56
53
54
+ ### 步骤 2: 部署 Operator
55
+
57
56
以下指定 release 名为 ` demo ` , 创建一个名为 ` demo-mysql-operator ` 的 [ Deployment] ( #7-deployments ) 。
58
57
59
58
```
60
- helm install demo radondb-mysql-kubernetes/charts /mysql-operator
59
+ $ helm install demo radondb/mysql-operator
61
60
```
62
61
63
- > 说明:在这一步骤中默认将同时创建一个名为 ` mysqlclusters.mysql.radondb.com ` 的 [ CRD] ( #8-CRD ) 。
62
+ > 说明:在这一步骤中默认将同时创建集群所需的 [ CRD] ( #8-CRD ) 。
64
63
65
64
### 步骤 3: 部署 RadonDB MySQL 集群
66
65
67
66
执行以下指令,以默认参数为 CRD ` mysqlclusters.mysql.radondb.com ` 创建一个实例,即创建 RadonDB MySQL 集群。您可以参照[ 配置] ( #配置 ) 自定义集群部署参数。
68
67
69
68
``` 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
71
71
```
72
72
73
73
## 部署校验
@@ -77,29 +77,29 @@ kubectl apply -f radondb-mysql-kubernetes/config/samples/mysql_v1alpha1_mysqlclu
77
77
查看 ` demo ` 的 Deployment 和对应监控服务,回显如下信息则部署成功。
78
78
79
79
``` shell
80
- kubectl get deployment,svc
80
+ $ kubectl get deployment,svc
81
81
NAME READY UP-TO-DATE AVAILABLE AGE
82
82
demo-mysql-operator 1/1 1 1 7h50m
83
83
84
-
85
84
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
86
85
service/mysql-operator-metrics ClusterIP 10.96.142.22 < none> 8443/TCP 8h
87
86
```
88
87
89
88
### 校验 RadonDB MySQL 集群
90
89
91
- 执行如下命令,将查看到名为 ` mysqlclusters.mysql.radondb.com ` 的 CRD。
90
+ 执行如下命令,将查看到如下 CRD。
92
91
93
92
``` 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
97
97
```
98
98
99
99
以默认部署为例,执行如下命令将查看到名为 ` sample-mysql ` 的三节点 RadonDB MySQL 集群及用于访问节点的服务。
100
100
101
101
``` shell
102
- kubectl get statefulset,svc
102
+ $ kubectl get statefulset,svc
103
103
NAME READY AGE
104
104
sample-mysql 3/3 7h33m
105
105
@@ -109,68 +109,61 @@ service/sample-leader ClusterIP 10.96.111.214 <none> 3306/
109
109
service/sample-mysql ClusterIP None < none> 3306/TCP 7h37m
110
110
```
111
111
112
- ## 连接 RadonDB MySQL
112
+ ## 访问 RadonDB MySQL
113
113
114
- 您需要准备一个用于连接 MySQL 的客户端。
114
+ > ** 注意**
115
+ >
116
+ > 准备可用于连接 MySQL 的客户端。
115
117
116
- ### 同 NameSpace 访问
118
+ - 当客户端的与数据库部署在不同 Kubernetes 集群,请参考 [ Kubernetes 访问集群中的应用程序 ] ( https://kubernetes.io/zh/docs/tasks/access-application-cluster/ ) ,配置端口转发、负载均衡等连接方式。
117
119
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 服务始终指向从节点(只读)。
119
125
120
- * 连接主节点(读写节点) 。
126
+ 以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式 。
121
127
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 ` 方式
131
129
132
- * 连接从节点(只读节点)。
130
+ * 连接 leader 服务(RadonDB MySQL 主节点)
133
131
134
132
``` shell
135
- $ mysql -h < follower service 名称 > -u < 用户名 > -p
133
+ $ mysql -h < leader_service_name > . < namespace > -u < user_name > -p
136
134
```
137
135
138
- 用户名为 ` radondb_usr` ,release 名为 ` sample` ,连接从节点示例如下 :
136
+ 用户名为 ` radondb_usr` ,release 名为 ` sample` ,RadonDB MySQL 命名空间为 ` default ` ,连接示例如下 :
139
137
140
138
` ` ` shell
141
- $ mysql -h sample-follower -u radondb_usr -p
139
+ $ mysql -h sample-leader.default -u radondb_usr -p
142
140
` ` `
143
141
144
- # ## 跨 NameSpace 访问
145
-
146
- 当客户端与 RadonDB MySQL 集群不在同一个 NameSpace 中时,可以通过 podIP 或服务 ClusterIP 来连接对应节点。
147
-
148
- 1. 查询 pod 列表和服务列表,分别获取需要连接的节点所在的pod 名称或对应的服务名称。
142
+ * 连接 follower 服务(RadonDB MySQL 从节点)
149
143
150
144
` ` ` shell
151
- $ kubectl get pod,svc
145
+ $ mysql -h < follower_service_name > . < namespace > -u < user_name > -p
152
146
` ` `
153
147
154
- 2. 查看 pod/服务的详细信息,获取对应的IP。
148
+ 用户名为 ` radondb_usr ` ,release 名为 ` sample ` ,RadonDB MySQL 命名空间为 ` default ` ,连接示例如下:
155
149
156
150
` ` ` shell
157
- $ kubectl describe pod < pod 名称>
158
- $ kubectl describe svc < 服务名称>
151
+ $ mysql -h sample-follower.default -u radondb_usr -p
159
152
` ` `
160
153
161
- > 注意:pod 重启后 pod IP 会更新,需重新获取 pod IP,建议使用服务的 ClusterIP 来连接节点。
154
+ # ## `clusterIP` 方式
162
155
163
- 3. 连接节点 。
156
+ RadonDB MySQL 的高可用读写 IP 指向 leader 服务的 ` clusterIP ` ,高可用只读 IP 指向 follower 服务的 ` clusterIP ` 。
164
157
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
+ ` ` `
168
161
169
- 用户名为 ` radondb_usr` ,pod IP 为 ` 10.10.128.136` ,连接示例如下:
162
+ 以下示例用户名为 ` radondb_usr` , leader 服务的 clusterIP 为 ` 10.10.128.136` ,连接示例如下:
170
163
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
+ ` ` `
174
167
175
168
# # 卸载
176
169
@@ -179,71 +172,73 @@ service/sample-mysql ClusterIP None <none> 3306/
179
172
卸载当前命名空间下 release 名为 ` demo` 的 RadonDB MySQL Operator。
180
173
181
174
` ` ` shell
182
- helm delete demo
175
+ $ helm delete demo
183
176
` ` `
184
177
185
178
# ## 卸载 RadonDB MySQL
186
179
187
180
卸载 release 名为 ` sample` RadonDB MySQL 集群。
188
181
189
182
` ` ` shell
190
- kubectl delete mysqlclusters.mysql.radondb.com sample
183
+ $ kubectl delete mysqlclusters.mysql.radondb.com sample
191
184
` ` `
192
185
193
186
# ## 卸载自定义资源
194
187
195
188
` ` ` 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
197
192
` ` `
198
193
199
194
# # 配置
200
195
201
196
# ## 容器配置
202
197
203
198
| 参数 | 描述 | 默认值 |
204
- | :---------------------------------- | :--------------------------- | :- ---------------------------------------------------------- |
199
+ | :--------------------------------- | :-------------------------- | : ---------------------------------------------------------- |
205
200
| MysqlVersion | MySQL 版本号 | 5.7 |
206
201
| 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 |
210
205
| MysqlOpts.InitTokuDB | 是否启用TokuDB | true |
211
- | MysqlOpts.MysqlConf | MySQL 配置 | - |
206
+ | MysqlOpts.MysqlConf | MySQL 配置 | - |
212
207
| 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 |
216
211
| 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 |
219
214
| MetricsOpts.Resources | Metrics 容器配额 | 预留: cpu 10m, 内存 32Mi; < /br> 限制: cpu 100m, 内存 128Mi |
220
215
221
216
# ## 节点配置
222
217
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 |
238
233
239
234
# ## 持久化配置
240
235
241
236
| 参数 | 描述 | 默认值 |
242
- | :------------------------ | :-------------- | :- ------------ |
237
+ | :----------------------- | :------------- | : ------------ |
243
238
| Persistence.Enabled | 是否启用持久化 | true |
244
239
| Persistence.AccessModes | 存储卷访问模式 | ReadWriteOnce |
245
- | Persistence.StorageClass | 存储卷类型 | - |
246
- | Persistence.Size | 存储卷容量 | 10Gi |
240
+ | Persistence.StorageClass | 存储卷类型 | - |
241
+ | Persistence.Size | 存储卷容量 | 10Gi |
247
242
248
243
# # 参考
249
244
0 commit comments