作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们上一小节,介绍了什么是Opterator,今天我们就来介绍一个可以用于生产环境的Opterator:Mariadb-Opterator。为什么说它支持生产环境使用呢?一是我有这个产品的生产维护经验,二是Mariadb支持多主模式,天生就支持分布式。
1.准备Kubernetes集群
这里我们复用的是前面部署的3Master和3Node节点的集群,当然我提前安装了Helm,有需要可用去翻下我的历史文章。参考:Kubernetes(k8s)-生产高可用集群部署
2.安装CRD
这个CRD创建了比较多的自定义资源,可能需要想办法下载文件或者镜像。
[root@master01 ]# wget https://github.com/mariadb-operator/mariadb-operator/releases/download/mariadb-operator-crds-0.36.0/crds.yaml
[root@master01 ]# kubectl apply -f crds.yaml
customresourcedefinition.apiextensions.k8s.io/backups.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/connections.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/databases.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/grants.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/mariadbs.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/maxscales.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/restores.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/sqljobs.k8s.mariadb.com created
customresourcedefinition.apiextensions.k8s.io/users.k8s.mariadb.com created
3.安装Operator
wget https://github.com/mariadb-operator/mariadb-operator/releases/download/mariadb-operator-0.36.0/mariadb-operator-0.36.0.tgz
tar xvf mariadb-operator-0.36.0.tgz
cd mariadb-operator
helm install mariadb ./mariadb-operator -n mariadb --create-namespace

到这里,实际上我们准备工作就已经准备完成,我们下面就是定义需要创建的集群配置,集群会自动创建。他是由我们的CRD配合Opterator控制程序自动完成。
4.准备持久化存储
1.rbac
2.deploy
3.nfs客户端
4.sc创建
参考:Kubernetes(k8s)-StorageClass案例,为什么需要准备持久化存储呢,是因为作为数据库他需要持久化存储,而且这个Opterator默认也需要使用持久化存储。
注意这里有个坑,以前的版本可用改参数完成,当前版本Kubernetes v1.32.2需要更换镜像才可以。
registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2
5.创建Mariadb集群
#这里我复用2个一样的目录,你们到时候注意区分
#这里还涉及到一个没讲过的git命令,可以直接yum install git安装
git clone https://github.com/mariadb-operator/mariadb-operator
cd mariadb-operator
#这里主要是创建一个密码信息
[root@master01 mariadb-operator]# kubectl apply -f examples/manifests/config
secret/mariadb-auth created
configmap/mariadb created
secret/mariadb created
secret/maxscale created
secret/minio created
secret/minio-play created
[root@master01 mariadb-operator]#
#这里是单机版
#这里需要添加sc信息,名字和前面创建的匹配上
vi examples/manifests/mariadb.yaml
storage:
size: 1Gi
storageClassName: mariadb-sc #这行是添加的
#这里是集群版
#这里需要添加sc信息,名字和前面创建的匹配上
vi examples/manifests/mariadb_galera.yaml
storage:
size: 1Gi
storageClassName: mariadb-sc #这行是添加的
kubectl apply -f examples/manifests/mariadb.yaml
kubectl apply -f examples/manifests/mariadb_galera.yaml

当然这里还有两个问题:其中一个就是集群版需要两组PVC,其中一组会自动申请到,另外一组需要手工编辑PVC,绑定SC就可以创建成功。另外一个则是这个这个集群的服务是用的是LB类型的服务,刚好是我们前面未演示的使用metallb来搭建的,所以他的SVC的状态是异常的。由于我们这里主要讲解的opterator这个概念,所以这里也就暂时忽略。
这个也是我第一次自己完全基于开源版本搭建的,而且这个opterator,还有很多配置可以研究,搭建有兴趣可以下去学习。

运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。
1972

被折叠的 条评论
为什么被折叠?



