我是靠谱客的博主 繁荣大白,最近开发中收集的这篇文章主要介绍kubernetes集群部署mysql 8.0一、kubernetes集群二、部署mysql8.0,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、kubernetes集群

    kubernetes集群安装参照https://blog.csdn.net/sealir/article/details/81070924进行安装。

二、部署mysql8.0

    mysql可以以docker的形式在集群内部署,也可以安装在集群之外,以服务的形式部署到集群内。

    (1)、如果是在集群内部署,可以启动一个ReplicationController,用以对mysql pod进行监控,并同时启动一个Service,用以集群访问。

    (2)、如果mysql是安装在集群之外,那么可以启动一个Endpoint和Service,将mysql引入集群之中。

    下面分别对这两种方式进行部署。

1、集群内安装mysql

    新建mysql-rc.yaml和mysql-svc.yaml,分别如下:

    mysql-rc.yaml:

apiVersion: v1
kind: ReplicationController
metadata:
name: mysql-rc
labels:
name: mysql-rc
spec:
replicas: 1
selector:
name: mysql-pod
template:
metadata:
labels:
name: mysql-pod
spec:
containers:
- name: mysql
image: mysql
imagePullPolicy: IfNotPresent
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "mysql"

    mysql-svc.yaml

apiVersion: v1
kind: Service
metadata:
name: mysql-svc
labels:
name: mysql-svc
spec:
type: NodePort
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: http
nodePort: 33306
selector:
name: mysql-pod

    在mysql-rc.yaml中,image参数可以指定mysql的版本,如8.0.11、5.7.22等。这里省略了,表示用latest。另外,可以指定镜像库,这里使用阿里云镜像库,在安装docker时进行了配置。env参数指定了mysql的root密码。

    在mysql-svc.yaml中,targetPort表示mysql pod中mysql窗口的目标端口,默认为3306,type类型为NodePort,表示将映射到本地端口,本地端口为nodePort: 33306。

    接下来启动ReplicationController和Service,执行以下命令:

    kubectl create -f mysql-rc.yaml
    kubectl create -f mysql-svc.yaml

    启动后可以查看mysql部署在了哪个node上,执行以下命令可以查看:

    kubectl get pod -o wide

    输出如下,可以看到部署在了192.168.56.28 node中,这里在部署kubernetes时用ip表示node的名称。

    

    远程连接mysql8.0时可能会报一些错误,如navicat连接。这里对mysql8.0作一些设置。

    (1)、登录到192.168.56.28node中。 

    (2)、执行docker ps查看mysql容器。如下所示:

    (3)、进入mysql容器,执行以下命令进入容器,这里container_id为458bb493e233

    docker exec -it container_id /bin/bash

    (4)、在容器内登录mysql。执行以下命令,-h为ip,容器内ip为127.0.0.1,-r为用户名,-p为密码,在mysql-rc中设置的密码。

    mysql -h127.0.0.1 -uroot -pmysql

    (5)、对mysql进行如下设置。

    alter user 'root'@'%' identified with mysql_native_password by'root';
    alter  user 'root'@'%' identified by 'mysql';

    (6)、退出mysql和容器,执行quit;退出mysql,按ctrl+p后,再按ctrl+q从容器中返回node主机。

    设置好mysql后,可以远程连接node中的mysql,node的ip为192.168.56.28,映射的端口为33306,可以用navicat工具连接到这个myql。

2、集群外安装mysql

    首先在集群外的某个主机上安装myql,并能在集群所在的机器上访问。这里在192.168.56.8上用docker安装了mysql,docker的启动命令如下,绑定主机端口3306,并用以上方法同样进行设置。

    如需设计UTF-8,可在宿主机生成配置文件/leesia/mysql/my.cnf,再挂载到容器中,配置如下:

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
#
# The MySQL
Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
pid-file
= /var/run/mysqld/mysqld.pid
socket
= /var/run/mysqld/mysqld.sock
datadir
= /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

    配置后,执行如下命令,若将库文件存储在宿主机,再增加-v <dir>:/var/lib/mysql,将宿主机目录挂载到容器中。

docker run -d -p 3306:3306 -v /leesia/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=mysql --name docker-mysql mysql

    新建mysql-out-svc.yaml,内容如下:

apiVersion: v1
kind: Service
metadata:
name: mysql-out-svc
spec:
ports:
- port: 3306
protocol: TCP
targetPort: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
name: mysql-out-svc
subsets:
- addresses:
- ip: "192.168.56.8"
ports:
- port: 3306

    执行以下命令启动服务:

    kubectl create -f mysql-out-svc.yaml

    服务启动后,将部署mysql部署到了kubernetes集群之中。

     可以执行以下命令查看启动的服务:

     kubectl get svc

     输出如下,mysql-out-svc即是启动的服务:

    

    在集群之中可以用CLUSTER-IP和PORT端口访问服务,这里的IP和端口分别是172.18.141.141和3306,可以在集群内的某个容器中访问到这个服务,例如可以在上面启动的mysql容器中执行以下命令连接mysql-out-svc。

    mysql -h172.18.141.141 -uroot -pmysql

 

最后

以上就是繁荣大白为你收集整理的kubernetes集群部署mysql 8.0一、kubernetes集群二、部署mysql8.0的全部内容,希望文章能够帮你解决kubernetes集群部署mysql 8.0一、kubernetes集群二、部署mysql8.0所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部