Mysql
Mysql-Operator目前还处于alpha阶段,当前最新版本为0.3.0。本文将介绍0.3.0版本的安装。
Github上介绍的安装方法为Helm,不过为了简单起见,本文把Chart里面的Yaml文件抽了出来,直接使用Kubernetes的命令进行安装。
环境信息如下:
kubernetes: v1.14.0
docker-ce: 18.06
创建CRD
$ kubectl apply crd.yamlcrd.yaml文件如下
创建命名空间
$ kubectl create namespace mysql-operatorRBAC
$ kubectl apply -f rbac.yamlrbac.yaml文件的内容如下:
安装Operator
首先,使用以下的yaml文件安装mysql-operator
创建MysqlCluster
接下来我们在default命名空间中创建一个Mysql集群。首先要在default命名空间中创建如下的ServiceAccount与RoleBinding
然后,我们就可以创建一个一主两从的Mysql集群了(注意这里使用了rbd分布式存储,所以k8s集群要对接好ceph-rbd)
此时,在集群中我们会看到一个Statefulset与Headless Service以及PersistentVolumeClaim
$ kubectl get statefulset
NAME READY AGE
mysql-test-cluster 3/3 177m
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
mysql-test-cluster-0 2/2 Running 0 178m
mysql-test-cluster-1 2/2 Running 0 177m
mysql-test-cluster-2 2/2 Running 0 154m
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP
mysql-test-cluster ClusterIP None <none> 3306/TCP 172m
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-mysql-test-cluster-0 Bound pvc-a2414ffc-8cdc-11e9-9eb0-000c29a3131e 1Gi RWO rbd 8m25s
data-mysql-test-cluster-1 Bound pvc-c9c89485-8cdc-11e9-9eb0-000c29a3131e 1Gi RWO rbd 7m19s
data-mysql-test-cluster-2 Bound pvc-f9d27bac-8cdc-11e9-9eb0-000c29a3131e 1Gi RWO rbd 5m58s连接Mysql
首先获取root密码
$ kubectl get secret mysql-test-cluster-root-password -o jsonpath="{.data.password}" | base64 --decode
VaVfYsV76v19Zh68然后创建一个Pod
进入到Pod里面,连接mysql集群的主节点
$ kubectl exec -it mysql-client bash
root@mysql-client:/# mysql -h mysql-test-cluster-0.mysql-test-cluster -uroot -pVaVfYsV76v19Zh68然后创建一个database
mysql> create database peng;
Query OK, 1 row affected (0.06 sec)
mysql> show database;
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| mysql_innodb_cluster_metadata |
| peng |
| performance_schema |
| sys |
+-------------------------------+
6 rows in set (0.01 sec)接下来,我们从mysql-client连接mysql集群的一个从节点mysql-test-cluster-1
$ kubectl exec -it mysql-client bash
root@mysql-client:/# mysql -h mysql-test-cluster-1.mysql-test-cluster -uroot -pVaVfYsV76v19Zh68然后查看里面的database,发现有了peng这个database(即已经同步了主节点的数据)
mysql > show databases;
+-------------------------------+
| Database |
+-------------------------------+
| information_schema |
| mysql |
| mysql_innodb_cluster_metadata |
| peng |
| performance_schema |
| sys |
+-------------------------------+
6 rows in set (0.01 sec)接下来我们尝试在该从节点上创建一个database试试,发现报如下的错
mysql> create database test;
ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statementReference
https://github.com/oracle/mysql-operatorhttps://github.com/oracle/mysql-operator/blob/master/docs/tutorial.mdhttps://github.com/oracle/mysql-operator/blob/master/docs/user/clusters.md#clusters
Last updated
Was this helpful?