内蒙古住房与建设官方网站郑州优化公司有哪些
k8s部署mysql并使用nfs持久化数据
- 一、配置nfs服务器
- 1.1 修改配置文件
- 1.2. 载入配置
- 1.3. 检查服务配置
- 二、创建K8S资源文件
- 2.1 mysql-deployment.yml
- 2.2 mysql-svc.yml
一、配置nfs服务器
参考文章:
- pod使用示例https://cloud.tencent.com/developer/article/1914388
- nfs配置示例https://blog.csdn.net/weixin_43466725/article/details/88252404
- nfs介绍https://blog.csdn.net/qq_41959899/article/details/105899689
1.1 修改配置文件
连接nfs服务器,vim /etc/exports
修改exports文件内容:
说明:
/data/monitor-test/tracing/mysql_data
目录是用来作为数据持久化
的目录
每一条数据对应的ip是k8s的节点IP(node),把k8s的所有node都配置上去
1.2. 载入配置
执行命令exportfs -rv
载入配置
1.3. 检查服务配置
执行命令showmount -e
查看是否添加成功:
二、创建K8S资源文件
2.1 mysql-deployment.yml
创建mysql-deployment.yml
文件:
apiVersion: apps/v1 # apiserver的版本
kind: Deployment # 副本控制器deployment,管理pod和RS
metadata:name: mysql-nfs # deployment的名称,全局唯一namespace: kube-monitor # 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的Selectorspec:nodeName: 192.168.1xx.1xx # 指定pod运行在的nodecontainers: # Pod里容器的定义部分- name: mysql # 容器的名称image: 192.168.116.12x:18080/monitor-test/mysql:5.7.42 # 容器对应的docker镜像volumeMounts: # 容器内挂载点的定义部分- name: time-zone # 容器内挂载点名称mountPath: /etc/localtime # 容器内挂载点路径,可以是文件或目录- name: nfs-mysql-datamountPath: /var/lib/mysql # 容器内mysql的数据目录- name: nfs-mysql-logsmountPath: /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: nfs-mysql-datanfs:server: 192.168.116.1xx # nfs服务器地址path: /data/monitor-test/tracing/mysql_data/data # nfs存放mysql数据的目录- name: nfs-mysql-logsnfs:server: 192.168.116.1xxpath: /data/monitor-test/tracing/mysql_data/logs # nfs存入mysql日志的目录
执行命令创建deployment:kubectl apply -f mysql-deployment.yml
2.2 mysql-svc.yml
创建mysql-svc.yaml文件:
apiVersion: v1
kind: Service
metadata:name: mysql-nfsnamespace: kube-monitorlabels:name: mysql
spec:type: NodePortports:- port: 3306targetPort: 3306nodePort: 30014selector:app: mysql
执行命令创建svc:kubectl apply -f mysql-svc.yml