ITPub博客

首页 > 数据库 > 国内数据库 > 使用MogDB Operator在Kubernetes上部署MogDB集群(MogDB Stack)

使用MogDB Operator在Kubernetes上部署MogDB集群(MogDB Stack)

原创 国内数据库 作者:T1YSL 时间:2022-09-01 21:25:52 0 删除 编辑

本文介绍了如何使用MogDB Operator在Kubernetes上部署MogDB集群自动运维系统,包含MogDB Operator部署,Kubernetes上的MogDB集群创建等。

一、部署MogDB Operator

1.获取Kustomize v3+

kustomize 是一种安装应用的方案, 是一个通用的工具,它的作用是对描述 Kubernetes 资源的 YAML 文件进行定制,产生新的 YAML 文件,并保持原始的 YAML 文件不变。和包管理工具 Helm不同的是,kustomize 不使用模板,而是直接工作在原始的 YAML 文件上。kustomize 的另外一个优势是集成在 kubectl 中,这就意味着不需要安装额外的工具就可以进行定制。但是,kubectl 自带的 kustomize 的版本比较低,目前仍然需要安装单独的 kustomize 工具。

image.png

安装Kustomize

curl -s "https://raw.githubusercontent.com/\
kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash

image.png

2.安装 MogDB Operator

获取压缩包

wget https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mogdb-operator-examples.tar --no-check-certificate

image.png

tar xf mogdb-operator-examples.tar

image.png

MogDB Operator安装项目在kustomize/install目录下
要安装的组件

  • mogdb-operator-controller-manager
  • mogdb-apiserver
  • mgo-client

mgo-client运行在物理机下,其余组件都运行在k8s下

kustomize build ./kustomize/install/default | kubectl apply -f -

image.png

查看namespace以及对应的pod

[root@pg01 MogDB-stack]# kubectl get ns
NAME                    STATUS   AGE
default                 Active   62d
kube-node-lease         Active   62d
kube-public             Active   62d
kube-system             Active   62d
kubernetes-dashboard    Active   62d
mogdb-operator-system   Active   2m41s
ns-test                 Active   62d
[root@pg01 MogDB-stack]# kubectl get pods -n mogdb-operator-system
NAME                                                 READY   STATUS     RESTARTS   AGE
mogdb-apiserver-74b8f54cc6-wmkdq                     1/1     Running    0          7m30s
mogdb-operator-controller-manager-8586c668fd-ghjrn   1/1     Running    0          7m30s

二、安装MogDB集群

1.安装所需csi

(不安装的话会存在挂在不上pvc的问题,pod处于pending状态)

kubectl apply -f https://raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.22/deploy/local-path-storage.yaml

image.png

2.安装集群

kubectl apply -f https://cdn-mogdb.enmotech.com/mogdb-stack/v1.0.0/mogdb-cluster.yaml

image.png

3.查看当前pod状态

[root@pg01 MogDB-stack]# kubectl get pods -n mogdb-operator-system
NAME                                                 READY   STATUS     RESTARTS   AGE
cluster1-lh2d4                                       0/3     Init:0/1   0          3m6s
mogdb-apiserver-74b8f54cc6-7qqrx                     1/1     Running    0          4m24s
mogdb-operator-controller-manager-8586c668fd-c4wpr   1/1     Running    0          4m24s
[root@pg01 MogDB-stack]# kubectl get pods -n mogdb-operator-system
NAME                                                 READY   STATUS     RESTARTS   AGE
cluster1-cjtdm                                       0/3     Init:0/1   0          2m3s
cluster1-lh2d4                                       3/3     Running    0          7m12s
mogdb-apiserver-74b8f54cc6-wmkdq                     1/1     Running    0          7m30s
mogdb-operator-controller-manager-8586c668fd-ghjrn   1/1     Running    0          7m30s

用describe 命令查看状态,进行到哪一步了,发现在拉取镜像

kubectl describe pod cluster1-lh2d4 -n mogdb-operator-system

image.png

4.最后正常的状态是这样的:

[root@pg01 MogDB-stack]# kubectl get pods -n mogdb-operator-system
NAME                                                 READY   STATUS    RESTARTS   AGE
cluster1-auto-2022-07-20t10-07-00-backup-cvdmh       1/1     Running   0          24s
cluster1-cjtdm                                       3/3     Running   0          6m52s
cluster1-lh2d4                                       3/3     Running   0          12m
mogdb-apiserver-74b8f54cc6-wmkdq                     1/1     Running   0          12m
mogdb-operator-controller-manager-8586c668fd-ghjrn   1/1     Running   0          12m

image.png

三、查看MogDB服务端口

[root@pg01 MogDB-stack]# kubectl get svc -n mogdb-operator-system
NAME                    TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
cluster1-svc-master     NodePort   10.4.97.127   <none>        5432:30013/TCP   14m
cluster1-svc-replicas   NodePort   10.11.13.40   <none>        5432:30012/TCP   14m
mogdb-apiserver         NodePort   10.7.87.91    <none>        8444:32444/TCP   14m

image.png

k8s集群内部通过5432端口,集群外部通过30013端口访问实际的MogDB集群。

四、连接集群

1.修改默认用户的密码

可以通过kubectl命令连接到容器,修改密码

[root@pg01 MogDB-stack]# kubectl get pods -n mogdb-operator-system
NAME                                                 READY   STATUS    RESTARTS            AGE
cluster1-auto-2022-07-20t10-07-00-backup-cvdmh       1/1     Running   0                   9m1s
cluster1-cjtdm                                       3/3     Running   0                   15m
cluster1-lh2d4                                       3/3     Running   0                   20m
mogdb-apiserver-74b8f54cc6-wmkdq                     1/1     Running   1 (<invalid> ago)   20m
mogdb-operator-controller-manager-8586c668fd-ghjrn   1/1     Running   0                   20m
[root@pg01 MogDB-stack]# kubectl exec -it cluster1-lh2d4 -n mogdb-operator-system  ha-sidecar -- /bin/bash
Defaulted container "sidecar" out of: sidecar, mogdb-exporter, ha-sidecar, init-og (init)
omm@cluster1-lh2d4:/$  gsql -dpostgres
gsql ((MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
MogDB=# ALTER USER mogdb WITH PASSWORD 'Enmo@123';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
ALTER ROLE
MogDB=# \q

image.png

2.本地通过容器访问

[root@pg01 MogDB-stack]# kubectl exec -it cluster1-lh2d4 -n mogdb-operator-system  ha-sidecar -- /bin/bash
Defaulted container "sidecar" out of: sidecar, mogdb-exporter, ha-sidecar, init-og (init)
omm@cluster1-lh2d4:/$ gsql -h 172.20.10.6 -d postgres -p 30013 -U mogdb -W Enmo@123
gsql ((MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
MogDB=> select version();
                                                                     version                                                                      
--------------------------------------------------------------------------------------------------------------------------------------------------
 (MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(1 row)

3.不通过容器,通过终端访问暴露的端口

在另一个服务器,远程访问该节点的Kubernetes上的MogDB数据库,我这里当前节点为172.20.10.6。远程使用的节点为172.20.10.7

[omma@pg02 ~]$ ip a| grep global | grep ens33
    inet 172.20.10.7/28 brd 172.20.10.15 scope global ens33
[omma@pg02 ~]$ gsql postgres -h 172.20.10.6 -p 30013 -U mogdb 
Password for user mogdb: 
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=> select version();
                                                                     version                                                                      
--------------------------------------------------------------------------------------------------------------------------------------------------
 (MogDB 3.0.0 build 62408a0f) compiled at 2022-06-30 14:21:11 commit 0 last mr   on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(1 row)

image.png


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69990629/viewspace-2913040/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中国开源软件推进联盟PG分会系列技术丛书《快速掌握PostgreSQL版本新特性》一书副主编。数据库技术专家。数据库认证讲师、恩墨学院数据库讲师。擅长MySQL数据库、PostgreSQL等开源数据库。拥有MySQL-OCP 、PostgreSQL-PGCM等数据库认证。

注册时间:2020-12-12

  • 博文量
    152
  • 访问量
    160710