mysql operator_mysql-operator 尝试与研究

於宾白
2023-12-01

安装指南

先下载到本地

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:

研究继续中….

 类似资料: