diff --git a/docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md b/docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md index c0306271..20748fe7 100644 --- a/docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md +++ b/docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md @@ -12,9 +12,7 @@ Contents * [步骤 1 : 添加仓库](#步骤-1--添加仓库) * [步骤 2 : 部署](#步骤-2--部署) * [部署校验](#部署校验) - * [连接 RadonDB MySQL](#连接-radondb-mysql) - * [客户端与 RadonDB MySQL 在同一 NameSpace 中](#客户端与-radondb-mysql-在同一-namespace-中) - * [客户端与 RadonDB MySQL 不在同一 NameSpace 中](#客户端与-radondb-mysql-不在同一-namespace-中) + * [访问 RadonDB MySQL](#访问-radondb-mysql) * [配置](#配置) * [持久化](#持久化) * [自定义 MYSQL 配置](#自定义-mysql-配置) @@ -40,15 +38,18 @@ RadonDB MySQL 是基于 MySQL 的开源、高可用、云原生集群解决方 执行如下命令,将 RadonDB MySQL Chart 克隆到 Kubernetes 中。 ```bash -git clone https://github.com/radondb/radondb-mysql-kubernetes.git +$ git clone https://github.com/radondb/radondb-mysql-kubernetes.git ``` - +> **说明** +> > Chart 代表 [Helm](https://helm.sh/zh/docs/intro/using_helm/) 包,包含在 Kubernetes 集群内部运行应用程序、工具或服务所需的所有资源定义。 #### 步骤 2:部署 在 radondb-mysql-kubernetes 目录路径下,选择如下方式,部署 release 实例。 +> **说明** +> > release 是运行在 Kubernetes 集群中的 Chart 的实例。通过命令方式部署,需指定 release 名称。 以下命令指定 release 名为 `demo`,将创建一个名为 `demo-radondb-mysql` 的有状态副本集。 @@ -56,13 +57,13 @@ git clone https://github.com/radondb/radondb-mysql-kubernetes.git * **默认部署方式** ```bash - - cd charts/helm - helm install . demo + # For Helm v2 + $ cd charts/helm + $ helm install . demo - - cd charts/helm - helm install demo . + # For Helm v3 + $ cd charts/helm + $ helm install demo . ``` * **指定参数部署方式** @@ -72,8 +73,8 @@ git clone https://github.com/radondb/radondb-mysql-kubernetes.git 以下示例以创建一个用户名为 `my-user` ,密码为 `my-password` 的标准数据库用户,可访问名为 `my-database` 的数据库。 ```bash - cd charts/helm - helm install demo \ + $ cd charts/helm + $ helm install demo \ --set mysql.mysqlUser=my-user,mysql.mysqlPassword=my-password,mysql.database=my-database . ``` @@ -82,8 +83,8 @@ git clone https://github.com/radondb/radondb-mysql-kubernetes.git 执行如下命令,可通过 value.yaml 配置文件,在安装时配置指定参数。更多安装过程中可配置的参数,请参考 [配置](#配置) 。 ```bash - cd charts/helm - helm install demo -f values.yaml . + $ cd charts/helm + $ helm install demo -f values.yaml . ``` ### 通过 repo 部署 @@ -154,65 +155,66 @@ demo-radondb-mysql 3/3 25h 部署指令执行完成后,查看 RadonDB MySQL 有状态副本集,pod 状态及服务。可查看到相关信息,则 RadonDB MySQL 部署成功。 ```bash -kubectl get statefulset,pod,svc +$ kubectl get statefulset,pod,svc ``` -## 连接 RadonDB MySQL +## 访问 RadonDB MySQL -您需要准备一个用于连接 RadonDB MySQL 的客户端。 +> **注意** +> +> 准备可用于连接 MySQL 的客户端。 +> +> 使用外网客户端连接可能会出现 `SSL connection error`,需要加上 `--ssl-mode=DISABLE` 参数,关闭 SSL。 -### 客户端与 RadonDB MySQL 在同一 NameSpace 中 +- 当客户端的与数据库部署在不同 Kubernetes 集群,请参考 [Kubernetes 访问集群中的应用程序](https://kubernetes.io/zh/docs/tasks/access-application-cluster/),配置端口转发、负载均衡等连接方式。 -当客户端与 RadonDB MySQL 集群在同一个 NameSpace 中时,可使用 leader/follower service 名称代替具体的 ip 和端口。 +- 在 Kubernetes 集群内,支持选择使用 `service_name` 或者 `cluster_IP` 方式访问 RadonDB MySQL。 -- 连接主节点(读写节点)。 - - ```bash - mysql -h -u <用户名> -p - ``` + > **说明** + > + > RadonDB MySQL 提供 leader 服务和 follower 服务用于分别访问主从节点。leader 服务始终指向主节点(读写),follower 服务始终指向从节点(只读)。 -- 连接从节点(只读节点)。 - ```bash - mysql -h -u <用户名> -p - ``` +以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式。 -### 客户端与 RadonDB MySQL 不在同一 NameSpace 中 +### `service_name` 方式 -当客户端与 RadonDB MySQL 集群不在同一个 NameSpace 中时,需先分别获取连接所需的节点地址、节点端口、服务名称。 +* 连接 leader 服务(RadonDB MySQL 主节点) -1. 查询 pod 列表和服务列表,分别获取 pod 名称和服务名称。 + ```shell + $ mysql -h . -u -p + ``` - ```bash - kubectl get pod,svc - ``` + 用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下: -2. 开启服务网络访问。 + ```shell + $ mysql -h sample-leader.default -u radondb_usr -p + ``` - 执行如下命令,打开服务配置文件,将 spec 下 type 参数设置为 `NodePort`。 +* 连接 follower 服务(RadonDB MySQL 从节点) - ```bash - kubectl edit svc <服务名称> - ``` + ```shell + $ mysql -h . -u -p + ``` -3. 分别获取 pod 所在的节点地址和节点端口。 + 用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下: - ```bash - kubectl describe pod - ``` + ```shell + $ mysql -h sample-follower.default -u radondb_usr -p + ``` - ```bash - kubectl describe svc <服务名称> - ``` +### `clusterIP` 方式 -4. 连接节点。 +RadonDB MySQL 的高可用读写 IP 指向 leader 服务的 `clusterIP`,高可用只读 IP 指向 follower 服务的 `clusterIP`。 - ```bash - mysql -p <节点地址> -u <用户名> -P <节点端口> -p - ``` +```shell +$ mysql -h -P -u -p +``` -> **说明** -> -> 使用外网主机连接可能会出现 `SSL connection error`,需要加上 `--ssl-mode=DISABLE` 参数,关闭 SSL。 +以下示例用户名为 `radondb_usr`, leader 服务的 clusterIP 为 `10.10.128.136` ,连接示例如下: + +```shell +$ mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p +``` ## 配置 diff --git a/docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md b/docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md index 3455e3c9..f48be5ca 100644 --- a/docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md +++ b/docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md @@ -5,15 +5,13 @@ Contents * [简介](#简介) * [部署准备](#部署准备) * [部署步骤](#部署步骤) - * [步骤 1:克隆代码](#步骤-1-克隆代码) + * [步骤 1:添加 Helm 仓库](#步骤-1-添加-helm-仓库) * [步骤 2:部署 Operator](#步骤-2-部署-operator) * [步骤 3:部署 RadonDB MySQL 集群](#步骤-3-部署-radondb-mysql-集群) * [部署校验](#部署校验) * [校验 RadonDB MySQL Operator](#校验-radondb-mysql-operator) * [校验 RadonDB MySQL 集群](#校验-radondb-mysql-集群) - * [连接 RadonDB MySQL](#连接-radondb-mysql) - * [同 NameSpace 访问](#同-namespace-访问) - * [跨 NameSpace 访问](#跨-namespace-访问) + * [访问 RadonDB MySQL](#访问-radondb-mysql) * [卸载](#卸载) * [卸载 Operator](#卸载-Operator) * [卸载 RadonDB MySQL](#卸载-RadonDB-MySQL) @@ -40,15 +38,15 @@ RadonDB MySQL 支持在 Kubernetes 上安装部署和管理,自动执行与运 ## 部署步骤 -### 步骤 1: 添加 helm 仓库 +### 步骤 1: 添加 Helm 仓库 ``` -helm repo add radondb https://radondb.github.io/radondb-mysql-kubernetes/ +$ helm repo add radondb https://radondb.github.io/radondb-mysql-kubernetes/ ``` 校验仓库,可查看到名为 `radondb/mysql-operator` 的 chart。 ``` -helm search repo +$ helm search repo NAME CHART VERSION APP VERSION DESCRIPTION radondb/mysql-operator 0.1.1 latest Open Source,High Availability Cluster,based on MySQL ``` @@ -56,11 +54,10 @@ radondb/mysql-operator 0.1.1 latest ### 步骤 2: 部署 Operator - 以下指定 release 名为 `demo` , 创建一个名为 `demo-mysql-operator` 的 [Deployment](#7-deployments)。 ``` -helm install demo radondb/mysql-operator +$ helm install demo radondb/mysql-operator ``` > 说明:在这一步骤中默认将同时创建集群所需的 [CRD](#8-CRD)。 @@ -70,7 +67,7 @@ helm install demo radondb/mysql-operator 执行以下指令,以默认参数为 CRD `mysqlclusters.mysql.radondb.com` 创建一个实例,即创建 RadonDB MySQL 集群。您可以参照[配置](#配置)自定义集群部署参数。 ```kubectl -kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kubernetes/main/config/samples/mysql_v1alpha1_mysqlcluster.yaml +$ kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kubernetes/main/config/samples/mysql_v1alpha1_mysqlcluster.yaml ``` ## 部署校验 @@ -80,7 +77,7 @@ kubectl apply -f https://raw.githubusercontent.com/radondb/radondb-mysql-kuberne 查看 `demo` 的 Deployment 和对应监控服务,回显如下信息则部署成功。 ```shell -kubectl get deployment,svc +$ kubectl get deployment,svc NAME READY UP-TO-DATE AVAILABLE AGE demo-mysql-operator 1/1 1 1 7h50m @@ -94,7 +91,7 @@ service/mysql-operator-metrics ClusterIP 10.96.142.22 8443/ 执行如下命令,将查看到如下 CRD。 ```shell -kubectl get crd | grep mysql.radondb.com +$ kubectl get crd | grep mysql.radondb.com backups.mysql.radondb.com 2021-11-02T07:00:01Z mysqlclusters.mysql.radondb.com 2021-11-02T07:00:01Z mysqlusers.mysql.radondb.com 2021-11-02T07:00:01Z @@ -103,7 +100,7 @@ mysqlusers.mysql.radondb.com 2021-11-02T07:00:01Z 以默认部署为例,执行如下命令将查看到名为 `sample-mysql` 的三节点 RadonDB MySQL 集群及用于访问节点的服务。 ```shell -kubectl get statefulset,svc +$ kubectl get statefulset,svc NAME READY AGE sample-mysql 3/3 7h33m @@ -113,68 +110,61 @@ service/sample-leader ClusterIP 10.96.111.214 3306/ service/sample-mysql ClusterIP None 3306/TCP 7h37m ``` -## 连接 RadonDB MySQL +## 访问 RadonDB MySQL -您需要准备一个用于连接 MySQL 的客户端。 +> **注意** +> +> 准备可用于连接 MySQL 的客户端。 -### 同 NameSpace 访问 +- 当客户端的与数据库部署在不同 Kubernetes 集群,请参考 [Kubernetes 访问集群中的应用程序](https://kubernetes.io/zh/docs/tasks/access-application-cluster/),配置端口转发、负载均衡等连接方式。 -当客户端与 RadonDB MySQL 集群在同一个 NameSpace 中时,可使用 leader/follower service 名称代替具体的 IP 和端口。 +- 在 Kubernetes 集群内,支持使用 `service_name` 或者 `clusterIP` 方式,访问 RadonDB MySQL。 + + > **说明** + > + > RadonDB MySQL 提供 leader 服务和 follower 服务用于分别访问主从节点。leader 服务始终指向主节点(读写),follower 服务始终指向从节点(只读)。 -* 连接主节点(读写节点)。 +以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式。 - ```shell - $ mysql -h -u <用户名> -p - ``` +### `service_name` 方式 - 用户名为 `radondb_usr`,release 名为 `sample` ,连接主节点示例如下: +* 连接 leader 服务(RadonDB MySQL 主节点) ```shell - $ mysql -h sample-leader -u radondb_usr -p + $ mysql -h . -u -p ``` -* 连接从节点(只读节点)。 + 用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下: ```shell - $ mysql -h -u <用户名> -p + $ mysql -h sample-leader.default -u radondb_usr -p ``` - 用户名为 `radondb_usr`,release 名为 `sample` ,连接从节点示例如下: - - ```shell - $ mysql -h sample-follower -u radondb_usr -p - ``` - -### 跨 NameSpace 访问 - -当客户端与 RadonDB MySQL 集群不在同一个 NameSpace 中时,可以通过 podIP 或服务 ClusterIP 来连接对应节点。 - -1. 查询 pod 列表和服务列表,分别获取需要连接的节点所在的 pod 名称或对应的服务名称。 +* 连接 follower 服务(RadonDB MySQL 从节点) ```shell - $ kubectl get pod,svc + $ mysql -h . -u -p ``` -2. 查看 pod/服务的详细信息,获取对应的 IP。 + 用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下: ```shell - $ kubectl describe pod - $ kubectl describe svc <服务名称> + $ mysql -h sample-follower.default -u radondb_usr -p ``` - > 注意:pod 重启后 pod IP 会更新,需重新获取 pod IP,建议使用服务的 ClusterIP 来连接节点。 +### `clusterIP` 方式 -3. 连接节点。 +RadonDB MySQL 的高可用读写 IP 指向 leader 服务的 `clusterIP`,高可用只读 IP 指向 follower 服务的 `clusterIP`。 - ```shell - $ mysql -h -u <用户名> -p - ``` +```shell +$ mysql -h -P -u -p +``` - 用户名为 `radondb_usr`,Cluster IP 为 `10.10.128.136` ,连接示例如下: +以下示例用户名为 `radondb_usr`, leader 服务的 clusterIP 为 `10.10.128.136` ,连接示例如下: - ```shell - $ mysql -h 10.10.128.136 -u radondb_usr -p - ``` +```shell +$ mysql -h 10.10.128.136 -P 3306 -u radondb_usr -p +``` ## 卸载 @@ -183,7 +173,7 @@ service/sample-mysql ClusterIP None 3306/ 卸载当前命名空间下 release 名为 `demo` 的 RadonDB MySQL Operator。 ```shell -helm delete demo +$ helm delete demo ``` ### 卸载 RadonDB MySQL @@ -191,15 +181,15 @@ helm delete demo 卸载 release 名为 `sample` RadonDB MySQL 集群。 ```shell -kubectl delete mysqlclusters.mysql.radondb.com sample +$ kubectl delete mysqlclusters.mysql.radondb.com sample ``` ### 卸载自定义资源 ```shell -kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com -kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com -kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com +$ kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlclusters.mysql.radondb.com +$ kubectl delete customresourcedefinitions.apiextensions.k8s.io mysqlusers.mysql.radondb.com +$ kubectl delete customresourcedefinitions.apiextensions.k8s.io backups.mysql.radondb.com ``` ## 配置