文章目录
- 前言:
- 一、构建mariadb的dockerfile
- 二、docker build打包并上传到harbor仓库
- 三、编写yaml文件
- 四、使用kubectl apply部署到K8s
- 总结
前言:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。
一、构建mariadb的dockerfile
[root@master mysql]# vim Dockerfile
FROM mariadb:latest
ENV MYSQL_ROOT_PASSWORD 123456 ###设置数据库的root的密码
ENV LANG zh_CN.UTF-8 ### 设置zh_CN.UTF-8
二、docker build打包并上传到harbor仓库
[root@master mysql]#
docker build -t xxx.xxx.com:10443/library/mariadb:latest . ###打镜像设置标签
docker push xxx.xxx.com:10443/library/mariadb:latest ### 推送镜像
如果就是在本机上装可以不用推送到镜像仓库
三、编写yaml文件
[root@master mysql]# vim mariadb.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: mariadb-pvcnamespace: jdxc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 20Gi
---
apiVersion: v1
kind: Service
metadata:name: mariadbnamespace: jdxc
spec:ports:- nodePort: 3306 ###如果本地有多个数据库可以改变暴露的端口号port: 3306protocol: TCPtargetPort: 3306selector:app: mariadbtype: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: mariadbnamespace: jdxc
spec:serviceName: mariadbreplicas: 1selector:matchLabels:app: mariadbtemplate:metadata:labels:app: mariadbspec:nodeSelector: ###这个节点调度可以设置为你自己打的标签也可以删不进行调度name: "master"containers:- name: mariadbimage: xxx.xxx.com:10443/library/mariadb:latest ###设置你本地的镜像名就可以imagePullPolicy: Always ###如果设置为本地镜像的话就不用设置拉取设置为 Neverports:- containerPort: 3306protocol: TCPvolumeMounts:- mountPath: /var/lib/mysqlname: dataimagePullSecrets: ###如果你是本地的镜像的话就可以不用设置镜像拉去密钥的参数,直接删除- name: registry-pull-secret ###密钥参数volumes:- name: datapersistentVolumeClaim:claimName: mariadb-pvc
ps:imagePullSecret资源将Secret提供的密码传递给kubelet从而在拉取镜像前完成必要的认证过程,简单说就是你的镜像仓库是私有的,每次拉取是需要认证的。
PS:这里面使用ceph-rbd作为默认starageclass,如何配置storageclass请查看前面的文章
四、使用kubectl apply部署到K8s
kubectl apply -f mariadb.yaml
这样就是运行正常搭建结束
总结
mariadb快速搭建,操作前一定要有StorageClass根据PVC动态生成PV并绑定,这样数据库生成的数据可以挂载出来