diff --git a/README.md b/README.md
index 9a7f51a3..b33ba6ff 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,8 @@ RadonDB MySQL Kubernetes supports deployment and management of RaodnDB MySQL clu
- Leader-follower switching in second-level
- Strongly consistent data for cluster switching
- Cluster management
-- Monitoring and alerting
+- [Monitoring and alerting](docs/deploy_monitoring.md)
+- [Backups](docs/deploy_backup_restore_s3.md)
- Logs
- Account management
@@ -33,20 +34,20 @@ RadonDB MySQL Kubernetes supports deployment and management of RaodnDB MySQL clu
### Helm
-- [Deploy RadonDB MySQL on Kubernetes](docs/Kubernetes/deploy_radondb-mysql_on_kubernetes.md)
-- [Deploy RadonDB MySQL through git on Kubesphere](docs/KubeSphere/deploy_radondb-mysql_on_kubesphere.md)
-- [Deploy RadonDB MySQL through helm repo on Kubesphere](docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_repo.md)
-- [Deploy RadonDB MySQL through Appstore of KubeSphere](docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_appstore.md)
+- [Deploy RadonDB MySQL on Kubernetes](docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md)
+- [Deploy RadonDB MySQL through git on Kubesphere](docs/kubesphere/deploy_radondb-mysql_on_kubesphere.md)
+- [Deploy RadonDB MySQL through helm repo on Kubesphere](docs/kubesphere/deploy_radondb-mysql_on_kubesphere_repo.md)
+- [Deploy RadonDB MySQL through Appstore of KubeSphere](docs/kubesphere/deploy_radondb-mysql_on_kubesphere_appstore.md)
### Operator
-- [Deploy RadonDB MySQL on Kubernetes](docs/Kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
+- [Deploy RadonDB MySQL on Kubernetes](docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
## Roadmap
| Release | Features | Mode |
|------|--------|--------|
-| 1.0 | High availability
Non-centralized automatic leader election
Second-level switching
Strongly consistent data
Cluster management
Monitoring and alerting
Logs
Account management | Helm |
+| 1.0 | Cluster management
Monitoring and alerting
Logs
Account management | Helm |
| 2.0 | Node management
Automatic expansion and shrinkage capacity
Upgrade
Backups and Restorations
Automatic failover
Automatic rebuild node
Automatic restart service(all or signal node)
Account management(API)
Migrating Data online | Operator |
| 3.0 | Automatic O&M
Multiple node roles
Disaster Recovery
SSL transmission encryption | Operator |
@@ -56,17 +57,17 @@ RadonDB MySQL Kubernetes supports deployment and management of RaodnDB MySQL clu
## License
-RadonDB MySQL is released under the Apache 2.0, see [LICENSE](./LICENSE).
+RadonDB MySQL is released under the Apache 2.0, see [License](./LICENSE).
## Discussion and Community
- Forum
- The RadonDB MySQL topic is in [Kubesphere Community](https://kubesphere.com.cn/forum/t/radondb).
+ The RadonDB MySQL topic is in [KubeSphere Community](https://kubesphere.com.cn/forum/t/radondb).
- Please pay attention to our official account.
- ![](docs/images/qrcode_for_gh_ffb9d7c5dc1f_258.jpg)
+ ![](docs/images/vx_code_258.jpg)
---
diff --git a/README_zh.md b/README_zh.md
index 7a6eb44d..c3793650 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -25,7 +25,8 @@ RadonDB MySQL Kubernetes支持在[Kubernetes](https://kubernetes.io)和[KubeSphe
- 主从秒级切换
- 集群切换的数据强一致性
- 集群管理
-- 监控告警
+- [监控告警](docs/deploy_monitoring.md)
+- [备份](docs/deploy_backup_restore_s3.md)
- 集群日志管理
- 账户管理
@@ -33,20 +34,20 @@ RadonDB MySQL Kubernetes支持在[Kubernetes](https://kubernetes.io)和[KubeSphe
### Helm
-- [ 在 Kubernetes 上部署 RadonDB MySQL 集群](docs/Kubernetes/deploy_radondb-mysql_on_kubernetes.md)
-- [在 KubeSphere 上通过 Git 部署 RadonDB MySQL 集群](docs/KubeSphere/deploy_radondb-mysql_on_kubesphere.md)
-- [在 KubeSphere 上通过 Helm Repo 部署 RadonDB MySQL 集群](docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_repo.md)
-- [在 KubeSphere 上通过应用商店部署 RadonDB MySQL 集群](docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_appstore.md)
+- [ 在 Kubernetes 上部署 RadonDB MySQL 集群](docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md)
+- [在 KubeSphere 上通过 Git 部署 RadonDB MySQL 集群](docs/kubesphere/deploy_radondb-mysql_on_kubesphere.md)
+- [在 KubeSphere 上通过 Helm Repo 部署 RadonDB MySQL 集群](docs/kubesphere/deploy_radondb-mysql_on_kubesphere_repo.md)
+- [在 KubeSphere 上通过应用商店部署 RadonDB MySQL 集群](docs/kubesphere/deploy_radondb-mysql_on_kubesphere_appstore.md)
### Operator
-- [在 Kubernetes 上部署 RadonDB MySQL 集群](docs/Kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
+- [在 Kubernetes 上部署 RadonDB MySQL 集群](docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md)
## 路线图
| 版本 | 功能 | 实现方式 |
|------|--------|------|
-| 1.0 | MySQL 高可用
无中心化领导者自动选举
主从秒级切换
数据强一致性
集群管理
监控告警
集群日志管理
账户管理 | Helm |
+| 1.0 | 集群管理
监控告警
集群日志管理
账户管理 | Helm |
| 2.0 | 增删节点
自动扩缩容
升级集群
备份与恢复
故障自动转移
自动重建节点
自动重启服务
账户管理(提供 API 接口)
在线迁移 | Operator |
| 3.0 | 自动化运维
多节点角色
灾备集群
SSL 传输加密 | Operator |
@@ -56,17 +57,17 @@ RadonDB MySQL Kubernetes支持在[Kubernetes](https://kubernetes.io)和[KubeSphe
## 协议
-RadonDB MySQL 基于 Apache 2.0 协议,详见 [LICENSE](./LICENSE)。
+RadonDB MySQL 基于 Apache 2.0 协议,详见 [License](./LICENSE)。
## 欢迎加入社区话题互动
- 论坛
- 请加入[Kubesphere 开发者社区](https://kubesphere.com.cn/forum/t/radondb) RadonDB MySQL 话题专区。
+ 请加入[KubeSphere 开发者社区](https://kubesphere.com.cn/forum/t/radondb) RadonDB MySQL 话题专区。
-- 请关注我们的微信公众号
+- 欢迎关注微信公众号
- ![](docs/images/qrcode_for_gh_ffb9d7c5dc1f_258.jpg)
+ ![](docs/images/vx_code_258.jpg)
---
diff --git "a/docs/KubeSphere/png/\344\270\273\350\212\202\347\202\271\347\253\257\345\217\243.png" "b/docs/KubeSphere/png/\344\270\273\350\212\202\347\202\271\347\253\257\345\217\243.png"
deleted file mode 100644
index 75e8452d..00000000
Binary files "a/docs/KubeSphere/png/\344\270\273\350\212\202\347\202\271\347\253\257\345\217\243.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\344\273\216\350\212\202\347\202\271\347\253\257\345\217\243.png" "b/docs/KubeSphere/png/\344\273\216\350\212\202\347\202\271\347\253\257\345\217\243.png"
deleted file mode 100644
index 0a0bd51a..00000000
Binary files "a/docs/KubeSphere/png/\344\273\216\350\212\202\347\202\271\347\253\257\345\217\243.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\344\274\201\344\270\232\347\251\272\351\227\264.png" "b/docs/KubeSphere/png/\344\274\201\344\270\232\347\251\272\351\227\264.png"
deleted file mode 100644
index bc181864..00000000
Binary files "a/docs/KubeSphere/png/\344\274\201\344\270\232\347\251\272\351\227\264.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\345\272\224\347\224\250\347\256\241\347\220\206.png" "b/docs/KubeSphere/png/\345\272\224\347\224\250\347\256\241\347\220\206.png"
deleted file mode 100644
index c616532e..00000000
Binary files "a/docs/KubeSphere/png/\345\272\224\347\224\250\347\256\241\347\220\206.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\345\272\224\347\224\250\350\264\237\350\275\275.png" "b/docs/KubeSphere/png/\345\272\224\347\224\250\350\264\237\350\275\275.png"
deleted file mode 100644
index 748408bf..00000000
Binary files "a/docs/KubeSphere/png/\345\272\224\347\224\250\350\264\237\350\275\275.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\346\216\247\345\210\266\345\217\260\351\203\250\347\275\262\346\210\220\345\212\237.png" "b/docs/KubeSphere/png/\346\216\247\345\210\266\345\217\260\351\203\250\347\275\262\346\210\220\345\212\237.png"
deleted file mode 100644
index cb155f0c..00000000
Binary files "a/docs/KubeSphere/png/\346\216\247\345\210\266\345\217\260\351\203\250\347\275\262\346\210\220\345\212\237.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\350\256\277\351\227\256\346\226\271\345\274\217.png" "b/docs/KubeSphere/png/\350\256\277\351\227\256\346\226\271\345\274\217.png"
deleted file mode 100644
index a0a3e183..00000000
Binary files "a/docs/KubeSphere/png/\350\256\277\351\227\256\346\226\271\345\274\217.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\350\277\236\346\216\245\345\256\242\346\210\267\347\253\257\350\212\202\347\202\271.png" "b/docs/KubeSphere/png/\350\277\236\346\216\245\345\256\242\346\210\267\347\253\257\350\212\202\347\202\271.png"
deleted file mode 100644
index 16d73747..00000000
Binary files "a/docs/KubeSphere/png/\350\277\236\346\216\245\345\256\242\346\210\267\347\253\257\350\212\202\347\202\271.png" and /dev/null differ
diff --git "a/docs/KubeSphere/png/\351\241\271\347\233\256\347\256\241\347\220\206.png" "b/docs/KubeSphere/png/\351\241\271\347\233\256\347\256\241\347\220\206.png"
deleted file mode 100644
index 9ff9a796..00000000
Binary files "a/docs/KubeSphere/png/\351\241\271\347\233\256\347\256\241\347\220\206.png" and /dev/null differ
diff --git a/docs/_images/config_dashboard.png b/docs/_images/config_dashboard.png
new file mode 100644
index 00000000..01cf8e3b
Binary files /dev/null and b/docs/_images/config_dashboard.png differ
diff --git a/docs/_images/monitor_overview.png b/docs/_images/monitor_overview.png
new file mode 100644
index 00000000..79815cdb
Binary files /dev/null and b/docs/_images/monitor_overview.png differ
diff --git a/docs/_images/monitor_service.png b/docs/_images/monitor_service.png
new file mode 100644
index 00000000..f970dca4
Binary files /dev/null and b/docs/_images/monitor_service.png differ
diff --git a/docs/_images/mysql_exporter.png b/docs/_images/mysql_exporter.png
new file mode 100644
index 00000000..5bce6e47
Binary files /dev/null and b/docs/_images/mysql_exporter.png differ
diff --git a/docs/_images/pod_metrics.png b/docs/_images/pod_metrics.png
new file mode 100644
index 00000000..8a3024d9
Binary files /dev/null and b/docs/_images/pod_metrics.png differ
diff --git a/docs/_images/prometheus_grafana.png b/docs/_images/prometheus_grafana.png
new file mode 100644
index 00000000..aa8405ec
Binary files /dev/null and b/docs/_images/prometheus_grafana.png differ
diff --git a/docs/deploy_monitoring.md b/docs/deploy_monitoring.md
new file mode 100644
index 00000000..06c1b3b7
--- /dev/null
+++ b/docs/deploy_monitoring.md
@@ -0,0 +1,192 @@
+Contents
+=================
+
+ * [开启监控指标](#开启监控指标)
+ * [简介](#简介)
+ * [准备工作](#准备工作)
+ * [部署步骤](#部署步骤)
+ * [步骤 1:配置 serviceMonitor](#步骤-1-配置-servicemonitor)
+ * [步骤 2: 配置 metricsOpts](#步骤-2-配置-metricsopts)
+ * [查看监控服务](#查看监控服务)
+ * [通过客户端查看](#通过客户端查看)
+ * [在 KubeSphere 平台查看](#在-kubesphere-平台查看)
+ * [查看监控](#查看监控)
+ * [通过 KubeSphere 自定义监控](#通过-kubesphere-自定义监控)
+ * [通过 Prometheus + Grafana 平台](#通过-prometheus--grafana-平台)
+
+# 开启监控指标
+
+## 简介
+
+[Prometheus](https://prometheus.io/) 基于文本的暴露格式,已经成为云原生监控领域事实上的标准格式。
+
+RadonDB MySQL 监控引擎基于 [Prometheus MySQLd Exporter](https://github.com/prometheus/mysqld_exporter) 定义。通过 `mysqld-exporter` 抓取 RadonDB MySQL 服务指标,再通过接入第三方应用平台实现监控指标可视化。
+
+本教程演示如何开启 RadonDB MySQL 监控指标。
+
+## 准备工作
+
+- 已准备可用 Kubernetes 或 KubeSphere 集群。
+- 已获取RadonDB MySQL Operator 2.1.0 及以上版本。
+
+## 部署步骤
+
+### 步骤 1: 配置 serviceMonitor
+
+`serviceMonitor` 是定义 RadonDB MySQL Operator 自动监控引擎的参数,开启后将自动绑定 `mysqld_exporter` 与 Prometheus。
+
+`serviceMonitor` 参数包含如下字段:
+
+```bash
+serviceMonitor:
+ enabled: true
+ ## Additional labels for the serviceMonitor. Useful if you have multiple prometheus operators running to select only specific ServiceMonitors
+ # additionalLabels:
+ # prometheus: prom-internal
+ interval: 10s
+ scrapeTimeout: 3s
+ # jobLabel:
+ # targetLabels:
+ # podTargetLabels:
+ namespaceSelector:
+ any: true
+ selector:
+ matchLabels:
+ app.kubernetes.io/managed-by: mysql.radondb.com
+ app.kubernetes.io/name: mysql
+```
+
+您可以在 `charts/mysql-operator/values.yaml` 文件中配置 `serviceMonitor`。
+
+- 新部署 Operator 时, `serviceMonitor.enabled` 默认为 **true**,表示默认开启。
+- 已部署 Operator 2.1.0 以下版本的集群,需重新部署 Operator。
+
+### 步骤 2: 配置 metricsOpts
+
+`metricsOpts` 是 CRD `clusters.mysql.radondb.com` 中定义 RadonDB MySQL 集群监控的参数,可通过配置`mysql_v1alpha1_cluster.yaml` 文件中参数值开启监控服务。
+
+`metricsOpts` 参数包含如下字段:
+
+```bash
+metricsOpts:
+ enabled: false
+ image: prom/mysqld-exporter:v0.12.1
+
+ resources:
+ requests:
+ cpu: 10m
+ memory: 32Mi
+ limits:
+ cpu: 100m
+ memory: 128Mi
+```
+
+`metricsOpts.enabled` 默认为 **false**,需手动设置为 **true**。
+
+- 选择设置 `metricsOpts.enabled` 状态为 **true**,开启集群监控功能。
+- 设置资源参数值,定义监控容器资源配额大小。
+
+文件参数修改完成后,使用如下指令应用配置,部署/更新集群回显信息如下:
+
+```bash
+$ kubectl apply -f config/sample/mysql_v1alpha1_cluster.yaml
+cluster.mysql.radondb.com/sample created/configured
+```
+
+## 查看监控服务
+
+### 通过客户端查看
+
+您可以通过如下指令查看集群监控服务和 serviceMonitor 信息。
+
+```bash
+$ kubectl get service,servicemonitor
+
+$ kubectl describe servicemonitor
+```
+
+**预期效果**
+
+```shell
+$ kubectl get service,servicemonitor
+NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
+service/mysql-operator-metrics ClusterIP 10.96.242.205 8443/TCP 3h25m
+service/sample-follower ClusterIP 10.96.2.234 3306/TCP 21h
+service/sample-leader ClusterIP 10.96.30.238 3306/TCP 21h
+service/sample-metrics ClusterIP 10.96.7.222 9104/TCP 3h24m
+service/sample-mysql ClusterIP None 3306/TCP 21h
+
+NAME AGE
+servicemonitor.monitoring.coreos.com/demo-mysql-operator 3h25m
+
+$ kubectl describe servicemonitor demo-mysql-operator
+Name: test-radondb-mysql-metrics
+Namespace: default
+Labels: app=test-radondb-mysql
+ app.kubernetes.io/managed-by=Helm
+ app.kubernetes.io/vendor=kubesphere
+ chart=radondb-mysql-1.0.0
+ heritage=Helm
+ release=test
+Annotations: kubesphere.io/creator: admin
+API Version: monitoring.coreos.com/v1
+Kind: ServiceMonitor
+......
+Spec:
+ Endpoints:
+ Interval: 1m
+ Path: /metrics
+ Port: metrics
+ Scheme: http
+ Scrape Timeout: 10s
+......
+```
+
+### 在 KubeSphere 平台查看
+
+在 KubeSphere 企业空间部署的 RadonDB MySQL Operator 和集群,开启监控后,可在如下页面查看监控服务状态。
+
+- 在项目空间**应用负载**下的**服务**页面,点击 `<集群名称>-metrics `,可查看监控服务信息。
+
+ ![查看监控服务](_images/monitor_service.png)
+
+- 在项目空间**应用负载**下的**容器组**页面,点击一个容器的名称,可查看该容器中 `metrics` 资源状态。
+
+ ![查看监控资源状态](_images/pod_metrics.png)
+
+## 查看监控
+
+### 通过 KubeSphere 自定义监控
+
+> **说明**
+>
+> RadonDB MySQL Operator 和集群需部署在 KubeSphere。
+
+KubeSphere 的监控引擎基于 Prometheus 和 Prometheus Operator。使用 KubeSphere 的自定义监控功能支持以可视化的形式监控 RadonDB MySQL 指标。
+
+1. 在集群同一项目中,选择**监控告警**下的**自定义监控**,点击**创建**。
+2. 在对话框中,选择 **MySQL** 模版,并继续配置监控模版。
+
+ ![选择模版](_images/mysql_exporter.png)
+
+3. 点击**保存模版**,即新创建监控面板。
+
+ ![保存监控模版](_images/config_dashboard.png)
+
+4. 新建监控面板需等待约十分钟,即可查看监控数据。
+
+ ![查看监控](_images/monitor_overview.png)
+
+更多详情,请查看 KubeSphere [自定义监控介绍](https://kubesphere.io/zh/docs/project-user-guide/custom-application-monitoring/introduction/)和[可视化监控](https://kubesphere.io/zh/docs/project-user-guide/custom-application-monitoring/visualization/overview/)。
+
+### 通过 Prometheus + Grafana 平台
+
+[Grafana](https://github.com/grafana/grafana) 是一个跨平台、开源的数据可视化网络应用程序平台。通过 Prometheus + Grafana 平台查看监控基本原理如下:
+
+- 通过 [mysql_exporter](https://github.com/prometheus/mysqld_exporter) 获取 RadonDB MySQL 服务监控数据.
+- 通过 [node_exporter](https://github.com/prometheus/node_exporter) 获得 RadonDB MySQL 服务器的监控数据。
+- 将监控数据传到 [Prometheus](https://prometheus.io/download/) 后,通过配置数据源,最终在 Grafana 呈现丰富的监控数据图表和警告。
+
+![基本原理](_images/prometheus_grafana.png)
+
+更多 Grafana 可视化监控使用说明,请参见 [Grafana Dashboards](https://grafana.com/docs/grafana/latest/dashboards/)。
diff --git a/docs/images/qrcode_for_gh_ffb9d7c5dc1f_1280.jpg b/docs/images/vx_code_1280.jpg
similarity index 100%
rename from docs/images/qrcode_for_gh_ffb9d7c5dc1f_1280.jpg
rename to docs/images/vx_code_1280.jpg
diff --git a/docs/images/qrcode_for_gh_ffb9d7c5dc1f_258.jpg b/docs/images/vx_code_258.jpg
similarity index 100%
rename from docs/images/qrcode_for_gh_ffb9d7c5dc1f_258.jpg
rename to docs/images/vx_code_258.jpg
diff --git a/docs/images/qrcode_for_gh_ffb9d7c5dc1f_430.jpg b/docs/images/vx_code_430.jpg
similarity index 100%
rename from docs/images/qrcode_for_gh_ffb9d7c5dc1f_430.jpg
rename to docs/images/vx_code_430.jpg
diff --git a/docs/Kubernetes/deploy_radondb-mysql_on_kubernetes.md b/docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md
similarity index 96%
rename from docs/Kubernetes/deploy_radondb-mysql_on_kubernetes.md
rename to docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md
index 49472bea..f267f457 100644
--- a/docs/Kubernetes/deploy_radondb-mysql_on_kubernetes.md
+++ b/docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md
@@ -209,7 +209,9 @@ kubectl get statefulset,pod,svc
mysql -p <节点地址> -u <用户名> -P <节点端口> -p
```
-> 说明:使用外网主机连接可能会出现 `SSL connection error`,需要加上 `--ssl-mode=DISABLE` 参数,关闭 SSL。
+> **说明**
+>
+> 使用外网主机连接可能会出现 `SSL connection error`,需要加上 `--ssl-mode=DISABLE` 参数,关闭 SSL。
## 配置
@@ -304,7 +306,11 @@ kubectl get statefulset,pod,svc
> *"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
-**注意**:PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 livenessProbe.initialDelaySeconds 的值。数据库初始化的默认限制是60秒 (livenessProbe.initialDelaySeconds + livenessProbe.periodSeconds * livenessProbe.failureThreshold)。如果初始化时间超过限制,kubelet将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
+> **注意**
+>
+> PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 `livenessProbe.initialDelaySeconds` 的值。
+>
+> 数据库初始化的默认限制是60秒 (l`ivenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`)。如果初始化时间超过限制,kubelet 将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
## 自定义 MYSQL 配置
diff --git a/docs/Kubernetes/deploy_radondb-mysql_operator_on_k8s.md b/docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md
similarity index 100%
rename from docs/Kubernetes/deploy_radondb-mysql_operator_on_k8s.md
rename to docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md
diff --git "a/docs/KubeSphere/png/\345\272\224\347\224\250\351\205\215\347\275\256\347\225\214\351\235\242.png" b/docs/kubesphere/_images/application.png
similarity index 100%
rename from "docs/KubeSphere/png/\345\272\224\347\224\250\351\205\215\347\275\256\347\225\214\351\235\242.png"
rename to docs/kubesphere/_images/application.png
diff --git "a/docs/KubeSphere/png/\345\272\224\347\224\250\345\225\206\345\272\227.png" b/docs/kubesphere/_images/appstore.png
similarity index 100%
rename from "docs/KubeSphere/png/\345\272\224\347\224\250\345\225\206\345\272\227.png"
rename to docs/kubesphere/_images/appstore.png
diff --git "a/docs/KubeSphere/png/\345\272\224\347\224\250\345\225\206\345\272\227\344\270\255\347\232\204 RadonDB MySQL.png" b/docs/kubesphere/_images/appstore_radondb_mysql.png
similarity index 100%
rename from "docs/KubeSphere/png/\345\272\224\347\224\250\345\225\206\345\272\227\344\270\255\347\232\204 RadonDB MySQL.png"
rename to docs/kubesphere/_images/appstore_radondb_mysql.png
diff --git "a/docs/KubeSphere/png/\347\274\226\350\276\221\345\244\226\347\275\221\350\256\277\351\227\256.png" b/docs/kubesphere/_images/config_vnet.png
similarity index 100%
rename from "docs/KubeSphere/png/\347\274\226\350\276\221\345\244\226\347\275\221\350\256\277\351\227\256.png"
rename to docs/kubesphere/_images/config_vnet.png
diff --git "a/docs/KubeSphere/png/\347\241\256\350\256\244\351\203\250\347\275\262.png" b/docs/kubesphere/_images/deploy_confirm.png
similarity index 100%
rename from "docs/KubeSphere/png/\347\241\256\350\256\244\351\203\250\347\275\262.png"
rename to docs/kubesphere/_images/deploy_confirm.png
diff --git "a/docs/KubeSphere/png/\351\203\250\347\275\262 RadonDB MySQL.png" b/docs/kubesphere/_images/deploy_radondb_mysql.png
similarity index 100%
rename from "docs/KubeSphere/png/\351\203\250\347\275\262 RadonDB MySQL.png"
rename to docs/kubesphere/_images/deploy_radondb_mysql.png
diff --git "a/docs/KubeSphere/png/\351\203\250\347\275\262\346\210\220\345\212\237\346\216\247\345\210\266\345\217\260\346\230\276\347\244\272.png" b/docs/kubesphere/_images/deploy_success.png
similarity index 100%
rename from "docs/KubeSphere/png/\351\203\250\347\275\262\346\210\220\345\212\237\346\216\247\345\210\266\345\217\260\346\230\276\347\244\272.png"
rename to docs/kubesphere/_images/deploy_success.png
diff --git "a/docs/KubeSphere/png/\350\264\237\350\275\275\345\235\207\350\241\241.png" b/docs/kubesphere/_images/loadbalancer.png
similarity index 100%
rename from "docs/KubeSphere/png/\350\264\237\350\275\275\345\235\207\350\241\241.png"
rename to docs/kubesphere/_images/loadbalancer.png
diff --git "a/docs/KubeSphere/png/\350\264\237\350\275\275\345\235\207\350\241\241\347\253\257\345\217\243.png" b/docs/kubesphere/_images/loadbalancer_port.png
similarity index 100%
rename from "docs/KubeSphere/png/\350\264\237\350\275\275\345\235\207\350\241\241\347\253\257\345\217\243.png"
rename to docs/kubesphere/_images/loadbalancer_port.png
diff --git "a/docs/KubeSphere/png/\350\212\202\347\202\271\347\253\257\345\217\243.png" b/docs/kubesphere/_images/node_port.png
similarity index 100%
rename from "docs/KubeSphere/png/\350\212\202\347\202\271\347\253\257\345\217\243.png"
rename to docs/kubesphere/_images/node_port.png
diff --git a/docs/KubeSphere/png/nodeport.png b/docs/kubesphere/_images/nodeport.png
similarity index 100%
rename from docs/KubeSphere/png/nodeport.png
rename to docs/kubesphere/_images/nodeport.png
diff --git "a/docs/KubeSphere/png/RadonDB MySQL\350\277\220\350\241\214\344\270\255.png" b/docs/kubesphere/_images/running.png
similarity index 100%
rename from "docs/KubeSphere/png/RadonDB MySQL\350\277\220\350\241\214\344\270\255.png"
rename to docs/kubesphere/_images/running.png
diff --git "a/docs/KubeSphere/png/\346\234\215\345\212\241.png" b/docs/kubesphere/_images/service.png
similarity index 100%
rename from "docs/KubeSphere/png/\346\234\215\345\212\241.png"
rename to docs/kubesphere/_images/service.png
diff --git a/docs/KubeSphere/deploy_radondb-mysql_on_kubesphere.md b/docs/kubesphere/deploy_radondb-mysql_on_kubesphere.md
similarity index 92%
rename from docs/KubeSphere/deploy_radondb-mysql_on_kubesphere.md
rename to docs/kubesphere/deploy_radondb-mysql_on_kubesphere.md
index dc132f4f..172cafb1 100644
--- a/docs/KubeSphere/deploy_radondb-mysql_on_kubesphere.md
+++ b/docs/kubesphere/deploy_radondb-mysql_on_kubesphere.md
@@ -49,14 +49,15 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
### 连接 KubeSphere 客户端节点
-> 说明:如下示例适用于 KubeSphere 安装在 [青云QingCloud AppCenter](https://appcenter.qingcloud.com/apps/app-cmgbd5k2) 的场景。
+> **说明**
+>
+> 如下示例适用于 KubeSphere 安装在 [青云QingCloud AppCenter](https://appcenter.qingcloud.com/apps/app-cmgbd5k2) 的场景。
通过[青云 QingCloud 控制台](https://console.qingcloud.com/) 直接连接客户端节点。
- ![连接客户端节点](png/连接客户端节点.png)
+- 默认 root 用户密码为 KubeSphere 集群 ID。
-> - 默认 root 用户密码为 KubeSphere 集群 ID。
-> - 通过第三方 SSH 工具连接客户端节点,需要在配置参数中填写 KubeSphere 的 `用户 SSH 公钥` 参数。
+- 通过第三方 SSH 工具连接客户端节点,需要在配置参数中填写 KubeSphere 的 `用户 SSH 公钥` 参数。
## 部署步骤
@@ -75,7 +76,7 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
在 radondb-mysql-kubernetes 目录路径下,选择如下方式,部署 RadonDB MySQL 实例。
> release 是运行在 Kubernetes 集群中的 Chart 的实例。
->
+
* **默认部署方式**
以下命令指定 release 名为 `demo`,将创建一个名为 `demo-radondb-mysql` 的有状态副本集。
@@ -117,40 +118,42 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
在**项目管理**管理中心,选择 **应用负载 > 工作负载**,并选择**有状态副本集**页签,可查看到名为 `demo-radondb-mysql` 的副本集,则 RadonDB MySQL 集群已成功部署。
-![控制台部署成功](png/控制台部署成功.png)
+![控制台部署成功](_images/deploy_success.png)
## 访问 RadonDB MySQL
您需准备一个用于连接 RadonDB MySQL 的客户端。
-> **注意:** 建议通过使用在同一 VPC 下主机或青云 VPN 服务来访问 RadonDB MySQL。不要通过端口转发的方式将服务暴露到公网,避免对数据库服务造成重大影响!
+> **注意**
+>
+> 建议通过使用在同一 VPC 下主机或 VPN 服务来访问 RadonDB MySQL。不要通过端口转发的方式将服务暴露到公网,避免对数据库服务造成重大影响!
### 开启服务网络访问
1. 在 **项目管理** 界面中,选择 **应用负载** > **服务**,查看当前项目中的服务列表。
- ![服务](png/服务.png)
+ ![服务](_images/service.png)
2. 进入需要开启外网访问的服务中,选择 **更多操作** > **编辑外网访问**。
- ![编辑外网访问](png/编辑外网访问.png)
+ ![编辑外网访问](_images/config_vnet.png)
- **NodePort方式**
选择 NodePort。
- ![nodeport](png/nodeport.png)
+ ![nodeport](_images/nodeport.png)
点击确定自动生成转发端口,在 KubeSphere 集群同一网络内可通过集群IP/节点IP和此端口访问服务。
- ![节点端口](png/节点端口.png)
+ ![节点端口](_images/node_port.png)
- **Loadbalancer方式**
选择 LoadBalancer。
- ![负载均衡](png/负载均衡.png)
+ ![负载均衡](_images/loadbalancer.png)
在 `service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids` 参数中填写可用的 EIP ID,系统会自动为 EIP 创建负载均衡器和对应的监听器。
@@ -158,7 +161,7 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
点击确定自动生成转发端口,在 KubeSphere 集群同一网络内可通过集群IP/节点IP和此端口访问服务。
- ![负载均衡端口](png/负载均衡端口.png)
+ ![负载均衡端口](_images/loadbalancer_port.png)
### 连接节点
@@ -275,9 +278,13 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
默认情况下,会创建一个 PersistentVolumeClaim 并将其挂载到指定目录中。 若想禁用此功能,您可以更改 `values.yaml` 禁用持久化,改用 emptyDir。
-> *"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
+*"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
-**注意**:PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 livenessProbe.initialDelaySeconds 的值。数据库初始化的默认限制是60秒 (livenessProbe.initialDelaySeconds + livenessProbe.periodSeconds * livenessProbe.failureThreshold)。如果初始化时间超过限制,kubelet将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
+> **注意**
+>
+> PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 `livenessProbe.initialDelaySeconds` 的值。
+>
+> 数据库初始化的默认限制是60秒 (l`ivenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`)。如果初始化时间超过限制,kubelet 将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
## 自定义 MYSQL 配置
diff --git a/docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_appstore.md b/docs/kubesphere/deploy_radondb-mysql_on_kubesphere_appstore.md
similarity index 91%
rename from docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_appstore.md
rename to docs/kubesphere/deploy_radondb-mysql_on_kubesphere_appstore.md
index b32bd0d4..649f74c9 100644
--- a/docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_appstore.md
+++ b/docs/kubesphere/deploy_radondb-mysql_on_kubesphere_appstore.md
@@ -39,7 +39,7 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
- [在 Linux 上安装 Kubersphere](https://kubesphere.io/zh/docs/installing-on-linux/)。
-> KubeSphere 版本需更新到 3.1。
+> KubeSphere 需更新到 3.1.X 及以上版本。
### 创建 KubeSphere 多租户系统
@@ -49,58 +49,60 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
1. 打开 KubeSphere 控制台,在 `demo-project` 项目的**概览**页面,点击左上角的**应用商店**。
- ![应用商店](png/应用商店.png)
+ ![应用商店](_images/appstore.png)
2. 找到 RadonDB MySQL,点击**应用信息**页面上的**部署**。
- ![应用商店中的 RadonDB MySQL](png/应用商店中的%20RadonDB%20MySQL.png)
+ ![应用商店中的 RadonDB MySQL](_images/appstore_radondb_mysql.png)
- ![部署 RadonDB MySQL](png/部署%20RadonDB%20MySQL.png)
+ ![部署 RadonDB MySQL](_images/deploy_radondb_mysql..png)
3. 设置名称并选择应用版本。请确保将 RadonDB MySQL 部署在 `demo-project` 中,点击**下一步**。
- ![确认部署](png/确认部署.png)
+ ![确认部署](_images/deploy_confirm.png)
4. 在**应用配置**页面,可参考[配置](#配置)定义 RadonDB MySQL 配置参数。操作完成后,点击**部署**。
- ![应用配置界面](png/应用配置界面.png)
+ ![应用配置界面](_images/application.png)
5. 稍等片刻待 RadonDB MySQL 启动并运行。
- ![RadonDB MySQL 运行中](png/RadonDB%20MySQL运行中.png)
+ ![RadonDB MySQL 运行中](_images/running.png)
## 访问 RadonDB MySQL
您需准备一个用于连接 RadonDB MySQL 的客户端。
-> **注意:** 建议通过使用在同一 VPC 下主机或青云 VPN 服务来访问 RadonDB MySQL。不要通过端口转发的方式将服务暴露到公网,避免对数据库服务造成重大影响!
+> **注意**
+>
+> 建议通过使用在同一 VPC 下主机或青云 VPN 服务来访问 RadonDB MySQL。不要通过端口转发的方式将服务暴露到公网,避免对数据库服务造成重大影响!
### 开启服务网络访问
1. 在 **项目管理** 界面中,选择 **应用负载** > **服务**,查看当前项目中的服务列表。
- ![服务](png/服务.png)
+ ![服务](_images/service.png)
2. 进入需要开启外网访问的服务中,选择 **更多操作** > **编辑外网访问**。
- ![编辑外网访问](png/编辑外网访问.png)
+ ![编辑外网访问](_images/config_vnet.png)
- **NodePort方式**
选择 NodePort。
- ![nodeport](png/nodeport.png)
+ ![nodeport](_images/nodeport.png)
点击确定自动生成转发端口,在 KubeSphere 集群同一网络内可通过集群IP/节点IP和此端口访问服务。
- ![节点端口](png/节点端口.png)
+ ![节点端口](_images/node_port.png)
- **Loadbalancer方式**
选择 LoadBalancer。
- ![负载均衡](png/负载均衡.png)
+ ![负载均衡](_images/loadbalancer.png)
在 `service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids` 参数中填写可用的 EIP ID,系统会自动为 EIP 创建负载均衡器和对应的监听器。
@@ -108,7 +110,7 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
点击确定自动生成转发端口,在 KubeSphere 集群同一网络内可通过集群IP/节点IP和此端口访问服务。
- ![负载均衡端口](png/负载均衡端口.png)
+ ![负载均衡端口](_images/loadbalancer_port.png)
### 连接节点
@@ -225,9 +227,13 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
默认情况下,会创建一个 PersistentVolumeClaim 并将其挂载到指定目录中。 若想禁用此功能,您可以更改 `values.yaml` 禁用持久化,改用 emptyDir。
-> *"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
+*"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
-**注意**:PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 livenessProbe.initialDelaySeconds 的值。数据库初始化的默认限制是60秒 (livenessProbe.initialDelaySeconds + livenessProbe.periodSeconds * livenessProbe.failureThreshold)。如果初始化时间超过限制,kubelet将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
+> **注意**
+>
+> PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 `livenessProbe.initialDelaySeconds` 的值。
+>
+> 数据库初始化的默认限制是60秒 (l`ivenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`)。如果初始化时间超过限制,kubelet 将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
## 自定义 MYSQL 配置
diff --git a/docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_repo.md b/docs/kubesphere/deploy_radondb-mysql_on_kubesphere_repo.md
similarity index 92%
rename from docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_repo.md
rename to docs/kubesphere/deploy_radondb-mysql_on_kubesphere_repo.md
index 468011a6..ee97137c 100644
--- a/docs/KubeSphere/deploy_radondb-mysql_on_kubesphere_repo.md
+++ b/docs/kubesphere/deploy_radondb-mysql_on_kubesphere_repo.md
@@ -49,14 +49,15 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方
### 连接 KubeSphere 客户端节点
-> 说明:如下示例适用于 KubeSphere 安装在 [青云QingCloud AppCenter](https://appcenter.qingcloud.com/apps/app-cmgbd5k2) 的场景。
+> **说明**
+>
+> 如下示例适用于 KubeSphere 安装在 [青云QingCloud AppCenter](https://appcenter.qingcloud.com/apps/app-cmgbd5k2) 的场景。
通过[青云 QingCloud 控制台](https://console.qingcloud.com/) 直接连接客户端节点。
- ![连接客户端节点](png/连接客户端节点.png)
+- 默认 root 用户密码为 KubeSphere 集群 ID。
-> - 默认 root 用户密码为 KubeSphere 集群 ID。
-> - 通过第三方 SSH 工具连接客户端节点,需要在配置参数中填写 KubeSphere 的 `用户 SSH 公钥` 参数。
+- 通过第三方 SSH 工具连接客户端节点,需要在配置参数中填写 KubeSphere 的 `用户 SSH 公钥` 参数。
### 部署步骤
@@ -127,34 +128,36 @@ demo-radondb-mysql 3/3 25h
您需准备一个用于连接 RadonDB MySQL 的客户端。
-> **注意:** 建议通过使用在同一 VPC 下主机或青云 VPN 服务来访问 RadonDB MySQL。不要通过端口转发的方式将服务暴露到公网,避免对数据库服务造成重大影响!
+> **注意**
+>
+> 建议通过使用在同一 VPC 下主机或 VPN 服务来访问 RadonDB MySQL。不要通过端口转发的方式将服务暴露到公网,避免对数据库服务造成重大影响!
### 开启服务网络访问
1. 在 **项目管理** 界面中,选择 **应用负载** > **服务**,查看当前项目中的服务列表。
- ![服务](png/服务.png)
+ ![服务](_images/service.png)
2. 进入需要开启外网访问的服务中,选择 **更多操作** > **编辑外网访问**。
- ![编辑外网访问](png/编辑外网访问.png)
+ ![编辑外网访问](_images/config_vnet.png)
- **NodePort方式**
选择 NodePort。
- ![nodeport](png/nodeport.png)
+ ![nodeport](_images/nodeport.png)
点击确定自动生成转发端口,在 KubeSphere 集群同一网络内可通过集群IP/节点IP和此端口访问服务。
- ![节点端口](png/节点端口.png)
+ ![节点端口](_images/node_port.png)
- **Loadbalancer方式**
选择 LoadBalancer。
- ![负载均衡](png/负载均衡.png)
+ ![负载均衡](_images/loadbalancer.png)
在 `service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids` 参数中填写可用的 EIP ID,系统会自动为 EIP 创建负载均衡器和对应的监听器。
@@ -162,7 +165,7 @@ demo-radondb-mysql 3/3 25h
点击确定自动生成转发端口,在 KubeSphere 集群同一网络内可通过集群IP/节点IP和此端口访问服务。
- ![负载均衡端口](png/负载均衡端口.png)
+ ![负载均衡端口](_images/loadbalancer_port.png)
### 连接节点
@@ -279,9 +282,13 @@ demo-radondb-mysql 3/3 25h
默认情况下,会创建一个 PersistentVolumeClaim 并将其挂载到指定目录中。 若想禁用此功能,您可以更改 `values.yaml` 禁用持久化,改用 emptyDir。
-> *"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
+*"当 Pod 分配给节点时,将首先创建一个 emptyDir 卷,只要该 Pod 在该节点上运行,该卷便存在。 当 Pod 从节点中删除时,emptyDir 中的数据将被永久删除."*
-**注意**:PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 livenessProbe.initialDelaySeconds 的值。数据库初始化的默认限制是60秒 (livenessProbe.initialDelaySeconds + livenessProbe.periodSeconds * livenessProbe.failureThreshold)。如果初始化时间超过限制,kubelet将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
+> **注意**
+>
+> PersistentVolumeClaim 中可以使用不同特性的 PersistentVolume,其 IO 性能会影响数据库的初始化性能。所以当使用 PersistentVolumeClaim 启用持久化存储时,可能需要调整 `livenessProbe.initialDelaySeconds` 的值。
+>
+> 数据库初始化的默认限制是60秒 (l`ivenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`)。如果初始化时间超过限制,kubelet 将重启数据库容器,数据库初始化被中断,会导致持久数据不可用。
## 自定义 MYSQL 配置