kubernetes集群部署mysql 8.0

摘要:
env参数指定mysql的根密码。在mysql-svc.yaml中,targetPort表示mysqlpod中mysql窗口的目标端口。默认值为3306。类型为NodePort,表示将映射到本地端口。本地端口为NodePort:32306。接下来,启动PVC、deployment和service,并执行以下命令:kubectlcreate-fmysql-PVC.yamlkubectlcreate-fmysql-deploy.yamlkubectcreate-fmysql-svc.yaml启动后,您可以查看MySQL部署在哪个节点上,并执行下列命令查看:kubectlgetpod oide输出如下,您可以看到它部署在192.168.56.28节点中,其中部署kubernets时,节点的名称由ip表示。远程连接到mysql8.0时可能会报告一些错误,例如navicat connection Execute dockers以查看mysql容器。Mysql-h127.0.0.1-uroot-pmysql,将Mysql设置如下。

参考:https://blog.csdn.net/sealir/article/details/81177747?utm_source=blogxgwz1

集群内安装mysql并添加相应存储(PVC)

 新建mysql-pvc.yaml、mysql-deploy.yaml和mysql-svc.yaml,分别如下:

 先找出当前k8s集群下的storageClass的name,用来创建PVC!!

     kubectl get storageclasses --all-namespaces

    mysql-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  namespace: kube-system
  labels:
    app: mysql-pvc
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: default
storageClassName: default 中的default即为查找出来的storageClass

    mysql-deploy.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql-deploy
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      name: mysql-pod
  template:
    metadata:
      labels: 
        name: mysql-pod
    spec:
      containers:
        - name: mysql
          image: mysql:8.0.12
          imagePullPolicy: IfNotPresent
          env:
          - name: MYSQL_ROOT_PASSWORD
            value: noc-mysql
          ports:
            - containerPort: 3306
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: "/var/lib/mysql"
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-pvc

    mysql-svc.yaml

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

在mysql-deploy.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: 32306。

接下来启动PVC、Deployment和Service,执行以下命令:

     kubectl create -f mysql-pvc.yaml
     kubectl create -f mysql-deploy.yaml
     kubectl create -f mysql-svc.yaml

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

     kubectl get pod -o wide

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

kubernetes集群部署mysql 8.0第1张

远程连接mysql8.0时可能会报一些错误,如navicat连接。

注:出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种,一种是升级navicat驱动,一种是把mysql用户登录密码加密规则还原成mysql_native_password】

这里对mysql8.0作一些设置。

    (1)、登录到192.168.56.28node中。 

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

kubernetes集群部署mysql 8.0第2张

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

  docker exec -it container_id /bin/bash

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

       mysql -h 127.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,映射的端口为32306,可以用navicat工具连接到这个myql。

免责声明:文章转载自《kubernetes集群部署mysql 8.0》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇谷歌浏览器安装Elasticsearch-head 插件WKWebView和JS交互下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

order by调优的一些测试

表结构信息:mysql> show create table tbG*************************** 1. row *************************** Table: tbCreate Table: CREATE TABLE `tb` ( `c` int(11) DEFAULT NULL, `d` int(4)...

MySQL创建表

1.不控制主键的起点 -- 1.不控制主键的起点 create table emb_t_dictBusType ( emb_c_busTypeID int unsigned primary key not null auto_increment, emb_c_busTypeEnName varchar(255) not null,...

MySQL查询语句分析 explain用法

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。 使用方法,在select语句前加上explain就可以了,如: explain select * from statuses_status where id=11; explain列的解释table:显示这一行的数据是关于哪张表的...

PHP环境搭建

php环境分为两种:wanmplanmp PHP官网  w: windows 系统l: linux 系统a: apache 服务器n: nginx 服务器m: mysql 数据库p: php 服务器端的脚本语言 安装环境分为两种:集成环境 一键安装 集成环境 phpStudy wampserver apmserver xampp linux phpStu...

MySQL数据库

MySQL数据库 一、库操作 1、创建数据库 1.1语法:CREATE DATABASE数据库名[charset utf8]; 1.2数据库命名规则:可以由字母、数字、下划线、@、#、$,区分大小写,唯一性,不能使用关键字如 create select,不能单独使用数字,最长128位,#基本上跟。,python或者js的命名规则一样。 2、数据库相关操作:...

MySQL各版本的区别(转)

MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择。 1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。2. MySQL Enterprise Edition 企业版本,需付费,可以试用30天。3. MySQL Cluster 集群版,开源...