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 配置