Akemi

使用Mongodb-Kubernetes-Operator部署mongodb集群

2024/12/08

MongoDB可以通过Mongodb-Kubernetes-Operator控制器,它本质上是一种CRD,同时是MongoDB官方主推的一种部署方式
文档地址:https://github.com/mongodb/mongodb-kubernetes-operator/blob/master/README.md

用kubectl部署MongoDB Operator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
git clone https://github.com/mongodb/mongodb-kubernetes-operator.git

cd /root/mongodb-kubernetes-operator/config/manager
manager.yaml
这是个deploy,containers下环境变量env,WATCH_NAMESPACE指定了部署的ns
默认引用了Configmap的配置,所以不需要在这里修改

在rbac中修改制定ns
deploy/clusterwide/cluster_role_binding.yaml
在subject字段后加入ns
kubectl apply -f deploy/clusterwide

kubectl apply -k config/rbac --namespace mongodb

创建CRD
kubectl apply -f config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml
kubectl get crd/mongodbcommunity.mongodbcommunity.mongodb.com
NAME CREATED AT
mongodbcommunity.mongodbcommunity.mongodb.com 2024-12-08T13:07:18Z

创建rbac
kubectl apply -k config/rbac/ --namespace mongodb

部署Operator
kubectl create -f config/manager/manager.yaml --namespace mongodb
kubectl get pods -n mongodb -w
NAME READY STATUS RESTARTS AGE
mongodb-kubernetes-operator-67856f5b88-t6pl2 1/1 Running 0 17s

使用helm部署MongoDB-Operator

相比之下helm真的简单的一批,helm是真好用

1
2
3
4
5
6
7
8
9
helm repo add mongodb  https://mongodb.github.io/helm-charts
helm install community-operator mongodb/community-operator -n mongodb

helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
community-operator default 1 2024-12-08 20:22:17.626983302 +0800 CST deployed community-operator-0.11.0 0.11.0

kubectl get pods | grep mongo
mongodb-kubernetes-operator-68df589cdb-mflkv 1/1 Running 0 95s

使用MongoDB-Operator测试部署

1
2
3
4
5
6
7
8
9
10
11
12
kubectl apply -f config/samples/mongodb.com_v1_mongodbcommunity_cr.yaml \
--namespace mongodb

kubectl get pods -n mongodb
NAME READY STATUS RESTARTS AGE
example-mongodb-0 0/2 Pending 0 16m
mongodb-kubernetes-operator-67856f5b88-t6pl2 1/1 Running 0 32m

kubectl get statefulsets.apps -n mongodb
NAME READY AGE
example-mongodb 0/3 16m
example-mongodb-arb 0/0 16m

可以看到已经创建出来了,但是没有running主要是因为pv和pvc的问题,说明这个Operator没问题就行

等正儿八经要学的时候再来搞

CATALOG
  1. 1. 用kubectl部署MongoDB Operator
  2. 2. 使用helm部署MongoDB-Operator
  3. 3. 使用MongoDB-Operator测试部署