Skip to content

Commit

Permalink
Merge pull request #341 from molliezhang/docs
Browse files Browse the repository at this point in the history
 docs/kubernetes *: Update the description about access radondb mysql #340
  • Loading branch information
andyli029 authored Dec 27, 2021
2 parents ef4eab3 + 77acbf6 commit e7d8f16
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 108 deletions.
110 changes: 56 additions & 54 deletions docs/kubernetes/deploy_radondb-mysql_on_kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -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-配置)
Expand All @@ -40,29 +38,32 @@ 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` 的有状态副本集。

* **默认部署方式**

```bash
<For Helm v2>
cd charts/helm
helm install . demo
# For Helm v2
$ cd charts/helm
$ helm install . demo

<For Helm v3>
cd charts/helm
helm install demo .
# For Helm v3
$ cd charts/helm
$ helm install demo .
```

* **指定参数部署方式**
Expand All @@ -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 .
```

Expand All @@ -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 部署
Expand Down Expand Up @@ -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 <leader service 名称> -u <用户名> -p
```
> **说明**
>
> RadonDB MySQL 提供 leader 服务和 follower 服务用于分别访问主从节点。leader 服务始终指向主节点(读写),follower 服务始终指向从节点(只读)。
- 连接从节点(只读节点)。
```bash
mysql -h <follower service 名称> -u <用户名> -p
```
以下为客户端与数据库在同一 Kubernetes 集群内,访问 RadonDB MySQL 的方式。

### 客户端与 RadonDB MySQL 不在同一 NameSpace 中
### `service_name` 方式

当客户端与 RadonDB MySQL 集群不在同一个 NameSpace 中时,需先分别获取连接所需的节点地址、节点端口、服务名称。
* 连接 leader 服务(RadonDB MySQL 主节点)

1. 查询 pod 列表和服务列表,分别获取 pod 名称和服务名称。
```shell
$ mysql -h <leader_service_name>.<namespace> -u <user_name> -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 <follower_service_name>.<namespace> -u <user_name> -p
```

3. 分别获取 pod 所在的节点地址和节点端口。
用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下:

```bash
kubectl describe pod <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 <clusterIP> -P <mysql_Port> -u <user_name> -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
```

## 配置

Expand Down
98 changes: 44 additions & 54 deletions docs/kubernetes/deploy_radondb-mysql_operator_on_k8s.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -40,27 +38,26 @@ 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
```

### 步骤 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)
Expand All @@ -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
```

## 部署校验
Expand All @@ -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

Expand All @@ -94,7 +91,7 @@ service/mysql-operator-metrics ClusterIP 10.96.142.22 <none> 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
Expand All @@ -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

Expand All @@ -113,68 +110,61 @@ service/sample-leader ClusterIP 10.96.111.214 <none> 3306/
service/sample-mysql ClusterIP None <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 <leader service 名称> -u <用户名> -p
```
### `service_name` 方式

用户名为 `radondb_usr`,release 名为 `sample` ,连接主节点示例如下:
* 连接 leader 服务(RadonDB MySQL 主节点)

```shell
$ mysql -h sample-leader -u radondb_usr -p
$ mysql -h <leader_service_name>.<namespace> -u <user_name> -p
```

* 连接从节点(只读节点)。
用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下:

```shell
$ mysql -h <follower service 名称> -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 <follower_service_name>.<namespace> -u <user_name> -p
```

2. 查看 pod/服务的详细信息,获取对应的 IP。
用户名为 `radondb_usr`,release 名为 `sample`,RadonDB MySQL 命名空间为 `default` ,连接示例如下:

```shell
$ kubectl describe pod <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 <pod IP/服务 ClusterIP> -u <用户名> -p
```
```shell
$ mysql -h <clusterIP> -P <mysql_Port> -u <user_name> -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
```

## 卸载

Expand All @@ -183,23 +173,23 @@ service/sample-mysql ClusterIP None <none> 3306/
卸载当前命名空间下 release 名为 `demo` 的 RadonDB MySQL Operator。

```shell
helm delete demo
$ helm delete demo
```

### 卸载 RadonDB MySQL

卸载 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
```

## 配置
Expand Down

0 comments on commit e7d8f16

Please sign in to comment.