helm 部署单节点 mysql 8.0.36

news2024/9/8 22:56:49

文章目录

    • @[toc]
    • 添加 helm 仓库
    • 下载 chart 包
    • 修改 values.yml 文件
    • 安装 mysql
    • 创建 pv
    • 验证 mysql 版本
    • 创建 mysql 备份 job
      • 创建 mysql 备份用户
      • 创建备份目录持久化

添加 helm 仓库

helm repo add bitnami https://charts.bitnami.com/bitnami

查看 helm 仓库,看看 8.0.36 版本的 mysql 对应哪个版本的 chart 包

helm search repo mysql -l | grep 8.0.36

bitnami 的一般列出来的都挺多的,我一般喜新厌旧

bitnami/mysql           10.2.1          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           10.1.1          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           10.1.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           10.0.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.23.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.22.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.21.2          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.21.1          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.19.1          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.19.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.18.2          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.18.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.17.1          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.17.0          8.0.36          MySQL is a fast, reliable, scalable, and easy t...
bitnami/mysql           9.16.4          8.0.36          MySQL is a fast, reliable, scalable, and easy t...

下载 chart 包

helm pull bitnami/mysql --version 10.2.1
tar xf mysql-10.2.1.tgz
cd mysql

修改 values.yml 文件

先备份一下

cp values.yaml{,.bak}

利用 openssl rand 8 来生成八个字符的随机内容,这个内容不可读,利用 -base64 转码变成可读的字符

openssl rand 8 -base64

原配置文件比较长,这里就展示一下我修改过的内容

# 一般 helm 部署的 pod 名字都是 releaseName 开头的,会把整体 pod 名字拉长了
## 直接使用 fullnameOverride 来指定自己想要生成的 pod 名字
fullnameOverride: "mysql-store"
auth:
  rootPassword: "10yX81E4E3A="
  createDatabase: false
primary:
  # 这里是配置 mysql 配置文件的,需要开启 binlog 之类的,自己添加一下就可以了
  configuration: |-
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/hostname
            operator: In
            values:
            - 192.168.11.198

安装 mysql

store 是我这边使用的 namespace,大家需要替换成自己的

helm install -n store mysql ./ -f values.yaml --create-namespace

返回类似下面的输出,说明 yaml 没有问题

NAME: mysql
LAST DEPLOYED: Mon Jul 29 14:33:06 2024
NAMESPACE: store
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: mysql
CHART VERSION: 10.2.1
APP VERSION: 8.0.36

** Please be patient while the chart is being deployed **

Tip:

  Watch the deployment status using the command: kubectl get pods -w --namespace store

Services:

  echo Primary: mysql-store.store.svc.cluster.local:3306

Execute the following to get the administrator credentials:

  echo Username: root
  MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace store mysql-store -o jsonpath="{.data.mysql-root-password}" | base64 -d)

To connect to your database:

  1. Run a pod that you can use as a client:

      kubectl run mysql-store-client --rm --tty -i --restart='Never' --image  docker.m.daocloud.io/bitnami/mysql:8.0.36-debian-12-r12 --namespace store --env MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD --command -- bash

  2. To connect to primary service (read/write):

      mysql -h mysql-store.store.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
  - primary.resources
  - secondary.resources
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

创建 pv

因为开启了持久化,所以需要 pv 和 pvc,可以通过下面的命令来查看 pvc 对应的名字,同样的,下面的 pod 名字和 namespace 需要替换成自己的

k describe pod -n store mysql-store-0 | grep ClaimName

我这里直接使用 localpath 的类型来创建 pv,因为 pvc 已经自动创建好了

创建本地目录

mkdir -p /data/k8s-data/mysql-data
chmod 777 /data/k8s-data/mysql-data
  • storage 的大小,需要自己评估了,不要盲目的抄
  • nodeAffinity 是节点绑定的,可以抄,别全抄,你没有我的节点名称的
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: data-mysql-store-0
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 30Gi
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: data-mysql-store-0
    namespace: store
  hostPath:
    path: /data/k8s-data/mysql-data
    type: "DirectoryOrCreate"
  persistentVolumeReclaimPolicy: Retain
  nodeAffinity:
    required:
      nodeSelectorTerms:
        - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
                - 192.168.11.198

apply yaml 文件,查看 pvc 是否处于 Bound 状态

k get pvc -n store | grep mysql

获取到的是 Bound 状态就没问题了

mysql-store-0   Bound    mysql-store-0   30Gi       RWO                           63s

验证 mysql 版本

进入 mysql 容器

k exec -it -n store mysql-store-0 bash

登录 mysql(helm install 的时候有输出这个命令,拿来直接用就行)

mysql -h mysql-store.store.svc.cluster.local -uroot -p"$MYSQL_ROOT_PASSWORD"

执行下面的 sql 查看 mysql 版本

SELECT version();

可以看到,mysql 的版本是 8.0.36

+-----------+
| version() |
+-----------+
| 8.0.36    |
+-----------+
1 row in set (0.00 sec)

创建 mysql 备份 job

创建 mysql 备份用户

  • 先说一下用户权限问题,我只是起了一个测试使用的,这里只包含了下面两个权限
    • SELECT查询权限是肯定要有的,mysqldump 是将查询到的内容转换成 sql 语句
    • LOCK TABLES锁表备份需要有该权限,如果有 --single-transaction 参数不锁表备份,可以不赋予该权限
-- 创建 backupuser 用户
CREATE USER IF NOT EXISTS 'backupuser'@'%';
-- backupuser 用户配置密码
ALTER USER 'backupuser'@'%' IDENTIFIED BY '6xOVfuAg';
-- backupuser 用户赋权
GRANT SELECT,LOCK TABLES ON *.* TO 'backupuser'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'backupuser'@'%';

用户被赋予了 SELECTLOCK TABLES 的权限

+------------------------------------------------------+
| Grants for backupuser@%                              |
+------------------------------------------------------+
| GRANT SELECT, LOCK TABLES ON *.* TO `backupuser`@`%` |
+------------------------------------------------------+
1 row in set (0.00 sec)

使用备份用户登录,验证用户名密码

mysql -h mysql-store.store.svc.cluster.local -ubackupuser -p6xOVfuAg

创建备份目录持久化

同样使用 hostpath 的方式存储

mkdir -p /data/k8s-data/mysql-back
chmod 777 /data/k8s-data/mysql-back

创建 job

---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: mysql-backup
  namespace: store
spec:
  schedule: "0 17 * * *"
  successfulJobsHistoryLimit: 1
  failedJobsHistoryLimit: 2
  jobTemplate:
    spec:
      template:
        spec:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: mysql-back
                    operator: Exists
          containers:
          - name: mysql-backup
            imagePullPolicy: IfNotPresent
            image: docker.io/bitnami/mysql:8.0.36-debian-12-r12
            env:
              - name: MYSQL_HOST
                value: mysql-store.store.svc.cluster.local
              - name: TZ
                value: Asia/Shanghai
              - name: LANG
                value: en_US.UTF-8
            command:
            - /bin/sh
            - -c
            - |
              set -ex
              mysqldump --host=${MYSQL_HOST} --user=backupuser \
                        --password=6xOVfuAg \
                        --all-databases --quick \
                        > /mysql-backup/mysql-$(date +"%Y%m%dT%H_%M_%S").sql && find /mysql-backup/ -type f -mtime +3 -exec rm -rf {} \;
            volumeMounts:
            - name: mysql-backup
              mountPath: /mysql-backup
          restartPolicy: OnFailure
          volumes:
          - name: mysql-backup
            hostPath:
              path: /data/k8s-data/mysql-back
              type: DirectoryOrCreate

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

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

相关文章

MySQL 执行计划详解

文章目录 一. 概念二. 语法三. 详解各字段1. id2. select_type3. table4. partitions5. type6. possible_keys与key7. key_len8. ref9. rows10. filtered11. Extra 一. 概念 有了慢查询后,需要对慢查询语句进行分析。一条查询语句经过MySQL查询优化器后&#xff0c…

最全国内13家DNS分享 解决网页被恶意跳转或无法打开问题

腾讯 DNS (DNSPod) 腾讯 DNS 是由 DNSPod 提供的公共免费 DNS 服务。DNSPod 已被腾讯收购,现在属于腾讯公司所有。该 DNS 服务稳定性和连通性良好,经测试在海外也可以使用。 DNSPod 提供了 IPv4、IPv6 DNS 和 DoT/DoH 服务。 IPv4 地址: 119.29.29.29…

fastapi教程(五):中间件

一,什么是中间件 中间件是一种软件组件,它在请求到达应用程序处理程序之前和/或响应发送回客户端之前执行操作。 请求从客户端发出。 请求首先经过Middleware 1。 然后经过Middleware 2。 请求到达FastAPI路由处理器。 响应从路由处理器返回。 响应经过…

精品PPT | 云原生大数据平台构建及落地实践.pptx

1、监控和可观测性的关系及渊源 2、当前阶段落地可观测性的挑战在哪里 3、落地好一个可观测系统的三大要素 4、面向故障处理过程的可观测性体系建设案例 5、思考:人工智能2.0对可观测性技术和产品演进的影响

鸿蒙开发—黑马云音乐之Music页面

目录 1.外层容器效果 2.信息区-发光效果 3.信息区-内容布局 4.播放列表布局 5.播放列表动态化 6.模拟器运行并配置权限 效果: 1.外层容器效果 Entry Component export struct MuiscPage {build() {Column() {// 信息区域Column() {}.width(100%)// .backgroun…

环形链表 II - 力扣(LeetCode)C语言

142. 环形链表 II - 力扣(LeetCode) (点击前方链接即可查看题目) 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达…

制造企业选型MES管理系统时需要关注的地方

在当今制造业全面拥抱数字化转型的浪潮中,MES管理系统解决方案的角色日益凸显,成为提升生产效率、优化资源配置的关键工具。对于制造企业而言,选择一款合适的MES管理系统不仅关乎当前的生产管理需求,更直接影响到企业未来的竞争力…

【React】详解classnames工具:优化类名控制的全面指南

文章目录 一、classnames的基本用法1. 什么是classnames?2. 安装classnames3. 导入classnames4. classnames的基本示例 二、classnames的高级用法1. 动态类名2. 传递数组3. 结合字符串和对象4. 结合数组和对象 三、实际应用案例1. 根据状态切换类名2. 条件渲染和类名…

【权威发布】第二届机械电子工程与软件工程国际会议(MEESE 2024)

第二届机械电子工程与软件工程国际会议 2024 International Conference on Mechanical and Electronic Engineering and Software Engineering 【1】会议简介 第二届机械电子工程与软件工程国际会议是一个专注于机械电子工程与软件工程领域交叉融合的国际盛会。会议旨在汇聚全球…

Vue3可媲美Element Plus Tree组件研发之重命名节点

在上一节《移除节点》基础上继续迭代JuanTree的功能,我们将实现节点重命名的功能。 实现效果: 可以对现有节点进行编辑,点回车或失去焦点完成编辑,如果输入为空,会恢复为原来的值。同时支持对新增的节点自动启用编辑功…

花几千上万学习Java,真没必要!(三十四)

1、泛型类&#xff1a; 测试代码&#xff1a; 创建一个Box类; package settest.com; public class Box<T> { // T stands for "Type" - T是一个占位符&#xff0c;用于表示具体的类型 // 类的内部可以使用T作为类型声明变量 private T t; // 构造方法&am…

ROS中使用rqt_plot快速实现数据可视化

对数据进行可视化有很多好处&#xff0c;比如可以帮助我们快速判断机器人运动轨迹是否平滑。 一般来说&#xff0c;我们会将数据保存为文件&#xff0c;然后进行绘图&#xff0c;但是在ROS中&#xff0c;有一个很好用的工具&#xff0c;叫rqt_plot&#xff0c;用它可以快速实现…

力扣高频SQL 50题(基础版)第二十四题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十四题1729.求关注者的数量题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第二十四题 1729.求关注者的数量 题目说明 表&#xff1a; Followers ----------------…

Maven已经导入Junit包,但是还是无法使用注解

Maven已经导入Junit包&#xff0c;但是还是无法使用注解 背景&#xff1a; 导入了Junit的依赖 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></d…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十五章 Linux I2C驱动实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Qt编写自定义控件:跑马灯文本控件

#ifndef RUNNINGTEXTWIDGET_H #define RUNNINGTEXTWIDGET_H#include <QWidget>enum Direction {North 0, //上South, //下West, //左East //右 };class RunningTextWidget : public QWidget {Q_OBJECT public:explicit RunningTextWidget(QWidget *parent nullptr);…

第二期:集成电路(IC)——智能世界的微观建筑大师

嘿&#xff0c;小伙伴们&#xff01;&#x1f44b; 我是你们的老朋友小竹笋&#xff0c;一名热爱创作和技术的工程师。上一期我们聊了聊AI芯片&#xff0c;这次我们要深入到更微观的层面&#xff0c;来探究集成电路&#xff08;IC&#xff09;的世界。准备好一起探索了吗&#…

50+受高度近视屈光参差与白内障阻碍,巫雷院长一场手术“均衡”双眼

周女士双眼近视度数一直差异很大&#xff0c;这么多年从未看清。“这次”是因为发现视力逐渐下降检查得知并发性白内障&#xff0c;以屈光性白内障手术得以一次性治疗多个问题。 周女士小时候就近视了&#xff0c;那时家里不重视&#xff0c;且自己觉得戴眼镜“不好”&#xf…