前言:
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-pvc
namespace: jdxc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
apiVersion: v1
kind: Service
metadata:
name: mariadb
namespace: jdxc
spec:
ports:
- nodePort: 3306 ###如果本地有多个数据库可以改变暴露的端口号
port: 3306
protocol: TCP
targetPort: 3306
selector:
app: mariadb
type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mariadb
namespace: jdxc
spec:
serviceName: mariadb
replicas: 1
selector:
matchLabels:
app: mariadb
template:
metadata:
labels:
app: mariadb
spec:
nodeSelector: ###这个节点调度可以设置为你自己打的标签也可以删不进行调度
name: "master"
containers:
- name: mariadb
image: xxx.xxx.com:10443/library/mariadb:latest ###设置你本地的镜像名就可以
imagePullPolicy: Always ###如果设置为本地镜像的话就不用设置拉取设置为 Never
ports:
- containerPort: 3306
protocol: TCP
volumeMounts:
- mountPath: /var/lib/mysql
name: data
imagePullSecrets: ###如果你是本地的镜像的话就可以不用设置镜像拉去密钥的参数,直接删除
- name: registry-pull-secret ###密钥参数
volumes:
- name: data
persistentVolumeClaim:
claimName: mariadb-pvc
ps:imagePullSecret资源将Secret提供的密码传递给kubelet从而在拉取镜像前完成必要的认证过程,简单说就是你的镜像仓库是私有的,每次拉取是需要认证的。
PS:这里面使用ceph-rbd作为默认starageclass,如何配置storageclass请查看前面的文章
四、使用kubectl apply部署到K8s
kubectl apply -f mariadb.yaml
这样就是运行正常搭建结束
总结
mariadb快速搭建,操作前一定要有StorageClass根据PVC动态生成PV并绑定,这样数据库生成的数据可以挂载出来