当前位置: 首页 > news >正文

k8s-statefulset部署myql-Nodeport方式

目录

1、部署openebs(Elastic Block Store)

1.下载镜像(针对k8s1.19)

2.加载镜像(所有节点包括master)

3.下载yaml文件并部署

 4.设置默认storageclass

2、编写相关yaml文件

1.编写secret

2.编写statefulset文件

3.编写service文件

 3、修改数据库配置

1.远程连接问题

2.测试连接

3.问题


1、部署openebs(Elastic Block Store)

1.下载镜像(针对k8s1.19)

链接:https://pan.baidu.com/s/1bKtBKwDkULWfxw_ulKqR3A?pwd=8888 
提取码:8888 

2.加载镜像(所有节点包括master)

[root@k8s01 ~]#  for i in 192.168.248.{20..22}; do ssh root@${i} "docker load -i openebs.tar"; done

3.下载yaml文件并部署

链接:https://pan.baidu.com/s/11P2a4890xTWqbe3nFPGyKA?pwd=8888 
提取码:8888 

[root@k8s01 ~]# k apply -f openebs-operator.yaml
[root@k8s01 ~]# k get pods -A | grep openebs
openebs         openebs-localpv-provisioner-6994cf5dd9-d57xg    1/1     Running     1          2d13h
openebs         openebs-ndm-2b2tl                               1/1     Running     0          2d13h
openebs         openebs-ndm-bxlw8                               1/1     Running     0          2d13h
openebs         openebs-ndm-cluster-exporter-84bb5fc764-dzpdz   1/1     Running     0          2d13h
openebs         openebs-ndm-node-exporter-2f8dg                 1/1     Running     0          2d13h
openebs         openebs-ndm-node-exporter-wpzt2                 1/1     Running     0          2d13h
openebs         openebs-ndm-operator-5f8578c994-pt4pq           1/1     Running     0          2d13h

 4.设置默认storageclass

kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
#此格式只能用json

2、编写相关yaml文件

1.编写secret

[root@k8s01 ~]# echo -n "huafeirenmo" | base64
aHVhZmVpcmVubW8=[root@k8s01 ~]# vim secret_mysql.yaml
apiVersion: v1
kind: Secret
metadata:name: mysql-passwordnamespace: default
data:password: "aHVhZmVpcmVubW8="
[root@k8s01 ~]# k apply -f secret_mysql.yaml

2.编写statefulset文件

[root@k8s01 ~]# vim statefulset_mysql_opaque_passwd.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: mysqlname: mysql
spec:replicas: 3selector:matchLabels:app: mysqlserviceName: mysqltemplate:metadata:labels:app: mysqlspec:containers:- image: mysql:latestname: mysqlports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORDvalueFrom:secretKeyRef:    #使用secret方式name: mysql-passwordkey: passwordvolumeMounts:- name: mysql-datamountPath: /var/lib/mysqlvolumeClaimTemplates:- metadata:name: mysql-dataspec:accessModes: [ "ReadWriteOnce" ]storageClassName:  openebs-hostpathresources:requests:storage: 1Gi
[root@k8s01 ~]# k apply -f statefulset_mysql_opaque_passwd.yaml

3.编写service文件

[root@k8s01 ~]# vim service_mysql.yaml
apiVersion: v1
kind: Service
metadata:name: mysql-service
spec:selector:app: mysqlports:- protocol: TCPport: 3306targetPort: 3306nodePort: 30007type: NodePort
[root@k8s01 ~]# k apply -f service_mysql.yaml

 3、修改数据库配置

1.远程连接问题

        MySQL 8.0 引入了一些更加严格的安全策略,其中包括不允许创建一个新的 'root'@'%' 用户。这是出于安全考虑的限制,因为允许从任何 IP 地址使用 'root' 用户连接到数据库是不安全的。

        在 MySQL 8.0 中创建一个具有管理权限的用户,可以创建一个具有 GRANT OPTION 权限的普通用户,然后使用该用户进行授权操作。以下是示例步骤:

[root@k8s01 ~]# k get pods    #获取pod名称
NAME                                READY   STATUS    RESTARTS   AGE
mysql-0                             1/1     Running   0          5h4m
mysql-1                             1/1     Running   0          5h3m
mysql-2                             1/1     Running   0          5h3m
[root@k8s01 ~]# k exec -it mysql-0 -- /bin/bash #登录进pod
root@mysql-0:/# mysql -uroot -phuafeirenmo
  1. 以 root 用户登录到 MySQL

    使用 root 用户(或具有管理员权限的用户)登录到 MySQL 服务器:

    mysql -u root -p

  2. 创建新的普通用户

    创建一个新的普通用户,例如 myadmin,并设置密码。替换 <password> 为您想要设置的密码:

    CREATE USER 'myadmin'@'%' IDENTIFIED BY '<password>';
  3. 授予用户权限

    授予 myadmin 用户所需的权限,包括 GRANT OPTION,以便该用户能够授权其他用户。例如:

    GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%' WITH GRANT OPTION;

    上述语句将授予 myadmin 用户对所有数据库的所有权限,并允许他授权其他用户。

  4. 刷新权限

    刷新 MySQL 的权限以使更改生效:

    FLUSH PRIVILEGES;

2.测试连接

[root@k8s01 ~]# mysql -h 192.168.248.20 -P 30007 -umyadmin -phuafeiremmo

3.问题

        在部署一个具有多个 MySQL StatefulSet 副本的情况下,每个副本将拥有自己独立的数据卷(Persistent Volume),这些数据卷通常由独立的 Persistent Volume Claim (PVC) 绑定。

        每个 StatefulSet 副本都会启动一个独立的 MySQL 实例,这些实例的数据在各自的数据卷上进行存储,因此默认情况下,它们的数据是相互隔离的,不会共享数据。

        如果想要在这些 MySQL 实例之间共享数据,您需要使用 MySQL 数据库复制或者 MySQL 数据库集群技术

相关文章:

k8s-statefulset部署myql-Nodeport方式

目录 1、部署openebs&#xff08;Elastic Block Store&#xff09; 1.下载镜像&#xff08;针对k8s1.19&#xff09; 2.加载镜像&#xff08;所有节点包括master&#xff09; 3.下载yaml文件并部署 4.设置默认storageclass 2、编写相关yaml文件 1.编写secret 2.编写state…...

MySQL双主架构、主从架构

为什么要对数据库做优化&#xff1f; MySQL官方说法&#xff1a; 单表2000万数据就达到瓶颈了。所以为了保证查询效率&#xff0c;要让每张表的大小得到控制。 MySQL主主架构 主数据库都负责增删改查。 比如有1000W的数据&#xff0c;有两个主数据库&#xff0c;就将数据分流给…...

基于微信小程序的物流管理系统3txar

在此基础上&#xff0c;结合现有物流管理体系的特点&#xff0c;运用新技术&#xff0c;构建了以 springboot为基础的物流信息化管理体系。首先&#xff0c;以需求为依据&#xff0c;对目前传统物流管理基础业务进行了较为详尽的了解和分析。根据需求分析结果进行了系统的设计&…...

Maven 一键部署到 SSH 服务器

简介 利用 Maven Mojo 功能一键部署 jar 包或 war 包到远程服务器上。 配置 在 maven 的setting.xml 配置服务器 SSH 账号密码。虽然可以在工程的 pom.xml 直接配置&#xff0c;但那样不太安全。 <servers><server><id>iq</id><configuration&…...

docker搭建owncloud,Harbor,构建镜像

1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 拉取镜像 docker pull owncloud docker pull mysql:5.6 2、安装搭建私有仓库 Harbor 1.下载docker-compose 2.安装harbor 3.编辑 harbor.yml文件 使用./intall.sh安装 4.登录 3、编写Dockerfile制作Web应用系…...

RISC-V(1)——RISC-V是什么,有什么用

目录 1. RISC-V是什么 2. RISC-V指令集 3. RISC-V特权架构 4. RiscV的寄存器描述 5. 指令 5.1 算数运算—add/sub/addi/mul/div/rem 5.2 逻辑运算—and/andi/or/ori/xor/xori 5.3 位移运算—sll/slli/srl/srli/sra/srai 5.4 数据传输—lb/lh/lw/lbu/lhu/lwu/sb/sh/sw …...

基于黄金正弦算法优化的BP神经网络(预测应用) - 附代码

基于黄金正弦算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于黄金正弦算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.黄金正弦优化BP神经网络2.1 BP神经网络参数设置2.2 黄金正弦算法应用 4.测试结果&#xff1a;5…...

Python标准库概览

Python标准库概览 知识点 标准库: turtle库(必选)标准库: random库(必选)、time库(可选&#xff09; 知识导图 1、turtle库概述 turtle&#xff08;海龟&#xff09;是Python重要的标准库之一&#xff0c;它能够进行基本的图形绘制。turtle库绘制图形有一个基本框架&#x…...

两个列表的最小索引总和

题目&#xff1a; 假设 Andy 和 Doris 想在晚餐时选择一家餐厅&#xff0c;并且他们都有一个表示最喜爱餐厅的列表&#xff0c;每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个&#xff0c;则输出所有答案并且不考虑顺…...

Go语言基础之切片

切片 切片&#xff08;Slice&#xff09;是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活&#xff0c;支持自动扩容。 切片是一个引用类型&#xff0c;它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合 切片的定义…...

关于java三元组的问题

在改代码的时候&#xff0c;发现一个奇怪的地方&#xff0c;举例如下 Testpublic void buildTest(){TT t new TT();Long time tnull?System.currentTimeMillis():t.getTime();System.out.println("done");}Datapublic static class TT{Long time;}这个地方运行就…...

如何正确地设置Outlook SMTP发送电子邮件(wordpress配置)

如何正确地设置Outlook SMTP发送电子邮件&#xff08;wordpress配置&#xff09; 作者&#xff1a;虚坏叔叔 博客&#xff1a;https://pay.xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 正在寻找正确的Outlook SMTP设置&#xff1f…...

机器学习编译系列---张量程序抽象

机器学习编译系列---张量程序抽象 1. 张量函数概念的引入与抽象的必要性 1. 张量函数概念的引入与抽象的必要性 在文章机器学习编译系列—概述中提到&#xff0c;机器学习编译的一个很重要操作是做等价变换来减少内存或者提高运行效率。变换是以“元张量函数”(private tensor …...

python使用matplotlib实现折线图的绘制

一、意义 数据可视化可以以简洁的方式呈现出数据&#xff0c;发现众多数据中隐藏的规律和意义。Matplotlib是一个数学绘图库。利用它可以制作简单的图表&#xff08;散点图、折线图&#xff09;。然后&#xff0c;将基于漫步概念生成一个更有趣的数据集–根据一系列随机决策生成…...

网络协议的定义、组成和重要性?

什么是网络协议&#xff1f; 网络协议是在计算机网络中&#xff0c;用于规定通信实体之间进行数据传输和通信的规则集合。网络协议涵盖了各种通信细节&#xff0c;包括数据包格式、错误处理、数据传输速率等&#xff0c;是用于分组交换数据网络的一种协议&#xff0c;其任务仅…...

vue 使用print.js打印小票

官网&#xff1a;https://printjs.crabbly.com/ // 安装 npm install print-js --save// 引入 import printJS from print-js// 使用 printJS({printable: https://hwke.tbbug.com/images/phone/1899ed9346f64020ff4f9bbae6983952.jpg,type: image,imageStyle: width:100%;ma…...

算法通关村第6关【白银】| 树的层次遍历问题

一、基本层次遍历问题 1.二叉树的层次遍历 思路&#xff1a;使用队列可以很好的保存遍历状态&#xff0c;出队将结点左右子结点入队&#xff0c;用size记录下一层的元素个数&#xff0c;这样就能区分出层了 class Solution {public List<List<Integer>> levelOr…...

Qt与电脑管家3

1.ui页面设计技巧 最外面的widget&#xff1a; 上下左右的margin都置相同的值 这里有4个widget&#xff0c;做好一个后&#xff0c;后面3个可以直接复制.ui文件&#xff0c;然后进行微调即可。 2.现阶段实现的效果&#xff1a; 3.程序结构&#xff1a; btn1--->btn btn1---…...

Jmeter 快速生成测试报告

我们使用Jmeter工具进行接口测试或性能测试后一般是通过察看结果数、聚合报告等监听器来查看响应结果。如果要跟领导汇报测试结果&#xff0c;无法直接通过监听器的结果来进行展示和汇报&#xff0c;因为太low了&#xff0c;因此测试完成后去整理一个数据齐全且美观的报告是非常…...

消息队列——RabbitMQ(一)

MQ的相关概念 什么事mq MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在互联网架构中&#xff…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...