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

k8s下部署mysql(nfs存储,配置文件采用ConfigMap的方式)

环境:
Os:Centos 7
mysql:5.7

############################nfs配置################################
1.安装nfs
yum install -y nfs-utils rpcbind

 

2.创建mysql相应目录
mkdir -p /data/nfs/mysql/data
mkdir -p /data/nfs/mysql/mysqllog/binlog
mkdir -p /data/nfs/mysql/mysqllog/logfile
mkdir -p /data/nfs/mysql/mysqllog/relaylog
mkdir -p /data/nfs/mysql/mysql-files

 

3.授权权限
chmod -R 755 /data/nfs/mysql/data
chmod -R 755 /data/nfs/mysql/mysqllog
chmod -R 755 /data/nfs/mysql/mysql-files
chown -R 999:999 /data/nfs/mysql


4.配置 NFS 共享
echo "/data/nfs/mysql *(rw,sync,no_root_squash,no_all_squash)" >> /etc/exports

 

5.启动服务
systemctl enable rpcbind nfs-server
systemctl restart rpcbind
systemctl restart nfs-server

 

6.验证
showmount -e localhost

 

###################################k8s部署#############################

1.打标签
k8s master节点上执行
kubectl get nodes
kubectl label nodes test-k8s-192.168.1.162 mysql=allowed
kubectl get nodes --show-labels

 

2.各组件yaml文件
cd /root/hxl/mysql_single
1-namespace.yaml

apiVersion: v1
kind: Namespace
metadata:name: mysql

 

2-configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:name: cm-mysql-confignamespace: mysql
data:my.cnf: |[mysqld]datadir=/var/lib/mysqlsocket=/var/run/mysqld/mysqld.sockdefault-storage-engine=INNODBmax_connections=1000init_connect='SET collation_connection = utf8mb4_general_ci'init_connect='SET NAMES utf8mb4'interactive_timeout=86400wait_timeout=86400max_connections = 5000character-set-server=utf8mb4collation-server=utf8mb4_general_ciskip-character-set-client-handshakeskip-name-resolveserver_id=1replicate-ignore-db=mysqlreplicate-ignore-db=sysreplicate-ignore-db=information_schemareplicate-ignore-db=performance_schemagtid_mode=ONenforce_gtid_consistency = ONlower_case_table_names=1sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'# binloglog_bin=/var/log/mysql/binlog/mysql-binbinlog_format=ROWexpire_logs_days=7sync_binlog=1# slow queryslow_query_log=1slow_query_log_file=/var/log/mysql/logfile/slow-query.loglong_query_time=2##relay-logrelay-log-index=/var/log/mysql/relaylog/slave-relay-bin.indexrelay-log=/var/log/mysql/relaylog/relaylog-binloglog-error=/var/log/mysql/logfile/mysql-err.logsecure_file_priv=/var/lib/mysql-files

 

3-pv.yaml

apiVersion: v1
kind: PersistentVolume
metadata:name: pv-mysql
spec:capacity:storage: 5GiaccessModes:- ReadWriteOncenfs:server: 192.168.1.134path: /data/nfs/mysqlpersistentVolumeReclaimPolicy: Retain

 

4-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pvc-mysqlnamespace: mysql
spec:accessModes:- ReadWriteOnceresources:requests:storage: 5GivolumeName: pv-mysqlstorageClassName: ""

 

5-headless.yaml

apiVersion: v1
kind: Service
metadata:name: mysql-headlessnamespace: mysql
spec:clusterIP: Noneports:- port: 3306targetPort: 3306name: redisselector:app: mysql

 

6-statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:name: mysqlnamespace: mysql
spec:serviceName: mysql-headlessreplicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:nodeSelector:mysql: allowedcontainers:- name: mysqlimage: registry.cn-shenzhen.aliyuncs.com/hxlk8s/mysql:5.7.30ports:- containerPort: 3306env:- name: MYSQL_ROOT_PASSWORDvalue: "123456"- name: TZvalue: Asia/ShanghaivolumeMounts:- name: mysql-datamountPath: /var/lib/mysqlsubPath: data- name: mysql-datamountPath: /var/log/mysqlsubPath: mysqllog- name: mysql-datamountPath: /var/lib/mysql-filessubPath: mysql-files# 挂载 ConfigMap 配置文件- name: mysql-configmountPath: /etc/mysql/my.cnfsubPath: my.cnfvolumes:- name: mysql-datapersistentVolumeClaim:claimName: pvc-mysql- name: mysql-configconfigMap:name: cm-mysql-config

 

7-nodeport.yaml

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

 

3.部署
cd /root/hxl/mysql_single
kubectl apply -f 1-namespace.yaml
kubectl apply -f 2-configmap.yaml
kubectl apply -f 3-pv.yaml
kubectl apply -f 4-pvc.yaml
kubectl apply -f 5-headless.yaml
kubectl apply -f 6-statefulset.yaml
kubectl apply -f 7-nodeport.yaml

kubectl get pods -n mysql
kubectl logs mysql-0 -n mysql
kubectl describe pods mysql-0 -n mysql

 

4.查看svc

[root@yunwei-k8s-master1-test mysql_single]# kubectl get svc -n mysql
NAME             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
mysql            NodePort    10.17.183.227   <none>        3306:30006/TCP   75s
mysql-headless   ClusterIP   None            <none>        3306/TCP         32m

 

5.k8s外连接
/opt/mysql57/bin/mysql -h 192.168.1.162 -p123456 -P30006

 

6.登录pod
kubectl exec -it mysql-0 -n mysql -- bash
root@mysql-0:/# hostname -f
mysql-0.mysql-headless.mysql.svc.cluster.local
root@mysql-0:/# hostname -i
10.10.10.70

 

http://www.jsqmd.com/news/633690/

相关文章:

  • 雷达原理笔记1
  • 从焊带剥离测试看上海宇涵机械卧式电池片拉力试验机的应用优势 - 品牌推荐大师1
  • 在Mac M3上本地运行Qwen2.5-7B:显存优化与量化实操
  • 用Python和NumPy手把手教你理解导数:从瞬时速度到反向传播的数学基石
  • FastAPI实战:从零构建高性能RESTful API
  • GoB插件:跨平台数据同步机制与实时渲染管线集成
  • 2026年必备|Essay AI率80%怎么破?亲测4招降AI,附免费Turnitin报告 - 降AI实验室
  • 亲测8款AI论文生成器,让你的毕业论文写作不再焦虑 - 逢君学术-AI论文写作
  • 从赌场到超级计算机:蒙特卡洛模拟的演进与核心方法剖析
  • 如何在30分钟内用ESP32打造你的第一个边缘AI项目:终极入门指南
  • 84、简历表格里面插入右上角的图片,然后整个格式全变形
  • 性价比高的锁具技工备案正规培训基地大盘点,哪家值得选 - 工业设备
  • 颠覆传统:3步零模拟器方案让Windows直装安卓应用
  • Flask vs Spring Boot + Vue 对比与核心流程
  • CrewAI多Agent协作实战:构建自动化AI工作流
  • League Akari:基于LCU API的3大英雄联盟客户端增强方案
  • 漫谈江澄实验室科技(无锡),市场影响力、服务质量与员工满意度如何 - 工业品网
  • 探讨靠谱的锁具技工正规备案培训服务,怎么选择心中有数 - 工业品牌热点
  • 终极指南:如何用Universal x86 Tuning Utility免费释放AMD/Intel硬件全部性能
  • 别再只用Set5了!超分辨率炼丹师必知的7个数据集(含DIV2K、Urban100)下载与使用避坑指南
  • 北京海斯居科技有限公司:丰台区甲醛治理公司 - LYL仔仔
  • ccmusic-database在中小音乐厂牌的应用:低成本流派标注替代人工方案
  • 天猫超市购物卡回收,这样做更划算! - 团团收购物卡回收
  • YOLC:基于高分辨率热图与自适应聚类的航拍小目标检测新范式
  • 探讨口碑好的专业宠物美容培训机构,选哪家比较靠谱 - 工业推荐榜
  • STM32F334双通道ADC+DMA实战:从CubeMX配置到数据采集全流程(附避坑指南)
  • FPGA矩阵转置优化:基于FIFO与ROM的高效地址映射实现
  • Element-Plus用户迁移指南:从el-tree到vxeTree的5个必知差异点(附转换工具)
  • 讲讲靠谱的DNC程序管理与传输系统供应商,怎么收费 - mypinpai
  • Neat Bookmarks:终极浏览器书签管理解决方案,告别混乱找回效率