• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

mysql/mysql-operator: MySQL Operator for Kubernetes

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

mysql/mysql-operator

开源软件地址(OpenSource Url):

https://github.com/mysql/mysql-operator

开源编程语言(OpenSource Language):

Python 95.8%

开源软件介绍(OpenSource Introduction):

MySQL Operator for Kubernetes

Introduction

The MySQL Operator for Kubernetes is an operator for managing MySQL InnoDB Cluster setups inside a Kubernetes Cluster. It manages the full lifecycle with set up and maintenance that includes automating upgrades and backup.

MySQL Operator for Kubernetes is brought to you by the MySQL team at Oracle.

License

Copyright (c) 2020, 2022, Oracle and/or its affiliates.

License information can be found in the LICENSE file. This distribution may include materials developed by third parties. For license and attribution notices for these materials, please refer to the LICENSE file.

MySQL Operator for Kubernetes Installation

Using Manifest Files with kubectl

First deploy the Custom Resource Definition (CRDs):

$> kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-crds.yaml

Then deploy MySQL Operator for Kubernetes:

$> kubectl apply -f https://raw.githubusercontent.com/mysql/mysql-operator/trunk/deploy/deploy-operator.yaml

Verify the operator is running by checking the deployment inside the mysql-operator namespace:

$> kubectl get deployment -n mysql-operator mysql-operator

NAME             READY   UP-TO-DATE   AVAILABLE   AGE
mysql-operator   1/1     1            1           1h

Using Helm

Alternatively, you may use Helm; which is a package manager for Kubernetes.

Install the Helm repository:

$> helm repo add mysql-operator https://mysql.github.io/mysql-operator/
$> helm repo update

Then deploy the operator:

$> helm install mysql-operator helm/mysql-operator --namespace mysql-operator --create-namespace

This deploys the latest MySQL Operator for Kubernetes from DockerHub using all defaults; although the deployment can be customized through a variety of options to override built-in defaults. See the documentation for details.

MySQL InnoDB Cluster Installation

Using kubectl

For creating a MySQL InnoDB Cluster, first create a secret with credentials for a MySQL root user used to perform administrative tasks in the cluster. For example:

$> kubectl create secret generic mypwds \
        --from-literal=rootUser=root \
        --from-literal=rootHost=% \
        --from-literal=rootPassword="sakila"

Define your MySQL InnoDB Cluster, which references the secret. For example:

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  secretName: mypwds
  tlsUseSelfSigned: true
  instances: 3
  router:
    instances: 1

Assuming it's saved as mycluster.yaml, deploy it:

$> kubectl apply -f mycluster.yaml

This sample creates an InnoDB Cluster with three MySQL Server instances and one MySQL Router instance. The process can be observed using:

$> kubectl get innodbcluster --watch

NAME          STATUS    ONLINE   INSTANCES   ROUTERS   AGE
mycluster     PENDING   0        3           1         2m6s
...
mycluster     ONLINE    3        3           1         10s

Using Helm

Create MySQL InnoDB Cluster installations using defaults or with customization. Here's an example using all defaults for a cluster named mycluster:

$> helm install mycluster mysql-operator/mysql-innodbcluster

Or customize, this example sets options from the command line:

$> helm install mycluster helm/mysql-innodbcluster \
        --namespace mynamespace \
        --create-namespace \
        --set credentials.root.user='root' \
        --set credentials.root.password='supersecret' \
        --set credentials.root.host='%' \
        --set serverInstances=3 \
        --set routerInstances=1

Connecting to MySQL InnoDB Cluster

A MySQL InnoDB Cluster Service is created inside the Kubernetes cluster:

$> kubectl get service mycluster

NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                  AGE
mycluster   ClusterIP   10.110.228.51   <none>        3306/TCP,33060/TCP,6446/TCP,6448/TCP,6447/TCP,6449/TCP   26h

The ports represent read-write and read-only ports for the MySQL Protocol and the X Protocol. Use describe or see the documentation for additional information.

Using MySQL Shell

This example creates a new container named myshell using the mysql/mysql-operator image (which is used because it contains MySQL Shell; other images such as mysql/mysql-server:8.0 work too), and immediately executes MySQL Shell:

$> kubectl run --rm -it myshell --image=mysql/mysql-operator -- mysqlsh
If you don't see a command prompt, try pressing enter.

MySQL JS>  \connect root@mycluster

Creating a session to 'root@mycluster'
Please provide the password for 'root@mycluster': ******

MySQL mycluster JS>

Using root@mycluster connection assumes the default namespace is used; the long form is {innodbclustername}.{namespace}.svc.cluster.local. Each MySQL instance has MySQL Shell installed that can be used when troubleshooting.

Using Port Forwarding

Kubernetes port forwarding creates a redirection from your local machine to use a MySQL client, such as mysql or MySQL Workbench. For example, for read-write connection to the primary using the MySQL protocol:

$> kubectl port-forward service/mycluster mysql

Forwarding from 127.0.0.1:3306 -> 6446
Forwarding from [::1]:3306 -> 6446

And in a second terminal:

$> mysql -h127.0.0.1 -P3306 -uroot -p

Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
...

When prompted, enter the password used when creating the Secret.

More Information

Refer to the official documentation at:

For additional downloads and the source code, visit:

Contributing to MySQL Operator for Kubernetes, see:




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap