K8S集群部署MySql

news2024/12/22 4:08:54

挂载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的Selector
    spec:
      nodeName: k8s-worker01                    # 指定pod运行在的node
      containers:                               # Pod里容器的定义部分
        - name: mysql                           # 容器的名称
          image: mysql:5.7                      # 容器对应的docker镜像
          volumeMounts:                         # 容器内挂载点的定义部分
            - name: time-zone                   # 容器内挂载点名称
              mountPath: /etc/localtime         # 容器内挂载点路径,可以是文件或目录
            - name: mysql-data
              mountPath: /var/lib/mysql         # 容器内mysql的数据目录
            - name: mysql-logs
              mountPath: /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-data
          hostPath:
            path: /data/mysql/data              # 本地存放mysql数据的目录
        - name: mysql-logs
          hostPath:
            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: mysql
  labels:
    name: mysql
spec:
  type: NodePort
  ports:
    - port: 3306
      targetPort: 3306
      nodePort: 30001
  selector:
    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.coloradmin.cn/o/1351078.html

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

相关文章

工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)

工业相机如何实现实时和本地Raw图像和Bitmap图像的保存和相互转换(C#代码,UI界面版) 工业相机图像格式工业相机实现Raw图像和Bitmap图像的保存和转换的技术背景在相机SDK中获取图像转换图像的代码分析工业相机回调函数里保存Bitmap图像数据工…

【Spring】spring的容器创建

目录 控制反转IOC 依赖注入DI 创建spring的容器方式: 思考: spring整合Junit4 控制反转IOC 把对象的创建和对象之间的调用过程,交给Spring管理,IOC是容器,是思想。!!! 依赖注入…

Redis源码——压缩列表

压缩列表ziplist本质上就是一个字节数组,是Redis为了节约内存而设计的一种线性数据结构,可以包含多个元素,每个元素可以是一个字节数组或一个整数。Redis的有序集合、散列和列表都直接或者间接使用了压缩列表。当有序集合或散列表的元素个数比…

打破无声世界:让您的网站会说话

导语:在当今的互联网世界,技术创新日新月异,为广大开发者提供了无数便捷的工具。本文将为您介绍前端文本语音API,这一神奇的技术能够实现文字到语音的转换,为您的项目增添更多可能性。同时,我们还将为您提供…

AI-数学-高中-1.集合(集合特性、常见数集和集合表示方法)

1.集合的三大特性 示例: 2.常见数集: 自然数就是没有负数的整数,即0和正整数。(如0,1,2……,0既不是正整数,也不是 负整数 0是整数) 整数就是没有小数位 ,即…

如何下载Sentinel-1数据

Sentinel-1是欧洲空间局(ESA)的一组地球观测卫星,属于Copernicus计划的一部分。该计划旨在为全球环境监测提供数据,并支持应对气候变化、自然灾害和人类活动的挑战。Sentinel-1卫星的主要任务是提供全天候、全时段、高分辨率的合成…

FreeRTOS内核控制函数

常见内核控制函数 其中一些函数注意事项和理解: taskYIELD() 挑选了就绪列表中优先级最高的函数进行运行 四个和临界区有关的函数 在临界区中的函数不会被打断!!!比如在创建任务时会后下图这种情况: 似乎上述解释有…

【实用工具】FFmpeg常用的命令

前言 FFmpeg是一个强大的多媒体处理工具,可以用于处理音频、视频和图像。 命令格式 ffmpeg {1} {2} -i {3} {4} {5} 上面命令中,五个部分的参数依次如下。 1.全局参数 2.输入文件参数 3.输入文件 4.输出文件参数 5.输出文件 常见命令行参数 -c&…

【驱动序列】简单聊聊开发驱动程序的缘由和驱动程序基本信息

大家好,我是全栈小5,欢迎来到《小5讲堂》,这是《驱动程序》专栏序列文章。 这是2024年第4篇文章,此篇文章是结合了C#知识点实践序列文章,博主能力有限,理解水平有限,若有不对之处望指正&#xf…

Django HttpResponse 响应对象

目录 一、概述二、测试三、属性和方法四、解读 request 参数 一、概述 所谓 HttpRequest 响应就是服务器返回给客户端的数据,HttpRequest 由程序员自己创建,一般他们通过两种方式来创建。 不使用模板,直接调用 HttpResponse(),返…

虚幻UE 材质-边界混合之PDO像素深度偏移量

2024年的第一天!!!大家新年快乐!!! 可能是长大了才知道 当你过得一般 你的亲朋好友对你真正态度只可能是没有表露出来的冷嘲热讽了 希望大家新的一年平安、幸福、 永远活力满满地追求自己所想做的、爱做的&…

《3D数学基础-图形和游戏开发》阅读笔记 | 3D数学基础 (学习中)

文章目录 3D数学基础矢量/向量概述 - 什么是向量单位矢量:只关注方向不关注大小 数学运算矢量的加法与减法减法的几何意义计算一个点到另一个点的位移矢量的点积与叉积 矩阵矩阵的几何意义 3D数学基础 矢量/向量 在笔记中 变量使用小写字母表示,a由于…

VisioForge SDKs for .NET cRACK

VisioForge 为软件开发人员提供视频捕获、编辑和播放解决方案 使用我们的开发人员软件,您可以创建应用程序来捕获来自各种来源(例如网络摄像头、IP 摄像机、摄像机或 PC 屏幕)的视频。视频可以保存为所有流行的格式,例如 MP4、Web…

slf4j+logback源码加载流程解析

slf4j绑定logback源码解析 Logger log LoggerFactory.getLogger(LogbackDemo.class);如上述代码所示,在项目中通常会这样创建一个Logger对象去打印日志。 然后点进去,会走到LoggerFactory的getILoggerFactory()方法,如下代码所示。 public …

Go(Golang)的10个常见代码片段用于各种任务

探索有用的Go编程代码片段 提供“前10名”Go(Golang)代码片段的明确列表是具有挑战性的,因为代码片段的实用性取决于您试图解决的具体问题。然而,我可以为您提供十个常用的Go代码片段,涵盖了各种任务和概念&#xff1…

AirServer 7.27 mac版投屏下载2024最新安装许可证激活码

AirServer官方版是一款使用方便的投屏软件,在教室,会议室以及游戏中极为方便。AirServer官方版支持IOS、Android、Windows、mac、Chromebook等多种设备,使用AirServer不需要其他的设备即可完成投屏操作,相比其他投屏软件&#xff…

[密码学]ECC加密

椭圆曲线加密 Ellipse Curve Cryptography 椭圆曲线上的离散对数问题 Ellipse Curve Discrete logarithm Problem 椭圆曲线 注意积分公式的分母,椭圆曲线由此得名。这种曲线和椭圆一点不像。 离散对数: yg^x mod p,对于给定的g,x,p求y很容易&#…

解决:PermissionError: [Errno 13] Permission denied: ‘xxx’

解决:PermissionError: [Errno 13] Permission denied: ‘xxx’ 文章目录 解决:PermissionError: [Errno 13] Permission denied: xxx背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报错…

Java技术栈 —— Nginx的使用

Java技术栈 —— Nginx的使用 一、认识Nginx二、搭建Nginx环境2.1 在Ubuntu上安装Nginx 三、使用Nginx3.1 配置负载均衡(HTTP) 一、认识Nginx 企业需要运行多个相同的副本,并将负载分散在整个系统集群上,为了高性能的负载均衡,引入了Nginx代…

【Kubernetes】配置管理中心Configmap

配置管理中心Configmap 一、简介1.1、什么是Configmap1.2、Configmap能解决什么问题1.3、Configmap应用场景1.4、Configmap局限性 二、Configmap创建方法2.1、命令行直接创建2.2、通过文件创建2.3、指定目录创建2.4、编写configmap资源清单yaml文件 三、使用Configmap3.1、通过…