K8S集群部署MySql

挂载MySQL数据卷

在k8s集群中挂载MySQL数据卷 需要安装一个NFS。

在主节点安装NFS

  yum install -y nfs-utils rpcbind

在主节点创建目录

  mkdir -p /nfs

  chmod 777 /nfs

更改归属组与用户

  chown -R nfsnobody:nfsnobody /nfs

配置共享目录

  echo "/nfs *(insecure,rw,sync,no_root_squash)" > /etc/exports

创建mysql共享目录

  mkdir -p /nfs/mysql

启动服务

  systemctl start rpcbind

  systemctl start nfs

设置开启启动

  systemctl enable rpcbind

  systemctl enable nfs

0

检查配置是否生效

  exportfs

  showmount -e 192.168.91.129

0

创建MySQL Deployment

编写一个 mysql.yaml 配置文件:

apiVersion: apps/v1                             # apiserver的版本
kind: Deployment                                # 副本控制器deployment,管理pod和RS
metadata:name: mysql                                   # deployment的名称,全局唯一namespace: default                            # deployment所在的命名空间labels:app: mysql
spec:replicas: 1                                   # Pod副本期待数量selector:matchLabels:                                # 定义RS的标签app: mysql                                # 符合目标的Pod拥有此标签strategy:                                     # 定义升级的策略type: RollingUpdate                         # 滚动升级,逐步替换的策略template:                                     # 根据此模板创建Pod的副本(实例)metadata:labels:app: mysql                              # Pod副本的标签,对应RS的Selectorspec:nodeName: k8s-worker01                    # 指定pod运行在的nodecontainers:                               # Pod里容器的定义部分- name: mysql                           # 容器的名称image: mysql:5.7                      # 容器对应的docker镜像volumeMounts:                         # 容器内挂载点的定义部分- name: time-zone                   # 容器内挂载点名称mountPath: /etc/localtime         # 容器内挂载点路径,可以是文件或目录- name: mysql-datamountPath: /var/lib/mysql         # 容器内mysql的数据目录- name: mysql-logsmountPath: /var/log/mysql         # 容器内mysql的日志目录ports:- containerPort: 3306               # 容器暴露的端口号env:                                  # 写入到容器内的环境容量- name: MYSQL_ROOT_PASSWORD         # 定义了一个mysql的root密码的变量value: "root"volumes:                                  # 本地需要挂载到容器里的数据卷定义部分- name: time-zone                       # 数据卷名称,需要与容器内挂载点名称一致hostPath:path: /etc/localtime                # 挂载到容器里的路径,将localtime文件挂载到容器里,可让容器使用本地的时区- name: mysql-datahostPath:path: /data/mysql/data              # 本地存放mysql数据的目录- name: mysql-logshostPath:path: /data/mysql/logs              # 本地存入mysql日志的目录

将 mysql.yaml 配置文件上传至虚拟机的 /root 目录下,在 /root 目录下执行命令:

  kubectl create -f mysql.yaml

0

执行添加服务的命令(这行不执行应该也不影响结果):

  kubectl apply -f mysql.yaml

0

编写一个提供对外访问的service mysql-svc.yaml:

apiVersion: v1
kind: Service
metadata:name: mysqllabels:name: mysql
spec:type: NodePortports:- port: 3306targetPort: 3306nodePort: 30001selector:app: mysql

将 mysql-svc.yaml 配置文件上传至虚拟机的 /root 目录下,在 /root 目录下执行命令:

  kubectl create -f mysql-svc.yaml

0

访问数据库并验证其运行正常

  kubectl get pod

0

kubectl exec -it mysql-999dcb98f-srxff -- mysql -u root -p

(密码也是root)

0

mysql开放远程连接:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

flush privileges;        #刷新权限表,使配置生效

开启防火墙端口

systemctl start firewalld.service

firewall-cmd --zone=public --add-port=6443/tcp --permanent

firewall-cmd --zone=public --add-port=30001/tcp --permanent

firewall-cmd --reload

firewall-cmd --zone=public --list-ports

systemctl stop firewalld.service

systemctl disable firewalld.service

要开放6443端口(k8s集群连接地址)和30001端口(k8s集群mysql端口)

查看已安装的mysql

kubectl get pod

0

kubectl get svc

0

mysql服务安装在default命名空间中,查看其所在节点:

kubectl get pod -n default -o wide

0

此次部署的mysql服务被我们指定运行在了 k8s-worker01 节点上。

在本地用SQLyog连接到k8s集群的mysql:

0

0

创建一个名为 test 的数据库:

0

将本地数据导入搭建好的mysql服务器-test数据库:

0

0

可以看到,数据已成功导入。

在k8s集群中查看mysql数据库:

0

可看到中文数据出现乱码问题。

查看数据库的字符编码类型:

show variables like '%char%';

0

将查询结果集设置为utf8后再查看数据:

set character_set_results=utf8;

0

已经可以正常显示中文了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux更改登录shell

从bash修改成python 在/etc/passwd下可以更改用户登录bash 例 root:x:0:0:root:/root:/bin/bash //更改bin/bash为/bin/python,就可以用root登录python页面了从python修改成bash 方法一 重启页面按e进入内核编辑模式linux16这行后添加:init/bin/…

Linux操作系统基础(3):Linux终端的使用

1. Linux终端的介绍 Linux 终端是指在 Linux 操作系统下用于与用户进行交互的命令行界面(基于文本的交互)。它是用户与操作系统进行直接交互的主要方式,可以通过输入命令来执行各种操作,如文件管理、进程控制、系统配置等。 Lin…

【WPF.NET开发】WPF中的输入

本文内容 输入 API事件路由处理输入事件文本输入触摸和操作侧重点鼠标位置鼠标捕获命令输入系统和基元素 Windows Presentation Foundation (WPF) 子系统提供了一个功能强大的 API,用于从各种设备(包括鼠标、键盘、触摸和触笔)获取输入。 本…

CTF流量分析经典例题详解

目录 入门题型 题目:Cephalopod(图片提取) 题目:特殊后门(icmp协议信息传输) 题目:手机热点(蓝牙传输协议obex,数据提取) 题目:想蹭网先解开密码(无线密码破解) 进阶题型 题目:抓到一只苍蝇(数据包筛选,数据提…

React16源码: React.Children源码实现

React.Children 1 ) 概述 这个API用的也比较的少,因为大部分情况下,我们不会单独去操作children我们在一个组件内部拿到 props 的时候,我们有props.children这么一个属性大部分情况下,直接把 props.children 把它渲染到我们的jsx…

蓝牙物联网智能车用语音控制系统模块设计

随着信息产业的快速发展,简单的控制操作机器已经不能满足人类的欲望,利用语音识别技术让机器理解人类的语言,以及实现人机交互成为新的研究内容。对用户来说,这种人机交互的方式当是最自然的一种方式。同时,使人们在车…

塔夫特原则

塔夫特原则(Tuftes Principles)是由数据可视化专家爱德华塔夫特(Edward Tufte)提出的一组指导性原则,旨在帮助人们创建清晰、有效和有力的数据可视化图表。这些原则强调了以数据为核心,通过简洁、准确和易于…

【Java开发岗面试】八股文—Java虚拟机(JVM)

声明: 背景:本人为24届双非硕校招生,已经完整经历了一次秋招,拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验(主要是校招),包括我自己总结的八股文、算法、项目介绍、HR面和面试…

小球自由下落-第11届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第23讲。 小球自由下落&…

python flask-wft

这个放在前面你个表单的博客内容 精髓放这 from flask import Flask from flask import render_template from flask_wtf import FlaskForm from wtforms.fields import (StringField, PasswordField, DateField, BooleanField,SelectField, SelectMultipleField, TextAreaFi…

第一个Qt程序----Hello word!

从今天起就开始我们的第一个Qt小程序,点击New Project后点击右侧的Application后点击Qt Widgets Application。Qt Widgets 模块提供了一组UI元素用于创建经典的桌面风格的用户界面,Widgets是小部件的意思,也可以称为控件,因此Qt …

粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)

1.csv数据为密西西比数据集,获取数据集可以管我要,数据集内容形式如下图: 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过,需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…

在 Android 上使用 MediaExtractor 和 MediaMuxer 提取视频\提取音频\转封装\添加音频等操作

文章目录 前言一、MediaExtractor 基本介绍与使用二、MediaMuxer 基本介绍与使用示例提取视频提取音频混合视频与音频文件 总结参考 前言 之前我们介绍了 FFmpeg 并利用它解封装、编解码的能力完成了一款简易的视频播放器。FFmpeg 是由 C 实现的,集成至 Android 等…

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景: Serial GC(串行收集器) 特点:单线程执行,对新生代进行垃圾回收时采用复制算法(Copying),在老年代可能使用标记-压缩或标记…

(学习打卡2)重学Java设计模式之六大设计原则

前言:听说有本很牛的关于Java设计模式的书——重学Java设计模式,然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧,本文主要记录笔者的学习笔记和心得。 打卡!打卡! 六大设计原则 (引读:这里…

K8S本地开发环境-minikube安装部署及实践

引言 在上一篇介绍了k8s的入门和实战,本章就来介绍一下在windows环境如何使用minikube搭建K8s集群,好了废话不多说,下面就和我一起了解Minikube吧。 什么是Minikube? Minikube 是一种轻量级的 Kubernetes 实现,可在本…

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…

[Angular] 笔记 23:Renderer2 - ElementRef 的生产版本

chatgpt: Renderer2 简介 在 Angular 中,Renderer2 是一个服务,用于处理 DOM 操作的抽象层。它提供了一种安全的方式来操作 DOM,同时与平台无关,有助于维护应用程序的跨浏览器兼容性和安全性。 Renderer2 的作用是在 Angular 组…