安装指南
先下载到本地
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.2docker 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-operatorNAME READY STATUS RESTARTS AGE
mysql-operator-541631688-7937r 1/1 Running 0 52s
获取crd
[root@k8s-master cluster]# kubectl getcrd
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 getmysqlclusters
NAME KIND
mysql MySQLCluster.v1.mysql.oracle.com
发现在当前的命名空间下生成了实例
[root@k8s-master cluster]# kubectl getpods
NAME READY STATUS RESTARTS AGE
busybox1/1 Running 318d
mysql-0 2/2 Running 014m
tomcat1/1 Running 7 7d
[root@k8s-master cluster]# kubectl logs mysql-0 -c mysql-agent
Starting mysql-agent version 0.1.0ERROR: logging before flag.Parse: I052302:11:46.287788 18 flags.go:52] FLAG: --address="0.0.0.0"ERROR: logging before flag.Parse: I052302:11:46.287883 18 flags.go:52] FLAG: --alsologtostderr="false"ERROR: logging before flag.Parse: I052302:11:46.287893 18 flags.go:52] FLAG: --healthcheck-port="10512"ERROR: logging before flag.Parse: I052302:11:46.287903 18 flags.go:52] FLAG: --hostname="mysql-0"ERROR: logging before flag.Parse: I052302:11:46.287910 18 flags.go:52] FLAG: --log-backtrace-at=":0"ERROR: logging before flag.Parse: I052302:11:46.287920 18 flags.go:52] FLAG: --log-dir=""ERROR: logging before flag.Parse: I052302:11:46.287927 18 flags.go:52] FLAG: --log-flush-frequency="5s"ERROR: logging before flag.Parse: I052302:11:46.287936 18 flags.go:52] FLAG: --logtostderr="true"ERROR: logging before flag.Parse: I052302:11:46.287943 18 flags.go:52] FLAG: --min-resync-period="12h0m0s"ERROR: logging before flag.Parse: I052302:11:46.287950 18 flags.go:52] FLAG: --mysql-cluster-name="mysql"ERROR: logging before flag.Parse: I052302:11:46.287956 18 flags.go:52] FLAG: --namespace="default"ERROR: logging before flag.Parse: I052302:11:46.287962 18 flags.go:52] FLAG: --stderrthreshold="2"ERROR: logging before flag.Parse: I052302:11:46.287969 18 flags.go:52] FLAG: --v="4"ERROR: logging before flag.Parse: I052302:11:46.287976 18 flags.go:52] FLAG: --vmodule=""ERROR: logging before flag.Parse: I052302:11:46.817877 18 cluster_manager.go:105] Database not yet running. Waiting...
ERROR: logging before flag.Parse: I052302:11:56.941725 18 cluster_manager.go:105] Database not yet running. Waiting...
ERROR: logging before flag.Parse: I052302:12:06.993075 18 cluster_manager.go:105] Database not yet running. Waiting...
ERROR: logging before flag.Parse: I052302:12:17.415974 18 innodb_cluster.go:121] Clearing the MySQL binary logs
ERROR: logging before flag.Parse: I052302:12:18.086997 18 cluster_manager.go:280] Creating the cluster on the primary instance
ERROR: logging before flag.Parse: I052302: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: I052302:12:23.170595 18 cluster_manager.go:137] MySQL instance isonline
ERROR: logging before flag.Parse: I052302:12:23.345615 18 agent_controller.go:99] Creating eventbroadcaster
ERROR: logging before flag.Parse: I052302: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:86ERROR: logging before flag.Parse: I052302: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:86ERROR: logging before flag.Parse: I052302:12:23.553086 18 agent_controller.go:107] Creating eventbroadcaster
ERROR: logging before flag.Parse: I052302:12:23.553397 18 cluster_labeler.go:241] Starting the ClusterLabelerController
ERROR: logging before flag.Parse: I052302:12:23.553412 18 cluster_labeler.go:244] Waiting forClusterLabelerController informer caches to sync
ERROR: logging before flag.Parse: I052302:12:23.553426 18 cache.go:30] Waiting for caches to sync for innodb-cluster-labeler controller
ERROR: logging before flag.Parse: I052302:12:23.555114 18 agent_controller.go:166] Starting AgentController
ERROR: logging before flag.Parse: I052302:12:23.555151 18 agent_controller.go:169] Waiting forcaches to sync
ERROR: logging before flag.Parse: I052302:12:23.555171 18 cache.go:30] Waiting for caches to sync for operator-backup-controller controller
ERROR: logging before flag.Parse: I052302:12:23.555407 18 agent_controller.go:175] Starting AgentController
ERROR: logging before flag.Parse: I052302:12:23.555419 18 agent_controller.go:178] Waiting forcaches to sync
ERROR: logging before flag.Parse: I052302:12:23.555427 18 cache.go:30] Waiting for caches to sync for operator-restore-controller controller
ERROR: logging before flag.Parse: I052302:12:23.556287 18 reflector.go:202] Starting reflector *v1.MySQLBackup (0s) from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72ERROR: logging before flag.Parse: I052302:12:23.556320 18 reflector.go:240] Listing and watching *v1.MySQLBackup from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72ERROR: logging before flag.Parse: I052302:12:23.557559 18 reflector.go:202] Starting reflector *v1.MySQLRestore (0s) from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72ERROR: logging before flag.Parse: I052302:12:23.562579 18 reflector.go:240] Listing and watching *v1.MySQLRestore from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72ERROR: logging before flag.Parse: I052302:12:23.564784 18 reflector.go:202] Starting reflector *v1.MySQLCluster (0s) from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72ERROR: logging before flag.Parse: I052302:12:23.564827 18 reflector.go:240] Listing and watching *v1.MySQLCluster from github.com/oracle/mysql-operator/pkg/generated/informers/externalversions/factory.go:72ERROR: logging before flag.Parse: I052302:12:24.135073 18 cluster_manager.go:137] MySQL instance isonline
ERROR: logging before flag.Parse: I052302:12:24.153865 18 shared_informer.go:122] caches populated
ERROR: logging before flag.Parse: I052302:12:24.153925 18 cache.go:37] Caches are synced for innodb-cluster-labeler controller
ERROR: logging before flag.Parse: I052302:12:24.153946 18 cluster_labeler.go:249] Starting ClusterLabelerController controller worker
ERROR: logging before flag.Parse: I052302:12:24.153965 18 cluster_labeler.go:252] Started ClusterLabelerController controller worker
ERROR: logging before flag.Parse: I052302:12:24.154389 18 cluster_labeler.go:152] Labeling default/mysql-0 asprimary
ERROR: logging before flag.Parse: I052302:12:24.173303 18 shared_informer.go:122] caches populated
ERROR: logging before flag.Parse: I052302:12:24.173358 18 cache.go:37] Caches are synced for operator-restore-controller controller
ERROR: logging before flag.Parse: I052302:12:24.173386 18 agent_controller.go:186] Caches are synced
ERROR: logging before flag.Parse: I052302: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: I052302:12:24.177780 18 shared_informer.go:122] caches populated
ERROR: logging before flag.Parse: I052302:12:24.177837 18 cache.go:37] Caches are synced for operator-backup-controller controller
ERROR: logging before flag.Parse: I052302:12:24.177859 18 agent_controller.go:176] Caches are synced
ERROR: logging before flag.Parse: I052302:12:39.439539 18 cluster_manager.go:137] MySQL instance isonline
ERROR: logging before flag.Parse: I052302:12:54.769749 18 cluster_manager.go:137] MySQL instance isonline
ERROR: logging before flag.Parse: I052302:13:10.081533 18 cluster_manager.go:137] MySQL instance isonline
ERROR: logging before flag.Parse: I052302:13:25.442784 18 cluster_manager.go:137] MySQL instance isonline
[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 Image5.7.20-1.1.2[Entrypoint] Initializing database
[Entrypoint] Database initialized
Warning: Unable to load'/usr/share/zoneinfo/iso3166.tab' astime zone. Skipping it.
Warning: Unable to load'/usr/share/zoneinfo/zone.tab' astime zone. Skipping it.
Warning: Unable to load'/usr/share/zoneinfo/zone1970.tab' astime 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:defaultLabels: v1.mysql.oracle.com/cluster=mysql
v1.mysql.oracle.com/version=0.1.0Annotations:API Version: mysql.oracle.com/v1
Kind: MySQLCluster
Metadata:
Cluster Name:
Creation Timestamp:2018-05-22T06:50:42Z
Generation:0Resource Version:611750Self Link:/apis/mysql.oracle.com/v1/namespaces/default/mysqlclusters/mysql
UID: 71c8a94e-5d8c-11e8-aaa7-080027e2ae0a
Spec:
Replicas:1Version:5.7.20-1.1.2Status:
Errors:Metadata:
Creation Timestamp:Phase:
Events:
研究继续中….