mysql-operator 尝试与研究

 

  • 安装指南
  •  先下载到本地
git clone https://github.com/kubernetes/charts.git
  •  安装helm

参考:

http://www.cnblogs.com/ericnie/p/8463127.html

  •  下载mysql-operator镜像
docker pull  iad.ocir.io/oracle/mysql-operator:0.1.0

 同时下载mysqlserver和agent,启动mysql实例需要

docker pull mysql/mysql-server:5.7.20-1.1.2

docker pull wcr.io/oracle/mysql-agent:0.1.0
  •  建立命名空间
kubectl create namespace mysql-operator
  • 创建mysql-operator

[root@k8s-master mysql-operator]# helm install --name my-release mysql-operator --set rbac.enabled=true
NAME: my-release
LAST DEPLOYED: Tue May 22 14:53:39 2018
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/ServiceAccount
NAME SECRETS AGE
mysql-operator 1 14m
mysql-agent 1 14m

==> v1beta1/ClusterRole
NAME AGE
mysql-operator 14m

==> v1beta1/ClusterRoleBinding
NAME AGE
mysql-operator 14m
mysql-agent 14m

==> v1beta1/Deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
mysql-operator 1 1 1 1 14m

==> v1beta1/CustomResourceDefinition
NAME KIND
mysqlclusters.mysql.oracle.com CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlbackups.mysql.oracle.com CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlrestores.mysql.oracle.com CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlbackupschedules.mysql.oracle.com CustomResourceDefinition.v1beta1.apiextensions.k8s.io


NOTES:
Thanks for installing the MySQL Operator.

Check if the operator is running with

kubectl -n mysql-operator get po

验证下结果

[root@k8s-master mysql-operator]# kubectl get pods -n mysql-operator
NAME                             READY     STATUS    RESTARTS   AGE
mysql-operator-541631688-7937r   1/1       Running   0          52s

 获取crd

[root@k8s-master cluster]# kubectl get crd
NAME                                    KIND
domains.weblogic.oracle                 CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlbackups.mysql.oracle.com           CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlbackupschedules.mysql.oracle.com   CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlclusters.mysql.oracle.com          CustomResourceDefinition.v1beta1.apiextensions.k8s.io
mysqlrestores.mysql.oracle.com          CustomResourceDefinition.v1beta1.apiextensions.k8s.io

 

  • 集群建立

各种集群建立,详细可以参考

https://github.com/oracle/mysql-operator/blob/master/docs/user/clusters.md

这里列一个最简单的。

 

[root@k8s-master cluster]# cat cluster.yaml 
apiVersion: "mysql.oracle.com/v1"
kind: MySQLCluster
metadata:
  name: mysql

 

[root@k8s-master cluster]# kubectl create -f cluster.yaml 
mysqlcluster "mysql" created
[root@k8s-master cluster]# kubectl get mysqlclusters
NAME      KIND
mysql     MySQLCluster.v1.mysql.oracle.com

发现在当前的命名空间下生成了实例

[root@k8s-master cluster]# kubectl get pods
NAME      READY     STATUS    RESTARTS   AGE
busybox   1/1       Running   31         8d
mysql-0   2/2       Running   0          14m
tomcat    1/1       Running   7          7d
[root@k8s-master cluster]# kubectl logs mysql-0  -c mysql-agent
Starting mysql-agent version 0.1.0
ERROR: logging before flag.Parse: I0523 02:11:46.287788      18 flags.go:52] FLAG: --address="0.0.0.0"
ERROR: logging before flag.Parse: I0523 02:11:46.287883      18 flags.go:52] FLAG: --alsologtostderr="false"
ERROR: logging before flag.Parse: I0523 02:11:46.287893      18 flags.go:52] FLAG: --healthcheck-port="10512"
ERROR: logging before flag.Parse: I0523 02:11:46.287903      18 flags.go:52] FLAG: --hostname="mysql-0"
ERROR: logging before flag.Parse: I0523 02:11:46.287910      18 flags.go:52] FLAG: --log-backtrace-at=":0"
ERROR: logging before flag.Parse: I0523 02:11:46.287920      18 flags.go:52] FLAG: --log-dir=""
ERROR: logging before flag.Parse: I0523 02:11:46.287927      18 flags.go:52] FLAG: --log-flush-frequency="5s"
ERROR: logging before flag.Parse: I0523 02:11:46.287936      18 flags.go:52] FLAG: --logtostderr="true"
ERROR: logging before flag.Parse: I0523 02:11:46.287943      18 flags.go:52] FLAG: --min-resync-period="12h0m0s"
ERROR: logging before flag.Parse: I0523 02:11:46.287950      18 flags.go:52] FLAG: --mysql-cluster-name="mysql"
ERROR: logging before flag.Parse: I0523 02:11:46.287956      18 flags.go:52] FLAG: --namespace="default"
ERROR: logging before flag.Parse: I0523 02:11:46.287962      18 flags.go:52] FLAG: --stderrthreshold="2"
ERROR: logging before flag.Parse: I0523 02:11:46.287969      18 flags.go:52] FLAG: --v="4"
ERROR: logging before flag.Parse: I0523 02:11:46.287976      18 flags.go:52] FLAG: --vmodule=""
ERROR: logging before flag.Parse: I0523 02:11:46.817877      18 cluster_manager.go:105] Database not yet running. Waiting...
ERROR: logging before flag.Parse: I0523 02:11:56.941725      18 cluster_manager.go:105] Database not yet running. Waiting...
ERROR: logging before flag.Parse: I0523 02:12:06.993075      18 cluster_manager.go:105] Database not yet running. Waiting...
ERROR: logging before flag.Parse: I0523 02:12:17.415974      18 innodb_cluster.go:121] Clearing the MySQL binary logs
ERROR: logging before flag.Parse: I0523 02:12:18.086997      18 cluster_manager.go:280] Creating the cluster on the primary instance
ERROR: logging before flag.Parse: I0523 02:12:23.170507      18 cluster_manager.go:285] {
    "clusterName": "MySQLCluster",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "mysql-0:3306",
        "status": "OK_NO_TOLERANCE",
        "statusText": "Cluster is NOT tolerant to any failures.",
        "topology": {
            "mysql-0:3306": {
                "address": "mysql-0:3306",
                "mode": "R/W",
                "role": "HA",
                "status": "ONLINE"
            }
        }
    }
}
ERROR: logging before flag.Parse: I0523 02:12:23.170595      18 cluster_manager.go:137] MySQL instance is online
ERROR: logging before flag.Parse: I0523 02:12:23.345615      18 agent_controller.go:99] Creating event broadcaster
ERROR: logging before flag.Parse: I0523 02:12:23.532123      18 reflector.go:202] Starting reflector *v1.Pod (19h15m21.324440719s) from github.com/oracle/mysql-operator/vendor/k8s.io/client-go/informers/factory.go:86
ERROR: logging before flag.Parse: I0523 02:12:23.532225      18 reflector.go:240] Listing and watching *v1.Pod from github.com/oracle/mysql-operator/vendor/k8s.io/client-go/informers/factory.go:86
ERROR: logging before flag.Parse: I0523 02:12:23.553086      18 agent_controller.go:107] Creating event broadcaster
ERROR: logging before flag.Parse: I0523 02:12:23.553397      18 cluster_labeler.go:241] Starting the ClusterLabelerController
ERROR: logging before flag.Parse: I0523 02:12:23.553412      18 cluster_labeler.go:244] Waiting for ClusterLabelerController informer caches to sync
ERROR: logging before flag.Parse: I0523 02:12:23.553426      18 cache.go:30] Waiting for caches to sync for innodb-cluster-labeler controller
ERROR: logging before flag.Parse: I0523 02:12:23.555114      18 agent_controller.go:166] Starting AgentController
ERROR: logging before flag.Parse: I0523 02:12:23.555151      18 agent_controller.go:169] Waiting for caches to sync
ERROR: logging before flag.Parse: I0523 02:12:23.555171      18 cache.go:30] Waiting for caches to sync for operator-backup-controller controller
ERROR: logging before flag.Parse: I0523 02:12:23.555407      18 agent_controller.go:175] Starting AgentController
ERROR: logging before flag.Parse: I0523 02:12:23.555419      18 agent_controller.go:178] Waiting for caches to sync
ERROR: logging before flag.Parse: I0523 02:12:23.555427      18 cache.go:30] Waiting for caches to sync for operator-restore-controller controller
ERROR: logging before flag.Parse: I0523 02:12:23.556287      18 reflector.go:202] Starting reflector *v1.MySQLBackup (0s) from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72
ERROR: logging before flag.Parse: I0523 02:12:23.556320      18 reflector.go:240] Listing and watching *v1.MySQLBackup from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72
ERROR: logging before flag.Parse: I0523 02:12:23.557559      18 reflector.go:202] Starting reflector *v1.MySQLRestore (0s) from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72
ERROR: logging before flag.Parse: I0523 02:12:23.562579      18 reflector.go:240] Listing and watching *v1.MySQLRestore from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72
ERROR: logging before flag.Parse: I0523 02:12:23.564784      18 reflector.go:202] Starting reflector *v1.MySQLCluster (0s) from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72
ERROR: logging before flag.Parse: I0523 02:12:23.564827      18 reflector.go:240] Listing and watching *v1.MySQLCluster from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72
ERROR: logging before flag.Parse: I0523 02:12:24.135073      18 cluster_manager.go:137] MySQL instance is online
ERROR: logging before flag.Parse: I0523 02:12:24.153865      18 shared_informer.go:122] caches populated
ERROR: logging before flag.Parse: I0523 02:12:24.153925      18 cache.go:37] Caches are synced for innodb-cluster-labeler controller
ERROR: logging before flag.Parse: I0523 02:12:24.153946      18 cluster_labeler.go:249] Starting ClusterLabelerController controller worker
ERROR: logging before flag.Parse: I0523 02:12:24.153965      18 cluster_labeler.go:252] Started ClusterLabelerController controller worker
ERROR: logging before flag.Parse: I0523 02:12:24.154389      18 cluster_labeler.go:152] Labeling default/mysql-0 as primary
ERROR: logging before flag.Parse: I0523 02:12:24.173303      18 shared_informer.go:122] caches populated
ERROR: logging before flag.Parse: I0523 02:12:24.173358      18 cache.go:37] Caches are synced for operator-restore-controller controller
ERROR: logging before flag.Parse: I0523 02:12:24.173386      18 agent_controller.go:186] Caches are synced
ERROR: logging before flag.Parse: I0523 02:12:24.174961      18 patch.go:95] Patching Pod mysql-0/default: {"metadata":{"labels":{"v1.mysql.oracle.com/role":"primary"}}}
ERROR: logging before flag.Parse: I0523 02:12:24.177780      18 shared_informer.go:122] caches populated
ERROR: logging before flag.Parse: I0523 02:12:24.177837      18 cache.go:37] Caches are synced for operator-backup-controller controller
ERROR: logging before flag.Parse: I0523 02:12:24.177859      18 agent_controller.go:176] Caches are synced
ERROR: logging before flag.Parse: I0523 02:12:39.439539      18 cluster_manager.go:137] MySQL instance is online
ERROR: logging before flag.Parse: I0523 02:12:54.769749      18 cluster_manager.go:137] MySQL instance is online
ERROR: logging before flag.Parse: I0523 02:13:10.081533      18 cluster_manager.go:137] MySQL instance is online
ERROR: logging before flag.Parse: I0523 02:13:25.442784      18 cluster_manager.go:137] MySQL instance is online
[root@k8s-master cluster]# kubectl logs mysql-0  -c mysql
++ grep '^search' /etc/resolv.conf
+ search='search default.svc.cluster.local. svc.cluster.local. cluster.local.'
+ echo 'search default.svc.cluster.local. svc.cluster.local. cluster.local. mysql.default.svc.cluster.local'
++ cat /etc/hostname
++ grep -o '[^-]*$'
+ index=0
++ expr 1000 + 0
+ /entrypoint.sh --server_id=1000 --user=mysql --datadir=/var/lib/mysql --log-error=/var/lib/mysql/mysqld.err --default-storage-engine=innodb --default-tmp-storage-engine=innodb --internal-tmp-disk-storage-engine=innodb --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_520_ci --core-file --default-password-lifetime=0 --default-time-zone=SYSTEM --explicit-defaults-for-timestamp=ON --performance-schema-consumer-events-transactions-current=ON --performance-schema-consumer-events-transactions-history=ON --innodb-buffer-pool-size=128M --innodb-buffer-pool-instances=4 --innodb-autoinc-lock-mode=2 --innodb-flush-method=O_DIRECT_NO_FSYNC --innodb-open-files=128 --innodb-log-buffer-size=4M --innodb-monitor-enable=% --innodb-print-all-deadlocks=ON --innodb-undo-log-truncate=ON --innodb-undo-tablespaces=2 --innodb-undo-logs=2 --binlog_checksum=NONE --gtid_mode=ON --enforce_gtid_consistency=ON --log_bin --binlog-format=ROW --log-slave-updates=ON --master-info-repository=TABLE --relay-log-info-repository=TABLE --slave-preserve-commit-order=ON --disabled_storage_engines=MyISAM,BLACKHOLE,FEDERATED,ARCHIVE --transaction-isolation=READ-COMMITTED --transaction-write-set-extraction=XXHASH64 --loose-group-replication-ip-whitelist=0.0.0.0/0
[Entrypoint] MySQL Docker Image 5.7.20-1.1.2
[Entrypoint] Initializing database
[Entrypoint] Database initialized
Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.

[Entrypoint] ignoring /docker-entrypoint-initdb.d/*

[Entrypoint] Server shut down

[Entrypoint] MySQL init process done. Ready for start up.

[Entrypoint] Starting MySQL 5.7.20-1.1.2

 describe下新建的集群

[root@k8s-master cluster]# kubectl describe mysqlclusters mysql
Name:        mysql
Namespace:    default
Labels:        v1.mysql.oracle.com/cluster=mysql
        v1.mysql.oracle.com/version=0.1.0
Annotations:    <none>
API Version:    mysql.oracle.com/v1
Kind:        MySQLCluster
Metadata:
  Cluster Name:        
  Creation Timestamp:    2018-05-22T06:50:42Z
  Generation:        0
  Resource Version:    611750
  Self Link:        /apis/mysql.oracle.com/v1/namespaces/default/mysqlclusters/mysql
  UID:            71c8a94e-5d8c-11e8-aaa7-080027e2ae0a
Spec:
  Replicas:    1
  Version:    5.7.20-1.1.2
Status:
  Errors:    <nil>
  Metadata:
    Creation Timestamp:    <nil>
  Phase:        
Events:            <none>

 

研究继续中....

posted @ 2018-05-22 15:15  ericnie  阅读(4827)  评论(0编辑  收藏  举报