kubernetes集群下部署mysql 8.0.20单机数据库

news2024/11/14 17:10:17

一、背景:

因为业务需求,需要在kubernetes集群下部署一个mysql数据库 8.0.20版本的单机服务。

具体实施过程如下:

二、实施部署mysql数据库:

mysql 8.0.20的镜像:

dockerhub.jiang.com/jiang-public/mysql:8.0.20-stjh

这里选择的namespace是:dev

1、创建pv、pvc存储:

注:这里的kubernetes集群环境存在storageclass组建,所以这里只要是pvc组建的配置就可以。

pvc:mysql-db-pvc 的yml配置内容

apiVersion: storage.k8s.io/v1
kind: PersistentVolumeClaim
metadata:
  name: db-mysql-pvc
  namespace: dev
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: hpe-san
  volumeMode: Filesystem

应用该pvc资源

# kubectl apply -f mysql-db-pvc.yaml

查看该pv资源

# kubectl get pvc -n dev

若需要进行删除pvc

方式一:

# kubectl delete pvc mysql-db-pvc -n dev

方式二:

# kubectl delete -f mysql-db-pvc.yaml

2、创建ConfigMap组建:

ConfigMap 是kuberbetes中的一种 API对象,用来将非机密性的数据保存到键值对中。使用时,Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap 的主要作用就是为了让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性。

使用 ConfigMap 的限制条件:

1、ConfigMap 需要在 Pod 启动前创建出来;
2、并且只有当 ConfigMap 和 Pod 处于同一命名空间时,才可以被 Pod 引用;
3、当 Pod 挂载 ConfigMap 绑定的目录时,目录下的目录并不会挂载到 Pod 内,只有目录下的文件会被挂载。

mysql-db-cm的yaml配置内容:

apiVersion: v1
kind: ConfigMap
metadata:
  annotations:
    configlabels: ""
  name: db-mysql-cm
  namespace: dev
data:
  my.cnf: |
    [mysql]
    default-character-set=utf8
    [mysqld]
    datadir=/var/lib/mysql
    max_connections=1000
    innodb_lock_wait_timeout=500
    character-set-server=utf8mb4
    collation-server=utf8mb4_general_ci
    default-storage-engine=INNODB
    sort_buffer_size=256MB
    lower_case_table_names=1
    default-time-zone='+8:00'


mysql的参数解释: 

    # mysql客户端默认字符集
    default-character-set=utf8
    [mysqld]
    # 数据库文件位置
    datadir=/var/lib/mysql
    # 允许最大连接数
    max_connections=1000
    # innodb的dml操作的行级锁的等待时间
    innodb_lock_wait_timeout=500
    # 设置mysql服务端默认字符集
    character-set-server=utf8mb4
    # 默认创建新数据的新建排序规则
    collation-server=utf8mb4_general_ci
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    # 缓存大小
    sort_buffer_size=256MB
    # 大小写敏感配置项0为敏感,1为不敏感
    lower_case_table_names=1
    # 选择正8区
    default-time-zone='+8:00'

应用configmap资源:

# kubectl apply -f mysql-db-cm.yaml

查看configmap:

# kubectl get cm -n dev

3、部署deployment的mysql服务:

 mysql-deploy.yaml配置内容:

kind: Deployment
metadata:
  name: mysql-db-okbny
  namespace: dev
  labels:
    app: mysql-db-okbny
    name: mysql-db
    version: v8.0.2
  annotations:
    deployment.kubernetes.io/revision: '6'
    sidecar.istio.io/inject: 'false'
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql-db-okbny
      name: mysql-db
  template:
    metadata:
      labels:
        app: mysql-db-okbny
        name: mysql-db
        version: v8.0.2
      annotations:
        cni.projectcalico.org/ipv4pools: '["172.25.0.0/16"]'
        sidecar.istio.io/inject: 'false'
        system/container-registry-map: '{"mysql-db":"default"}'
        system/registry: default
        v1.multus-cni.io/default-network: kube-system/calico@eth0
    spec:
      volumes:
        - name: db-mysql-cm
          configMap:
            name: db-mysql-cm
            defaultMode: 420
        - name: db-mysql-pvc
          persistentVolumeClaim:
            claimName: db-mysql-pvc
      containers:
        - name: mysql-db
          image: 'dockerhub.jiang.com/jiang-public/mysql:8.0.20-stjh'
          ports:
            - containerPort: 3306
              protocol: TCP
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: foura@1234
          resources:
            limits:
              cpu: '2'
              memory: 2Gi
            requests:
              cpu: '1'
              memory: 1Gi
          volumeMounts:
            - name: db-mysql-cm
              mountPath: /etc/my.cnf
              subPath: my.cnf
            - name: db-mysql-pvc
              mountPath: /var/lib/mysql
          livenessProbe:
            exec:
              command:
                - sh
                - '-c'
                - 'mysqladmin -uroot -p${MYSQL_ROOT_PASSWORD} ping'
            initialDelaySeconds: 30
            timeoutSeconds: 5
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
          securityContext:
            privileged: false
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
  strategy:
    type: Recreate
  minReadySeconds: 10
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

应用deploy资源: 

# kubectl apply -f mysql-deploy.yaml

查看deploy的mysql服务:

# kubectl get -f deploy

 4、部署service的mysql服务:

 mysql-db-service的服务配置内容:

kind: Service
metadata:
  name: mysql-db
  namespace: dev
  labels:
    name: mysql-db
    system/appName: dev
  annotations:
    binding_domains: ''
    system/https: 'false'
    system/lbgroup: group-dgdxw
    system/ruleComment: ''
    system/ruleName: db-mysql

spec:
  ports:
    - name: tcp-port-0
      protocol: TCP
      port: 3306
      targetPort: 3306
  selector:
    name: mysql-db
  type: ClusterIP
  sessionAffinity: None

应用service资源:

# kubectl apply -f mysql-db-service.yaml

查看service资源:

# kubectl get svc

三、登入mysql数据库:

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

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

相关文章

Windows有哪些免费好用的PDF编辑器推荐?

不是所有PDF编辑器都免费,但我推荐的这3个一定免费简单好用!! 1、转转大师PDF编辑器 点击直达链接>>pdftoword.55.la 转转大师PDF编辑器是一款专业的PDF编辑工具,功能丰富,操作简单,作为微软office…

ZYNQ—vitis—网口传输信号波形数据

ZYNQ—vitis—网口传输信号波形数据 工程功能:ADC采集信号,将波形数据通过BRAM传输到PS端,然后用UDP以太网发送。(附加:ILA观察信号,发送的数据包含帧头,) FPGA端——用BRAM将信号传…

如何在一个页面上定位多个关键词?

我应该针对多个关键词优化我的页面吗? 对于大多数网站来说,答案都是肯定的。 如果你制定的策略是仅针对一个关键字优化你的网页,这可能会导致一些问题。例如,如果一个网页只能使用一个关键字,那么他们可能会开发出非…

vue2利用html2canvas+jspdf动态生成多页PDF

业务需求中,前端把页面上的内容导出为图片,pdf,excel是常有的事。当然,这些工作后端也是能做。秉着前端是万能的理念,今天就站在前端的角度上,来实现将页面内容导出为pdf,实现指定div内容导出&a…

【数据结构篇】~复杂度

标题【数据结构篇】~复杂度 前言 C语言已经学完了,不知道大家的基础都打得怎么样了? 无论怎么说大家还是要保持持续学习的状态,来迎接接下来的挑战! 现在进入数据结构的学习了,希望大家还是和之前一样积极学习新知识…

ESP32人脸识别开发--人脸识别模型(六)

ESP-DL ESP-DL 为**神经网络推理**、**图像处理**、**数学运算**以及一些**深度学习模型**提供 API,通过 ESP-DL 能够快速便捷地将乐鑫各系列芯片产品用于人工智能应用 ESP-DL 无需借助任何外围设备,因此可作为一些项目的组件,例如可将其作…

使用Python制作贪吃蛇小游戏

引言 贪吃蛇游戏是一款经典的电子游戏,玩家通过控制一条不断增长的蛇在格子内移动,并吃掉随机出现的食物来获得分数。随着分数的增加,蛇的身体也会越来越长,游戏的难度也随之提升。在本文中,我们将详细介绍如何使用Py…

天途推出无人机软硬件定制服务

近年,随着低空经济高速发展,无人机已成为千行百业的生产和工作辅助工具,很多行业用户都有信息化数字化的软件需求,以及不同负载的集成设计需求。 天途拥有云平台开发、自主飞控系统、控制算法、无人机AI数据系统等核心技术研发团队…

Flink常见面试题整理

Flink常见面试题整理 文章目录 Flink常见面试题整理1. 数据倾斜问题怎么解决?2、什么是Flink中的窗口3、Flink中的水位线(Watermarks)是什么?4、Flink中的定时器实现机制是什么?有什么作用?5、Flink中的状态…

llama3.1本地部署方式

llama3.1 资源消耗情况 Llama 3.1 - 405B、70B 和 8B 的多语言与长上下文能力解析  70B版本,FP1616K token需要的资源约为75G;FP16128K token需要的资源约为110G  1、ollama ollama工具部署及使用…

力扣面试经典算法150题:找出字符串中第一个匹配项的下标

找出字符串中第一个匹配项的下标 今天的题目是力扣面试经典150题中的数组的简单题: 找出字符串中第一个匹配项的下标 题目链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/?envTypestudy-plan-v2&envIdto…

免费远程控制电脑的软件有哪些?

什么是远程控制? 远程控制是一种通过网络从一台设备操作另一台设备的技术。连接后,用户可以直接远程操作那台电脑进行各种操作。随着科技的不断进步和用户需求的增加,远程控制市场日益蓬勃。远程控制不仅应用于远程办公和远程教学&#xff0…

Windows11下wsl闪退的解决

wsl闪退 1. 原因分析 解释:WSL(Windows Subsystem for Linux)闪退通常指的是在Windows操作系统中运行的Linux环境突然关闭。这可能是由于多种原因造成的,包括系统资源不足、WSL配置问题、兼容性问题或者是Linux内核的问题。&…

STM32—PWR电源控制

1.PWR简介 PWR负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值一下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务 低…

HamronyOS开发5.0【埋点】方案讲解

大多数软件产品上线前,都会采用有规则的日志来对软件进行相关数据的采集,这个过程称为:[埋点],采集的数据主要用于产品分析。 埋点技术已在PC端, 移动端非常成熟,并且有大批量以此为生的公司。 本篇将探究一下Harmon…

STM32—RTC实时时钟

1.Unix时间戳 Unix时间戳定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒 时间戳存储在一个秒计数器中,秒计数器为32位/64位的整形变量 世界上所有时区的秒计数器相同,不同时区通过添加偏移来得到当地时间 2.时间戳转…

函数(子程序)的常见、易混淆概念详解【对初学者有帮助】

C语⾔中的函数也被称做子程序,意思就是⼀个完成某项特定的任务的⼀小段代码。 C语⾔标准中提供了许多库函数,点击下面的链接可以查看c语言的库函数和头文件。 C/C官⽅的链接:https://zh.cppreference.com/w/c/header 目录 一、函数头与函…

VsCode配置Cph实现高效刷题教程

cph作用 : 自动创建文件自动获取题目案例自动测试样例自动配置模板 在vscode中安装cph插件 : 在扩展的搜素框中输入Competitive Programming Helper(cph),点击下载即可 在浏览器中安装Competitive Companion 浏览器插件 这里推荐离线下载 : 网址 : Competit…

2024/8/15 不上电测伺服端子是否正常

拿3线220V举例,拿两种测量表举例,下图均为正常情况 L1和L2测量,L3不用管(空的)。 1.先测输入L1/2是否短路,输出UVW是短路为正常(与变频器相反) 2.正(红)—RS…

PL/SQL是什么软件 PL/SQL最新版本功能介绍

PL/SQL是什么软件?PL/SQL软件多指PL/SQL Developer,这是一款专业的PL/SQL开发工具,它可以帮助开发者编写、调试和优化PL/SQL代码,提高开发效率和质量。本文将介绍PL/SQL Developer 15最新版本的主要功能和特点。 一、PL/SQL是什么…